Documentos de Académico
Documentos de Profesional
Documentos de Cultura
GRAMATICAS Y LENGUAJES
FORMALES
Teoría de la computación
3. Expresiones Regulares
Nos permiten evaluar si un patrón de búsqueda se encuentra en una cadena de
caracteres, de modo que mediante este tipo de expresiones regulares
obtendremos un valor lógico verdadero o falso según se encuentre el patrón
deseado. La sintaxis de este tipo de expresiones regulares es la siguiente:
valor a comparar =~ patrón de búsqueda
He aquí un ejemplo:
# imprimimos todas las líneas que contengan "html". Ej.: "htmlexe"
if ($linea =~ /html/) {
print $linea;
}
Los patrones de búsqueda pueden integrar información relativa al contexto, tal
como la búsqueda de líneas que empiecen por la cadena de caracteres, la
extracción de palabras que tengan prefijos o sufijos particulares... Estos
contextos se tienen mediante una representación particular del modelo.
Referencia de patrones.
Se utilizan para referenciar patrones en las expresiones regulares. Perl trabaja
con dos tipos de operadores de comparación:
$1,$2,...,$9. Sirven para referenciar uno de los patrones de búsqueda de la
expresión regular. El número del 1 al 9 representa el patrón al que queremos
referirnos dentro de la expresión regular. Así un ejemplo del uso de este
operador se puede observar en este código en Perl que añade el articulo 'El' a un
nombre común: (en este ejemplo se utilizará una expresión regular de sustitución
que veremos en el siguiente apartado).
$var = "coche";
$var =~ s/(coche)/El $1/; # $1 equivale a coche
print $var;
\1,\2, ...,\9. Este operador tiene la misma utilidad que el anterior se utiliza para
referenciar patrones, pero esta vez la referencia se ha de producir dentro de la
expresión regular. He aquí un ejemplo:
if ($var =~ (/^(\w)+.*\1$/) {
print $var;
}
Esta expresión regular de comparación tiene el siguiente significado: mediante la
cadena ^(\w)+ nos referimos a todos los caracteres alfanuméricos que forman
parte del principio de la cadena contenida en $var, es decir, la cadena ha de
empezar por uno o más caracteres alfanuméricos. Con la cadena .*
referenciamos un conjunto arbitrario de caracteres de longitud desconocida,
finalmente con la cadena \1 expresamos el primer patrón utilizado y con $
significamos que este patrón debe de estar al final de la cadena contendia en
$var. En definitiva la expresión regular tomará el valor verdadero, cuando la
cadena de caracteres contenida en $var tenga la misma cadena de caracteres
alfanuméricos al principio y al final. Así por ejemplo, si $var tiene una cadena de
caracteres como esta: 'hola juansdfa hola' el valor de la expresión regular será
cierto, ya que los espacios en blanco no se consideran caracteres alfanuméricos.
4. Aplicación adicional
Reconocimiento Sintáctico de Formas
Primer gran problema: ¿qué es una “Forma”?
Análisis indirecto: ”Forma”, parece ser el resultado del esfuerzo por traducir en
una sola palabra lo que los de habla inglesa denominan “Pattern” y los que de
habla alemana, llaman “Muster”.
La tarea es muy difícil: para muestra, algunos ejemplos. ¿Que letras, números,
jeroglíficos, objetos de alguna colección podrán ser “Formas” adecuadas.?
Todos los ejemplos se pueden designar correctamente con las palabras
“Patterns” o “Muster”; pero no hay una palabra única castellana que logre lo
mismo, la denominación “Forma” hay que aceptarla como mero “nombre propio”.
La elección de la palabra “Forma”, en todo caso coincide con la elección de los
franceses en el mismo tema y con iguales problemas. Ellos hablas de “Formes”.
Análisis directo: Consideremos como una unidad la designación “Reconocimiento
de Formas” y empecemos por “reconocimiento”. Lógicamente esto presupone un
“conocimiento” previo para poder (intentar) reconocer. Si, mediante un
razonamiento un tanto simplista, concluimos en que podemos (en principio)
reconocer algo que hemos conocido o, generalizando, que podemos reconocer
sólo lo que podemos conocer, resulta entonces que todo lo que podemos conocer
son “Formas”!. De este raciocinio se desprende que nuestro universo no es otra
cosa que un conjunto de “Formas”!. Nuestra intuición, por cierto se resiste a
aceptar esta conclusión: pues por lo menos pensamos en la declamación de
relaciones entre Formas. El objetivo de este análisis no era, desde luego, hacer
filosofía universal, sino ofrecer otro punto de vista aclaratorio sobre
“Reconocimiento de Formas”.
Formalmente, entonces ¿Qué se entiende por Reconocimiento de Formas? Es un
proceso algoritmico mediante el cual se establece la pertenencia de una Forma
(desconocida) a una clase previamente definida. Que el proceso sea algoritmico
garantiza que podrá ser realizado mediante circuitos lógicos, en general, por un
computador real. Es importante que la complejidad del algoritmo sea
suficientemente reducida como para permitir que el reconocimiento se efectúe en
un tiempo “adecuado”. Si la silla de ruedas de un parapléjico es controlada a
través de órdenes habladas, la palabra “pare” debe ser reconocida en una
fracción de segundo.)
Segundo problema, ubicación y relaciones del reconocimiento de Formas en el
espectro científico
En particular, la idea central, se refiere a la descomposición de una forma
compleja en un conjunto de formas simples (digamos, “fáciles de reconocer”),
tomando en consideración sus relaciones estructurales. Luego, considerar el
conjunto de formas simples como símbolos de un alfabeto formal y mediante una
Gramática generar un lenguaje cuyas palabras corresponden a una codificación
de las formas en reconocimiento. El árbol sintáctico permite la clasificación de
cada forma.
Métodos Generales para el diseño de Sistemas de Reconocimiento de Formas
• Métodos Matemáticos(estadísticos)
Procesamiento matemático de las características
Aprendizaje con consideraciones estadísticas.
• Métodos Sintácticos
- Estudio de las formas parciales y estructuras
- Clasificación sobre la base de gramáticas Formales
- Aprendizaje por intermedio de la Inferencia Gramatical.
- TreeBag, como herramienta de apoyo y otras.
• Métodos Eurísticos
Adaptación experimental de los métodos anteriores
Hipótesis de Optimización.