La gramática de restricciones ( CG ) es un paradigma metodológico para el procesamiento del lenguaje natural (PNL). Las reglas dependientes del contexto , escritas por el lingüista, se compilan en una gramática que asigna etiquetas gramaticales ("lecturas") a palabras u otros símbolos en el texto en ejecución. Las etiquetas típicas abordan la lematización ( lexema o forma base ), inflexión , derivación , función sintáctica , dependencia, valencia , roles de caso , semánticatipo, etc. Cada regla agrega, elimina, selecciona o reemplaza una etiqueta o un conjunto de etiquetas gramaticales en un contexto de oración dado. Las condiciones de contexto se pueden vincular a cualquier etiqueta o conjunto de etiquetas de cualquier palabra en cualquier lugar de la oración, ya sea localmente (distancias definidas) o globalmente (distancias indefinidas). Las condiciones de contexto en la misma regla pueden estar vinculadas, es decir, condicionadas entre sí, negadas o bloqueadas por palabras o etiquetas que interfieren. Los CG típicos constan de miles de reglas, que se aplican por conjuntos en pasos progresivos, cubriendo niveles de análisis cada vez más avanzados. Dentro de cada nivel, las reglas seguras se utilizan antes que las reglas heurísticas y no se permite que ninguna regla elimine la última lectura de un tipo determinado, lo que proporciona un alto grado de robustez.
El concepto CG fue lanzado por Fred Karlsson en 1990 (Karlsson 1990; Karlsson et al., Eds, 1995), y desde entonces se han escrito etiquetadores y analizadores CG para una gran variedad de idiomas, logrando rutinariamente puntuaciones F de precisión para una parte del habla. (clase de palabras) de más del 99%. [1] Varios sistemas CG sintácticos han informado puntuaciones F de alrededor del 95% para las etiquetas de funciones sintácticas. Los sistemas CG se pueden usar para crear árboles sintácticos completos en otros formalismos agregando gramáticas de estructura de frases pequeñas y no terminales o gramáticas de dependencia , y varios proyectos de Treebank han utilizado CG para la anotación automática. La metodología CG también se ha utilizado en varias aplicaciones de tecnología del lenguaje, como los correctores ortográficos y los sistemas de traducción automática .
Sintaxis y formato de la regla
Un analizador de gramática de restricciones espera como entrada un flujo de tokens analizados morfológicamente, típicamente producidos por un analizador basado en transductores de estado finito (los más comunes son las herramientas Xerox twolc / lexc / xfst, HFST o lttoolbox de Apertium ). Cada ficha puede ser ambigua y tener muchas lecturas , la forma de superficie con todas sus lecturas se llama cohorte . A continuación se muestra un posible análisis de ejemplo de ", y X era como" "en el formato de entrada esperado por VISL CG-3:
"<,>""," cm"" "y" conj"" "X" num plApoyo sustantivo "X""" "ser" verbo pasado p1 sg"ser" verbo pasado p3 sg"" "me gusta" adj."me gusta" subj"me gusta" pr"como" verbo inf"como" verbo pres"como" verbo imp"<“> """ "Lquot
Este fragmento muestra 5 cohortes, cada una con una o más lecturas. Las formas de palabras superficiales están en "
mientras que los lemas / formas base son regulares "quotes"
seguidas de un conjunto de etiquetas sin comillas, y vemos que algunas cohortes tienen varias lecturas, es decir. son ambiguos ( "
son ambiguos entre 6 lecturas). El trabajo del analizador CG ahora es 1) eliminar tantas lecturas incorrectas como sea seguro hacerlo dado el contexto, 2) opcionalmente aplicar una o más etiquetas de función sintáctica a cada cohorte (o incluso relaciones de dependencia) y 3) eliminar la ambigüedad etiquetas / relaciones aplicadas.
A continuación se muestra una regla de ejemplo (nuevamente en formato VISL CG-3) para elegir la lectura en tercera persona de "was" (eliminando la lectura en primera persona), dado que no hay pronombre en primera persona a la izquierda:
ELIMINAR (verbo p1) SI (0C (verbo)) (NEGAR * -1 (prn p1));
Aquí (verb p1)
hay un conjunto de etiquetas (el orden no importa) que debe coincidir con la lectura que estamos eliminando. Después IF
sigue una lista de cero o más restricciones , la primera dice que en esta cohorte (posición 0), todas las lecturas (el calificador C
, para Cuidado) tienen la etiqueta verb
. La segunda restricción dice que si hay una cohorte que está al menos una palabra a la izquierda (posición *-1
, el *
significado podemos ir más allá de una palabra y el -
significado a la izquierda) y esa cohorte es un pronombre en primera persona, entonces la restricción * no * partido ( NEGATE
).
En CG-3, las reglas también pueden recibir nombres, por ejemplo SELECT:somename (…) IF
, que aparecen en la salida de seguimiento.
Una regla también puede elegir una sola lectura si estamos seguros de que todas las demás lecturas deben ser incorrectas dadas las restricciones:
SELECCIONAR: entre comillas ("me gusta" subj) SI (-1 ("")) (1 (lquot) OR (":"));
En esta regla, vemos que podemos referirnos tanto a formas de palabra como a formas base en conjuntos de etiquetas (se tratan como cualquier otra etiqueta, y una lectura siempre coincidirá con su forma de palabra). Aquí, la segunda restricción se usa OR
para combinar dos conjuntos de etiquetas. Si este conjunto se usa comúnmente, podemos darle un nombre y usar el nombre, sin los paréntesis, así:
LIST prequote = lquot ":"; SELECCIONAR: entre comillas ("me gusta" subj) SI (-1 ("")) (1 cita previa);
Una definición equivalente sería SET prequote = (lquot) OR (":") ;
.
Después de ejecutar las reglas anteriores, deberíamos terminar con esto:
"<,>""," cm"" "y" conj"" "X" num plApoyo sustantivo "X""" "ser" verbo pasado p3 sg"" "me gusta" subj"<“> """ "Lquot
Si usáramos --trace
, veríamos las lecturas eliminadas con una inicial ;
y el nombre y número de línea de la regla donde sea que se aplique a una lectura.
La sintaxis de la regla para agregar etiquetas de funciones sintácticas sigue un esquema similar de "haz esto si x, y y z":
LISTA nominal = sustantivo prn;AÑADIR (@SUBJ) SI (NEGAR * -1 nominal) (0C (prop)) (Verbo finito 1C);
Esto se llama una "regla de mapeo", y podemos terminar con múltiples etiquetas de mapeo por cohorte, en cuyo caso podemos eliminar la ambigüedad usando las mismas reglas SELECT / REMOVE.
Implementaciones
CG-1
La primera implementación de CG fue CGP por Fred Karlsson a principios de la década de 1990. Se basaba puramente en LISP y la sintaxis se basaba en expresiones-s de LISP (Karlsson 1990).
CG-2
La implementación CG-2 de Pasi Tapanainen mdis [2] eliminó algunos de los paréntesis en el formato gramatical y se implementó en C ++, interpretando la gramática como un Transductor de Estado Finito para la velocidad.
CG-2 fue posteriormente reimplementado (con un método no FST) por el grupo VISL en Syddansk Universitet como el VISL CG de código abierto [1] , manteniendo el mismo formato que el mdis de código cerrado de Tapanainen .
CG-3
El proyecto VISL luego se convirtió en VISL CG-3, que trajo más cambios y adiciones al formato gramatical, por ejemplo:
- soporte completo de Unicode a través de componentes internacionales para Unicode
- interpretación diferente de la negación (NO)
- relaciones con nombre además de relaciones de dependencia simples
- ajuste variable
- coincidencia completa de expresiones regulares
- unificación de etiquetas / conjuntos:
LIST gen = m f; SELECT (det) + $$gen IF (1 noun) (1 $$gen);
seleccionará el determinante que tenga el mismo género que el siguiente sustantivo - envoltorios para leer / escribir formatos Apertium y HFST
- soporte para subreadings (donde una lectura tiene varias "partes", utilizadas para expresiones y compuestos de varias palabras)
- escanear más allá del punto de origen o incluso los límites de las ventanas
- utilizar como biblioteca y soporte para la integración con procesos externos
También hay un IDE simple para CG-3 desarrollado por VISL, [2] que proporciona resaltado de sintaxis y le permite ver entradas y salidas y posibles errores a medida que escribe su gramática. También hay un modo Emacs cg.el
[3] con características similares y navegación de código simple.
A diferencia de la implementación de Tapanainen, las implementaciones de VISL no utilizan transductores de estado finito. Las reglas están ordenadas dentro de las secciones, lo que brinda más previsibilidad al escribir gramáticas, pero a costa de un análisis más lento y la posibilidad de bucles sin fin.
Ha habido reimplementaciones experimentales de código abierto basadas en FST de CG-2 que para gramáticas pequeñas alcanzan la velocidad de VISL CG-3, si no mdis . [3]
Lista de sistemas
- Software libre
- Compilador / analizador VISL CG-3 CGrammar
- Sami del Norte y Lule , Feroés , Komi y Groenlandés de la Universidad de Tromsø ( más información , documentación de Sami del Norte )
- Estonio [4]
- Norwegian Nynorsk y Bokmål en línea , etiquetador Oslo-Bergen ( código fuente )
- Bretón , galés , gaélico irlandés y noruego (convertido de lo anterior) en Apertium (ver CG en Apertium )
- Software no libre
- Euskera [5]
- Catalán CATCG
- Danés DanGram
- Inglés ENGCG , ENGCG-2 , VISL-ENGCG
- Esperanto EspGram
- Francés FrAG
- GerGram alemán
- Irlandés en línea
- ItaGram italiano
- Español HISPAL
- SWECG sueco
- swahili
- Portugués PALAVRAS
Referencias
- ^ Para inglés, ver por ejemplo Tapanainen y Voutilainen 1994.
- ^ Tapanainen, Pasi 1996: El analizador gramatical de restricciones CG-2. Publicaciones de la Universidad de Helsinki No. 27.
- ^ Nemeskey, DM, Tyers, FM y Hulden, M. (2014) "Por qué importa la implementación: evaluación de un analizador gramatical de restricciones de código abierto". Actas de la 25a Conferencia Internacional de Lingüística Computacional (COLING 2014) (para aparecer)
- Bick, Eckhard. 2000. El sistema de análisis "Palavras": análisis gramatical automático del portugués en un marco gramatical de restricción . Aarhus: Prensa de la Universidad de Aarhus. ISBN 87-7288-910-1 .
- Karlsson, Fred. 1990. Gramática de restricciones como marco para analizar texto sin restricciones. H. Karlgren, ed., Actas de la XIII Conferencia Internacional de Lingüística Computacional , vol. 3. Helsinki 1990, 168-173.
- Karlsson, Fred, Atro Voutilainen, Juha Heikkilä y Arto Anttila, editores. 1995. Gramática de restricciones: un sistema independiente del lenguaje para analizar texto sin restricciones . Procesamiento del lenguaje natural, No 4. Mouton de Gruyter, Berlín y Nueva York. ISBN 3-11-014179-5 .
- Tapanainen, Pasi y Atro Voutilainen 1994: Etiquetado con precisión: no adivine si lo sabe . ANLC '94 Actas de la cuarta conferencia sobre procesamiento del lenguaje natural aplicado.
enlaces externos
- Tutorial CG por Kevin Donnelly
- VISL CG-3 , el compilador / analizador gramatical
- Lista de algunas publicaciones de gramática de restricciones (al menos hasta 2010)