Académique Documents
Professionnel Documents
Culture Documents
ER y Bsquedas
Se requiere:
Patrn (qu se quiere buscar) Corpus (dnde se quiere buscar)
Se tiene una funcin de bsqueda que recorre el corpus encontrando (y devolviendo) todas las ocurrencias del patrn Las ER son tpicamente eficientes!
ER y Bsquedas
Algunos ejemplos (Python):
ER cabeza ! [vV]agn [abc] [0-9] [^A-Z] [^sS] Patrn encontrado de la cabeza al sombrero Ven para ac! en un vagn cargado de sandas solo de noche Captulo 1: Introduccin Maana va a ser un gran da Tengo permiso
ER y Bsquedas
Algunos ejemplos (Python):
ER [e^] a^b casas? pec.s /beee*!/ /bee+!/ /^.*Juan vino\../*$/ /\bel\b/ Patrn encontrado smbolo ^ significa que cuando encuentres a^b es Juan haba ido a casa de tena pecas en toda la cara La oveja hace beeeeee! La oveja hace beeeeee! Carlos cerveza. Juan vino. Jos agua. Caminaba por el camino de
>>> re.search('.*Juan vino\..*$','Carlos cerveza. Juan vino. Jos agua.').group(0) 'Carlos cerveza. Juan vino. Jos\xe9 agua.' >>>
ER y Bsquedas
Operadores avanzados
\d dgito [0-9] \w cualquier carcter alfanumrico o espacio \s [\b\t\n] y las maysculas son la negacin {n} n ocurrencias del carcter o expresin anterior {n,m} de n a m ocurrencias {n,} al menos n ocurrencias
ER y Sustituciones
Sustitucin: sustituye un patrn por otro
>>> re.sub('([0-9]+)',r'<\1>','tena el nmero 10 en la espalda') 'tena el nmero <10> en la espalda' >>>
ER y Sustituciones
Parntesis y operadores, pueden ser usados para especificar ciertas expresiones a sustituir Ejemplo:
(1) hoy (.*)ro estar aqu, maana \1ro morir - hoy quiero estar aqu, maana quiero morir NO - hoy quiero estar aqu, maana prefiero morir
(2) hoy (.*)ro estar (.*), maana \1ro morir \2 - hoy quiero estar aqu, maana quiero morir aqu NO - hoy quiero estar aqu, maana quiero morir all
Este tipo de facilidades son extensiones de las ER
Lenguajes regulares
conjunto de strings denotados por expresiones regulares definidas sobre un alfabeto Operaciones de clausura:
interseccin (L1 L2) diferencia (L1 - L2) complemento (* - L1) reverso (L1r)
Introduccin al Procesamiento de Lenguaje Natural - InCo - Facultad de Ingeniera - Universidad de la Repblica
Autmatas Finitos
Mquina de estados En particular, nos interesan desde el punto de vista del reconocimiento de Lenguajes Regulares un lenguaje regular es el conjunto de strings sobre un alfabeto reconocidos por autmatas finitos
Autmatas Finitos
Cualquier ER puede ser implementada por un AF y recprocamente
Lenguaje Regular
representa a reconoce
Expresin Regular
puede convertirse a
Autmata Finito
Autmatas Finitos
Ejemplo: el lenguaje de las ovejas
lo podemos ver como secuencias (infinitas) de tiras bee! beee! beeee! beeeee! donde, la ER asociada sera /bee+!/
Autmatas Finitos
Autmatas Finitos
Formalmente M:(Q, ,,q0,F)
Q: conjunto finito de n estados : alfabeto finito de smbolos de entrada q0: estado inicial F: conjunto de estados finales (o aceptores) FQ (qi,a)=qj funcin de transicin entre estados : Q x Q
Autmatas Finitos
Autmatas Finitos
el algoritmo anterior falla si no est definida la funcin se completa la funcin con un estado pozo
Autmatas Finitos
Como generadores de lenguajes Definicin: un Lenguaje Formal es el conjunto de strings sobre un alfabeto finito , para el cual existe un modelo M (que puede ser un AF) Lenguaje Formal vs. Lenguaje Natural
Para discutir
Autmatas Finitos
Autmata Finito NO Determinista
Autmatas Finitos
Formalmente, un AFND M:(Q, ,,q0,F)
Q: conjunto finito de n estados : alfabeto finito de smbolos de entrada q0: estado inicial F: conjunto de estados finales (o aceptores) FQ (qi,a)={qj} funcin de transicin entre estados 2Q : Q x donde incluye si admite arcos rotulados con
Autmatas Finitos
En estos modelos, el problema es elegir el camino adecuado para procesar la tira Soluciones estndar:
- Backup - Look-ahead - Paralelismo
Autmatas Finitos
Backup
cada vez que hay que elegir, se coloca una marca:
en qu lugar del buffer se hizo esa eleccin cul fue el estado
si falla, entonces se vuelve atrs hasta ese punto y se elige otro camino
Autmatas Finitos
Autmatas Finitos
Algoritmo de Thompson
Fuente: http://swtch.com/~rsc/regexp/regexp1.html
Autmatas Finitos
Los AFD y los AFND reconocen lenguajes equivalentes. (Hopcroft 1979)
Historia
1959: Dana Scott y Michael Rabin: NDFA (Premio Turing 1976) 1968: Mc Naughton y Yamada, Ken Thompson: conversin regexp => nfa 1969: QED. Unix. Grep, Egrep. Perl, Javascript todos
Referencias
J.Martin & D.Jurafsky. Speech and Language Processing. R.Cox. Regular Expression Matching Can Be Simple And Fast (but is slow in Java, Perl, PHP, Python, Ruby,...) K.Thompson. Regular Expression Search Algorithm Hopcrofy & Ullman: Int. To Automata Theory, Languages and Computation