Palabras

Anuncio
Palabras
Palabras
 Las palabras son el bloque fundamental del lenguaje.
 Cada lenguaje humano, hablado, por señas o escrito, está
compuesto de palabras.
 Cada área de procesamiento del habla y lenguaje, desde
reconocimiento del habla a traducción máquina para
recuperación de información en la Web requiere
conocimiento extensivo de las palabras.
Palabras
 Muchas tareas de procesamiento lingüístico implican la
coincidencia de patrón (pattern matching).

Si queremos encontrar las palabras que terminan con 'aron'

Si queremos encontrar las palabras que terminan con „en‟.
 Las expresiones regulares son un método más potente y
flexible para describir los patrones que nos interesen.
Expresiones regulares
 Una expresión regular (ER) es la notación estándar para
caracterizar secuencias de textos.
 La ER es utilizada para especificar cadenas de texto en
situaciones como:

Búsqueda Web, procesamiento de palabras, cálculo de frecuencias de
corpus, etc.
 Las ER pueden ser implementadas por autómatas de
estado finito (AEF).
Expresiones regulares
 La ER es un lenguaje para especificar cadenas de
búsqueda de texto.
 La ER es una herramienta teórica importante de las
ciencias de la computación y lingüística.
 Una ER es una fórmula en un lenguaje especial que es
utilizada para especificar clases simples de cadenas.

Cadena: secuencia de símbolos
Expresiones regulares
 Una cadena es cualquier secuencia de caracteres
alfanuméricos (letras, números, espacios,
tabulaciones y puntuación).

Un espacio es un carácter como cualquier otro representado
con “_”.
Expresiones regulares
 Formalmente una ER es una notación algebraica
para caracterizar un conjunto de cadenas.
 Pueden ser usadas para especificar cadenas de
búsqueda y para definir un lenguaje en una manera
formal.
Expresiones regulares
 La búsqueda de ERs requiere un patrón que se quiere
buscar y un corpus de textos en los cuales hacerlo.
 Una función de búsqueda de ER buscará a través del
corpus, regresando todos los textos que contengan el
patrón.

En un sistema de recuperación de información los textos pueden ser
documentos enteros o páginas Web.

En un procesador de palabras, los textos pueden ser palabras
individuales o líneas de un documento.
Expresiones regulares
 Una búsqueda puede ser diseñada para regresar
todos los “empates” para una ER o sólo el primer
“empate”.
Patrones básicos de expresiones regulares
 El tipo más simple de ER es una secuencia de
caracteres simples.

Para buscar gato, se escribe /gato/.

Así la expresión regular /pinocho/ empata cualquier cadena
conteniendo la subcadena pinocho.

Por ejemplo la línea Me llaman pinocho.
 Se pondrán barras // alrededor de cada ER para
diferenciar una ER y un patrón.
Expresiones regulares
 La cadena de búsqueda puede consistir de una sola
letra (como /!/) o una secuencia de letras (como
/urgl/).
ER
Ejemplo de patrones empatados
/gatos/
“enlaces interesantes de gatos y perros”
/a/
“Mariana paso a la tienda”
/dice_Clara/
“Pedro, mi regalo por favor, dice Clara”
/zapato/
“todos tus zapatos”
/!/
“¡Dejaste a los niños en la selva!”
Expresiones regulares
 Las ERs son sensibles a mayúsculas; la minúscula /s/ es
distinta de la mayúscula /S/.
 Significa que el patrón /gatos/ no empatará la cadena
Gatos.
 Se puede resolver este problema utilizando corchetes [ ].
 La cadena de caracteres dentro los corchetes especifican
una disyunción de caracteres a empatar.
Expresiones regulares
 Se muestra que el patrón [ gG] empata patrones
conteniendo ya sea g o G.
ER
Empate
Patrones ejemplo
/[gG]atos/
Gatos o gatos
“Gatos”
/[abc]/
„a‟, „b‟, o „c‟
“In uomini, in soldati”
/[1234567890]/
Cualquier dígito
“va desde 7 hasta 5”
Expresiones regulares
 La ER /[1234567890]/ especifica cualquier dígito sólo.
 Las clases de caracteres como dígitos o letras son bloques
de construcción importantes, en expresiones, pueden
volverse complicadas, por ejemplo:

/[ABCDEFGHIJKLMNÑOPQRSTUVWXYZ]/

Para especificar “cualquier letra capital”
 Los corchetes se pueden utilizar con el guión (-) para
especificar cualquier carácter en el rango.
Expresiones regulares
 El patrón /[2-5]/ especifica cualesquiera de los
caracteres 2,3,4,o 5.
 El patrón /[b-g]/ especifica uno de los caracteres b,
c, d, e, f, o g.
ER
Empate
Patrones empatados de ejemplo
/[A-Z]/
Una letra mayúscula
“deberíamos llamarle Tomás”
/[a-z]/
Una letra minúscula
“mis alumnos estaban divertidos”
/[0-9]/
Un solo dígito
“Capítulo 1: introducción ”
Expresiones regulares
 Los [] también se pueden utilizar para especificar lo que
un solo carácter no puede ser, al utilizar el símbolo
circunflejo ^.

Si ^ es el 1er. símbolo después de [, el patrón resultante es negado.
 Por ejemplo, el patrón /[^a]/ empata cualquier caracter
(incluyendo caracteres especiales) excepto „a‟.

Sólo es verdad cuando ^ es el primer símbolo después del corchete.

Si ocurre en cualquier otro lado, usualmente significa ^
Expresiones regulares
ER
Empata
Ejemplo de patrones
empatados
[^A-Z]
No una letra mayúscula
“Oyfn pripetchik”
[^Ss]
Ni una “S” o “s”
“No tiene sentido”
[^\.]
No un punto
“el invitado de honor”
[e^]
Cualquiera „e‟ o „^‟
“buscar ^ ahora”
a^b
El patrón „a^b‟
“buscar a^b ahora”
 Con lo anterior se resuelve el problema de las letras
capitales.
 Por ejemplo [^aeiouAEIOU] coincide con cualquier
carácter que no sea una vocal:
Expresiones regulares
 ¿Cómo especificar gato y gatos?

No se puede utilizar [] ya que permiten decir s o S, pero no permiten
decir s o nada.
 Se utiliza el signo de interrogación /?/, que significa “el
carácter precedente o nada”.
ER
Empate
Ejemplo de patrones
que empatan
gatos?
gato o gatos
“gato”
colo?r
color o colr
“color”
 Podemos pensar en ? como “cero o más instancias del carácter
previo”.
Expresiones regulares
 Es una forma de especificar “cuanto de algo”
queremos.
 En ocasiones se necesitan ERs que permitan
repeticiones de cosas.
 Considere el lenguaje de un borrego, de cadenas
como:




¡ bee!
¡ beeeee!
¡ beeeeeee!
¡beeeeeeeeee!
Expresiones regulares
 Son cadenas con un signo de admiración, una b, seguida
por lo menos de 2 e‟s y finalmente otro signo de
admiración.
 El conjunto de operadores que permiten decir cosas
como “algún número de es” está basado en el *, llamado
Kleene.

Significa cero o más ocurrencias del carácter inmediatamente previo
o expresión regular.

/e*/ significa “cualquier cadena de cero o más es”.
Expresiones regulares
 La ER para empatar una o más e es /ee*/,
significando una e seguida de cero o más es.
 También se pueden repetir patrones más complejos.


[ab]* significa “cero o más as o bs”.
Empatará cadenas como aaaa o ababab o bbbb.
Expresiones regulares
 Especificar ER para precios *tarea

La ER para un dígito fue /[0-9]/

La ER para un entero es /[0-9][0-9]*/
 En ocasiones es molesto el tener que escribir la ER para
dígitos dos veces.
 Hay otra forma más corta de especificar “al menos uno”
de algún caracter.

Kleene + significa “uno o más del caracter previo”
Expresiones regulares
 La expresión /[0-9]+/ es la manera normal de especificar
una secuencia de dígitos.
 Hay entonces 2 formas de especificar el lenguaje del
borrego /¡beee*!/ o /¡bee+!/.
 El punto /./ una expresión comodín que empata
cualquier caracter solo (excepto un retorno de carro).
ER
Empate
Patrón de ejemplo
/beg.n/
Cualquier caracter entre beg y n
Begin, beg‟n, begun
Expresiones regulares
 Supongamos que tenemos un hueco en un crucigrama
para una palabra de ocho letras con j como su tercera
letra y m como su sexta.
 En el lugar de cada celda en blanco se utiliza el
comodín . :
/^..j..m..$/
Obtendríamos las palabras 'abjectly', 'adjuster',
'dejected', 'dejectly', 'injector', 'majestic’
Expresiones regulares
 El comodín se utiliza a menudo con * para indicar
“cualquier cadena de caracteres”.
 Suponga que se quiere encontrar cualquier línea en
la cual una palabra en particular, por ejemplo
aardvark, aparece doble vez.
 Podemos especificar esto con la ER
/aardvark.*aardvark/
Expresiones regulares
 Anclas son caracteres especiales que sujetan ER a
lugares particulares en una cadena.
 No empatan ningún caracter. En su lugar, empatan
una posición antes, después o entre caracteres.
Expresiones regulares
 Las anclas más comunes son ^ y $.

^ el circunflejo empata el inicio de una línea.

El patrón /^El/ empata la palabra El sólo al inicio de una
línea.

/^b/ empata sólo la primera b en bobby.

Aplicar /^a/ a abc empata a, pero /^b/ no empatará con abc.
Expresiones regulares
 Hay entonces 3 usos de ^:

Para empatar el inicio de una línea.

Como una negación dentro de los corchetes.

Sólo para indicar ^
Expresiones regulares
 El signo $ empata el final de la línea.
 /c$/ empata c en abc, mientras que /a$/ no
empatará.
 El patrón _$ es un patrón útil para empatar un
espacio al final de la línea y /^El perro\.$/ empata
una línea que contiene sólo la frase El perro.
Expresiones regulares
 Hay otras dos anclas:

\b empata un límite de palabra, mientras que \B empata un
no-límite.

Así, / \bel \b/ empareja la palabra el pero no la palabra tele.

/ \b99/ empatará la cadena 99 en Hay 99 botellas de cerveza
pero no 99 en hay 299 botellas de cerveza.

Empatará 99 en $99

/\Bver\B/ Empareja ver con "Valverde" pero no con "verde"
Disyunción, agrupamiento y precedencia
 Supóngase que queremos hacer una búsqueda en textos
sobre mascotas, específicamente en gatos y perros.

Quiero buscar la cadena gato o perro.
 Es necesario un operador nuevo, el operador disyunción,
también llamado el símbolo pipe.

El patrón /gato|perro/ empata ya sea la cadena gato o la cadena
perro.
Disyunción, agrupamiento y precedencia
 En ocasiones se necesita utilizar la disyunción en medio
de una secuencia grande.

Suponga que se quiere encontrar información sobre una mascota.
 ¿Cómo especificar gato y gatitos?

/gato|itos/ solo coincidirá con gato e itos.
 Para que la disyunción aplique sólo a un patrón
específico, se necesitan los operadores paréntesis ( y )
Disyunción, agrupamiento y precedencia
 Encerrar un patrón entre paréntesis lo hace actuar
como un solo caracter para los propósitos de
operadores vecinos como el pipe | y el Kleene *.
 Así el patrón /gat(o|itos)/ especifica lo que se quiere
con la disyunción sólo aplicar a o y a itos.
Disyunción, agrupamiento y precedencia
 El operador paréntesis ( es útil cuando se utilizan contadores
como Kleene *.
 A diferencia del operador |, el operador Kleene * aplica por
default a un solo caracter, no a una secuencia completa.
 Suponga que se quiere empatar instancias repetidas de una
cadena.

Tal vez tenemos una línea que tiene etiquetas columna de la forma
Columna 1 Columna 2 Columna 3.
Disyunción, agrupamiento y precedencia
 Con la expresión /(Columna_[0-9]+_*)*/ coincide la
palabra Columna seguida por un número y espacios
opcionales, el patrón completo repetido cualquier
número de veces.
Disyunción, agrupamiento y precedencia
 La siguiente lista da el orden de la precedencia de los
operadores (desde la más alta a la más baja)

Paréntesis
()

Cuantificadores
* + ? {}

Secuencias y anclas
el ^ fin $

Disyunción
|
Un ejemplo simple
 Suponga que se quiere escribir una ER para encontrar los
casos del artículo el.

Un patrón simple, pero incorrecto sería /el/

Problema: se perdería la palabra cuando inicia una sentencia y es
mayúscula.
 Se puede obtener la siguiente ER:

/[eE]l/

Problema: se obtendrían textos incorrectos con el incluido en otras
palabras (elefante o melena).
Un ejemplo simple
 Es necesario especificar que se quieren instancias con un
límite de palabra en ambos lados

/\b[eE]l \b/
 Supóngase que se quiere encontrar el en algún contexto donde
tenga guiones o números cerca:

el_ o el26.
 Especificar que queremos instancias donde no haya letras
alfabéticas en ninguno de los lados de el.

/[^a-zA-Z][eE]l[^a-zA-Z]/
Un ejemplo simple
 La ER anterior no encontraría la palabra el cuando
inicia una línea, ya que la expresión implica que debe
haber algún caracter antes de el.
 Especificar que antes de el requerimos el inicio de
una línea o un caracter no alfabético.

/(^|[^a-zA-Z])[eE]l[^a-zA-Z]/
Un ejemplo simple
 Revisemos la tarea 
 Otro ejemplo Página 29
 Equipos
Operadores avanzados
 Existen algunos operadores avanzados.
ER
Expansión
Empate
Patrones
ejemplo
\d
[0-9]
Cualquier dígito
Fiesta_de_5
\D
[^0-9]
Cualquier no dígito
Luna_azul
\w
[a-zA-Z0-9_]
Cualquier alfanumérico
Daiyu
\W
[^\w]
Un no alfanumérico
!!!!
\s
[_\r\t\n\f]
Espacio en blanco (espacio, tabulador)
\S
[^\s]
No un espacio en blanco
En_Córdoba
Operadores avanzados
 Se pueden utilizar números explícitos como
contadores, encerrándolos en llaves.

/{3}/ indica 3 ocurrencias del caracter o expresión previa.

/a\.{24}z/ coincidirá “a seguida por 24 puntos seguido de z”
 Puede especificarse un rango /{n,m}/ especifica
desde n hasta m ocurrencias de la expresión previa.
Operadores avanzados
 El símbolo ? especifica que el carácter anterior es
opcional.

/^e-?mail$/ coincide tanto con email como con e-mail.
ER
Empate
*
Cero o más ocurrencias del previo caracter o expresión
+
Una o más ocurrencias del caracter o expresión previa
?
Exactamente cero o una ocurrencia del caracter o expresión previa
{n}
n ocurrencias del caracter o expresión previa
{n,m}
Desde n hasta m ocurrencias del caracter o expresión previa
{n,}
Al menos n ocurrencias del caracter o expresión previos.
Operadores avanzados
 Ciertos caracteres especiales son indicados por la notación
especial con la diagonal inversa (\).

Como el caracter de nueva línea \n

El caracter tabulador \t.
 Para tratar caracteres especiales (como .,*,[, y \), se les
precede con diagonal inversa \

Es decir /\./, /\*/, /\[/, y /\\/
Operadores avanzados
ER
Empate
Ejemplo de patrones
\*
Un asterisco *
K*A*P*L*A*N
\.
Un punto .
Dr. Pineda, supongo
\?
Un signo de interrogación ¿Qué dijo?
\n
Una nueva línea
\t
Un tabulador
Expresiones regulares
 El sistema T9 se utiliza
para introducir texto en
los teléfonos móviles.
 Dos o más palabras que se
escriben con la misma
secuencia de pulsaciones
se llaman textónimos.
Expresiones regulares
 ¿Qué palabras pueden producirse con 4653?
 Se utiliza la expresión regular: /^[ghi][mno][jlk][def]$/
¿Y para la ER /^[abc][ghi][tuv][abc]$/ ?
Proponga otra ER,
puede incluir más números
 El orden de los caracteres dentro de los corchetes no es
significativo.
Expresiones regulares
 Encuentre "trabadedos”, buscando palabras que sólo
utilizan parte del teclado.
 /^[ghijklmno]+$/ o /^[g-o]+$/ coincide con palabras que sólo ocupan
las teclas 4, 5, 6 en la fila central.
 /^[a-fj-o]+$/ coincide con palabras que utilizan las teclas 2, 3, 5, 6 en
la esquina superior de la derecha.
Supongamos que a ramón le gusta tomar fotos
¡Muchas fotos!
Expresiones regulares
 Ramón quiere buscar todas en las que esté su nombre.

Pero… tiene miles y miles de fotos donde buscar.


Carpetas con distintos formatos jpg, bmp, tif, png
Tiene muchos nombres para sus fotos

ramoncito.jpg, ramon_playa.bmp, ramon_borracho.png,
ramonennavidad.tif, ramon123.jpg, ramoncito_sexy_15.bmp

Si quisiéramos fotografías nombradas: ramón.png, r4m0n.png,
raaaaamoncito.png (sin incluir roman.png, romén.png) .
Expresiones regulares
.
Coincide con cualquier carácter. (comodín)
^abc
Coincide con «abc» en el inicio de una cadena.
abc$
Coincide con «abc» al final de una cadena.
[abc]
Coincide con uno de «abc». (conjunto)
[A-Z0-9]
Coincide con uno de una serie de caracteres (aquí, alfanuméricos).
ed|ing|s
Coincide con una de las cadenas especificadas. (disyunción)
*
Coincide con cero o más elementos de la expresión anterior.
+
Coincide con uno o más elementos de la expresión anterior.
?
Coincide con cero o uno de los elementos anteriores. (opcional)
{n}
Coincide con un carácter que se repita n veces, n es un número entero no negativo
{n,}
Coincide con un carácter que se repita al menos n veces
{,n}
Coincide con un carácter que se repita no más de n veces
{m,n}
a(b|c)+
Coincide con un carácter que se repita al menos m veces y no más de n veces
Los paréntesis indican el alcance de los operadores.
Ejercicios
 Escriba una ER en una hoja

NO escriba el o los patrones que debe reconocer dicha
expresión, SÓLO la ER.
 Equipos
Ejercicios
Obtenga un ejemplo de patrón para las siguientes
expresiones regulares.
/^[0-9]+\.[0-9]+$/
/^[A-Z]+\$$/
/^[0-9]{4}$/
/^[0-9]+-[a-z]{3,5}$/
/^[a-z]{5,}-[a-z]{2,3}-[a-z]{,6}$/
/(ed|ing)$/
Ejercicios
 Obtenga un
ejemplo de patrón
para el cual
coincidan las
siguientes ER.
Tarea
 Leer sección Regular Expression Substitution,
Memory and Eliza
 Investigar si facebook utiliza PLN
Descargar