stringtranslate.com

Gramática de restricciones

La gramática de restricciones ( CG ) es un paradigma metodológico para el procesamiento del lenguaje natural (PLN). Las reglas dependientes del contexto escritas por lingüistas se compilan en una gramática que asigna etiquetas gramaticales ("lecturas") a palabras u otros elementos en el texto en ejecución. Las etiquetas típicas abordan la lematización ( lexema o forma base ), la flexión , la derivación , la función sintáctica , la dependencia, la valencia , los roles de caso , el tipo semántico , etc. Cada regla agrega, elimina, selecciona o reemplaza una etiqueta o un conjunto de etiquetas gramaticales en un contexto de oración determinado. Las condiciones de contexto se pueden vincular a cualquier etiqueta o conjunto de etiquetas de cualquier palabra en cualquier parte de la oración, ya sea localmente (distancias definidas) o globalmente (distancias no definidas). 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. Las CG típicas constan de miles de reglas, que se aplican por conjunto en pasos progresivos, cubriendo niveles de análisis cada vez más avanzados. Dentro de cada nivel, se utilizan reglas seguras antes que 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 partes del discurso (clase de palabra) de más del 99%. [1] Varios sistemas CG sintácticos han informado puntuaciones F de alrededor del 95% para etiquetas de función sintáctica. Los sistemas CG se pueden utilizar para crear árboles sintácticos completos en otros formalismos agregando gramáticas de estructura de frase pequeñas, no basadas en terminales o gramáticas de dependencia , y varios proyectos Treebank han utilizado CG para anotación automática. La metodología CG también se ha utilizado en varias aplicaciones de tecnología del lenguaje, como correctores ortográficos y 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, generalmente producidos por un analizador basado en transductores de estados finitos (los más comunes son las herramientas twolc/lexc/xfst de Xerox, HFST o lttoolbox de Apertium ). Cada token puede ser ambiguo y tener muchas lecturas ; la forma de superficie con todas sus lecturas se denomina cohorte . A continuación se muestra un posible ejemplo de análisis de ", y X era como “" en el formato de entrada esperado por VISL CG-3:

"<,>""," cm"<y>""y" conj."<X>""X" número plSustantivo "X""<era>"verbo "ser" pasado p1 sgverbo "ser" pasado p3 sg"<me gusta>""como" adj"me gusta" sujeto"me gusta" prverbo "gustar" infverbo "gustar" presverbo "gustar" imp"<“>""" "lquot

Este fragmento muestra 5 cohortes, cada una con una o más lecturas. Las formas de las palabras de la superficie están en , "<anglequotes>"mientras que los lemas/formas base están en regular "quotes"seguido de un conjunto de etiquetas sin comillas, y vemos que algunas cohortes tienen varias lecturas, es decir, son ambiguas ( "<like>"están ambiguas entre 6 lecturas). El trabajo del analizador de CG ahora es 1) eliminar tantas lecturas incorrectas como sea seguro hacer dado el contexto, 2) aplicar opcionalmente una o más etiquetas de función sintáctica a cada cohorte (o incluso relaciones de dependencia) y 3) desambiguar las etiquetas/relaciones aplicadas.

A continuación se muestra un ejemplo de regla (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 un 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 deben coincidir con la lectura que estamos eliminando. Después IFsigue 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 Careful) 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 de que podemos ir más allá de una palabra y que -significa a la izquierda) y esa cohorte es un pronombre en primera persona, entonces la restricción *no* coincide ( NEGATE).

En CG-3, a las reglas también se les pueden dar nombres, por ejemplo SELECT:somename (…) IF, que aparecen en la salida del seguimiento.

Una regla también puede elegir una única lectura si estamos seguros de que todas las demás lecturas deben ser erróneas dadas las restricciones:

SELECCIONAR:citando ("como" subj) SI (-1 ("<era>")) (1 (lquot) O (:):) ;

En esta regla, vemos que podemos hacer referencia tanto a formas de palabras 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 utiliza ORpara combinar dos conjuntos de etiquetas. Si este conjunto se usa comúnmente, podemos darle un nombre y utilizar el nombre, sin los paréntesis, de la siguiente manera:

LISTA prequote = lquot : " ;SELECCIONAR:citando ("como" subj) SI (-1 ("<era>")) (1 precita) ;

Una definición equivalente sería SET prequote = (lquot) OR (":") ; .

Después de ejecutar las reglas anteriores, deberíamos terminar con esto:

"<,>""," cm"<y>""y" conj."<X>""X" número plSustantivo "X""<era>"verbo "ser" pasado p3 sg"<me gusta>""me gusta" sujeto"<“>""" "lquot

Si usáramos --trace, veríamos las lecturas eliminadas con un inicial ;y el nombre y número de línea de la regla donde sea que se aplicara a una lectura.


La sintaxis de la regla para agregar etiquetas de funciones sintácticas sigue un esquema similar a "haz esto si x, y y z":

LISTA nominal = sustantivo prn;AGREGAR (@SUBJ) SI (NEGAR *-1 nominal) (0C (propiedad)) (verbo finito 1C) ;

Esto se llama una "regla de mapeo" y podemos terminar con múltiples etiquetas de mapeo de este tipo 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 de Fred Karlsson a principios de la década de 1990. Estaba basada 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 de gramática y se implementó en C++, interpretando la gramática como un transductor de estados finitos para la velocidad.

CG-2 fue posteriormente reimplementado (con un método no FST) por el grupo VISL en la Syddansk Universitet como VISL CG de código abierto [1], manteniendo el mismo formato que el mdis de código cerrado de Tapanainen .


CG-3

Una captura de pantalla del cg3ide de VISL
Edición y ejecución de un archivo CG-3 en Emacs cg.el

El proyecto VISL se convirtió posteriormente en VISL CG-3, que introdujo más cambios y añadidos al formato gramatical, por ejemplo:

También existe un IDE simple para CG-3 desarrollado por VISL,[2] que proporciona resaltado de sintaxis y permite ver la entrada y la salida y los posibles errores mientras se escribe la gramática. También existe un modo Emacscg.el [3] con características similares y una navegación de código sencilla.

A diferencia de la implementación de Tapanainen, las implementaciones de VISL no utilizan transductores de estados finitos. Las reglas se ordenan dentro de secciones, lo que brinda mayor previsibilidad al escribir gramáticas, pero a costa de un análisis más lento y la posibilidad de bucles infinitos.

Se han realizado 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
Software no libre

Referencias

  1. ^ Para inglés, consulte, por ejemplo, Tapanainen y Voutilainen 1994.
  2. ^ Tapanainen, Pasi 1996: El analizador gramatical de restricciones CG-2. Publicaciones de la Universidad de Helsinki n.º 27.
  3. ^ Nemeskey, DM, Tyers, FM y Hulden, M. (2014) "Why Implementation Matters: Evaluation of an Open-source Constraint Grammar Parser". Actas de la 25.ª Conferencia Internacional sobre Lingüística Computacional (COLING 2014) (próximamente)

Enlaces externos