Articulo de referencia

gramática de concatenación de rangos

La gramática de concatenación de rangos (RCG) es un formalismo gramatical desarrollado por Pierre Boullier [ 1 ] en 1998 como un intento de caracterizar una serie de fenómenos d...

La gramática de concatenación de rangos (RCG) es un formalismo gramatical desarrollado por Pierre Boullier [ 1 ] en 1998 como un intento de caracterizar una serie de fenómenos del lenguaje natural, como los números chinos y la reorganización del orden de las palabras alemanas , que están fuera de los límites de los lenguajes ligeramente sensibles al contexto . [ 2 ]

Desde un punto de vista teórico, cualquier lenguaje que pueda ser analizado en tiempo polinomial pertenece al subconjunto de RCG llamado gramáticas de concatenación de rango positivo, y recíprocamente. [ 4 ]

Aunque se conciben como una variante de las gramáticas de movimiento literal (LMG) de Groenink, las RCG tratan el proceso gramatical más como una prueba que como una producción. Mientras que las LMG producen una cadena terminal a partir de un predicado inicial, las RCG buscan reducir un predicado inicial (que predica una cadena terminal) a la cadena vacía , lo que constituye una prueba de la pertenencia de la cadena terminal al lenguaje.

Descripción

Definición formal

Una gramática de concatenación de rango positivo (PRCG) es una tuplaGRAMO=(norte, T, V, S, PAG){\displaystyle G=(N,~T,~V,~S,~P)}, dónde:

  • norte{\displaystyle N},T{\displaystyle T}yV{\displaystyle V}son conjuntos finitos disjuntos de (respectivamente) nombres de predicados , símbolos terminales y nombres de variables . Cada nombre de predicado tiene una aridad asociada dada por la funciónoscuro:nortenorte{0}{\displaystyle \dim :N\rightarrow \mathbb {N} \setminus \{0\}}.
  • Snorte{\displaystyle S\in N}es el nombre del predicado de inicio y verificaroscuro(S)=1{\displaystyle \dim(S)=1}.
  • PAG{\displaystyle P}es un conjunto finito de cláusulas de la formaψ0ψ1ψmetro{\displaystyle \psi _{0}\rightarrow \psi _{1}\ldots \psi _{m}}, donde elψi{\displaystyle \psi _{i}}son predicados de la formaAi(α1,,αoscuro(Ai)){\displaystyle A_{i}(\alpha _{1},\ldots ,\alpha _{\dim(A_{i})})}conAinorte{\displaystyle A_{i}\in N}yαi(TV){\displaystyle \alpha _{i}\in (T\cup V)^{\star }}.

Una gramática de concatenación de rango negativo (NRCG) se define como una PRCG, pero con la adición de que algunos predicados que aparecen en el lado derecho de una cláusula pueden tener la formaAi(α1,,αoscuro(Ai))¯{\displaystyle {\overline {A_{i}(\alpha _{1},\ldots ,\alpha _{\dim(A_{i})})}}}Estos predicados se denominan predicados negativos .

Una gramática de concatenación de rangos es positiva o negativa. Si bien las PRCG son técnicamente NRCG, ​​los términos se utilizan para resaltar la ausencia (PRCG) o la presencia (NRCG) de predicados negativos.

Una gama en una palabrawT{\displaystyle w\in T^{\star }}es una parejal,rw{\displaystyle \langle l,r\rangle _ {w}}, con0lrnorte{\displaystyle 0\leq l\leq r\leq n}, dóndenorte{\displaystyle n}es la longitud dew{\displaystyle w}Las variables se vinculan a rangos, no a cadenas arbitrarias de no terminales. Dos rangosl1,r1w{\displaystyle \langle l_{1},r_{1}\rangle _{w}}yl2,r2w{\displaystyle \langle l_{2},r_{2}\rangle _{w}}se pueden concatenar si y solo sir1=l2{\displaystyle r_{1}=l_{2}}y entonces tenemos:l1,r1wl2,r2w=l1,r2w{\displaystyle \langle l_{1},r_{1}\rangle _ {w}\cdot \langle l_ {2},r_ {2}\rangle _ {w}=\langle l_ {1},r_ {2}\rangle _ {w}}. Al instanciar una cláusula, donde un argumento consta de múltiples elementos deTV{\displaystyle T\cup V}, sus rangos deben concatenarse.

Por una palabraw=w1w2wnorte{\displaystyle w=w_{1}w_{2}\ldots w_{n}}, conwiT{\displaystyle w_{i}\in T}, la notación con puntos para rangos es:l,rw=w1wl1wlwr1wrwnorte{\displaystyle \langle l,r\rangle _{w}=w_{1}\ldots w_{l-1}\bullet w_{l}\ldots w_{r-1}\bullet w_{r}\ldots w_{n}}.

Reconocimiento de cadenas

Las cadenas de predicados que se reescriben representan restricciones que la cadena que se está probando debe cumplir (si es positiva) o, en el caso de predicados negativos, no cumplir. El orden de los predicados es irrelevante. Los pasos de reescritura consisten en reemplazar una restricción por cero o más restricciones más simples.

Al igual que las cláusulas LMG, las cláusulas RCG tienen el esquema general.A(incógnita1,...,incógnitanorte)α{\displaystyle A(x_{1},...,x_{n})\to \alpha }, donde en un RCG,α{\displaystyle \alpha }es o bien la cadena vacía o una cadena de predicados. Los argumentosincógnitai{\displaystyle x_{i}}Consisten en cadenas de símbolos terminales y/o símbolos de variables, que coinciden con patrones contra valores de argumentos reales como en LMG. Las variables adyacentes constituyen una familia de coincidencias contra particiones, de modo que el argumentoincógnitay{\displaystyle xy}, con dos variables, coincide con la cadena literalab{\displaystyle ab}de tres maneras diferentes:incógnita=ϵ, y=ab; incógnita=a, y=b; incógnita=ab, y=ϵ{\displaystyle x=\epsilon ,\ y=ab;\ x=a,\ y=b;\ x=ab,\ y=\epsilon }Esto daría lugar a tres instancias diferentes de la cláusula que contiene ese argumento.incógnitay{\displaystyle xy}.

Los términos predicados se presentan en dos formas: positivos (que producen la cadena vacía en caso de éxito) y negativos (que producen la cadena vacía en caso de fallo/si el término positivo no produce la cadena vacía). Los términos negativos se denotan igual que los positivos, con una barra superior, como enA(incógnita1,...,incógnitanorte)¯{\displaystyle {\overline {A(x_{1},...,x_{n})}}}.

La semántica de reescritura para RCG es bastante simple, idéntica a la semántica correspondiente de LMG. Dada una cadena de predicadoA(α1,...,αnorte){\displaystyle A(\alpha _{1},...,\alpha _{n})}donde los símbolosαi{\displaystyle \alpha _{i}}son cadenas terminales, si hay una reglaA(incógnita1,...,incógnitanorte)β{\displaystyle A(x_{1},...,x_{n})\to \beta }En la gramática con la que coincide la cadena predicada, la cadena predicada se reemplaza porβ{\displaystyle \beta }, sustituyendo las variables coincidentes en cadaincógnitai{\displaystyle x_{i}}.

Por ejemplo, dada la reglaA(incógnita,ayb)B(aincógnitab,y){\displaystyle A(x,ayb)\to B(axb,y)}, dóndeincógnita{\displaystyle x}yy{\displaystyle y}son símbolos variables ya{\displaystyle a}yb{\displaystyle b}son símbolos terminales, la cadena de predicadosA(a,abb){\displaystyle A(a,abb)}puede reescribirse comoB(aab,b){\displaystyle B(aab,b)}, porqueA(a,abb){\displaystyle A(a,abb)}partidosA(incógnita,ayb){\displaystyle A(x,ayb)}cuandoincógnita=a, y=b{\displaystyle x=a,\ y=b}. De manera similar, si hubiera una reglaA(incógnita,ayb)A(incógnita,incógnita) A(y,y){\displaystyle A(x,ayb)\to A(x,x)\ A(y,y)},A(a,abb){\displaystyle A(a,abb)}podría reescribirse comoA(a,a) A(b,b){\displaystyle A(a,a)\ A(b,b)}.

Una prueba/reconocimiento de una cadenaα{\displaystyle \alpha }se hace demostrando queS(α){\displaystyle S(\alpha )}produce la cadena vacía. Para los pasos de reescritura individuales, cuando son posibles múltiples coincidencias de variables alternativas, se considera cualquier reescritura que pueda llevar a que toda la prueba tenga éxito. Por lo tanto, si hay al menos una forma de producir la cadena vacía a partir de la cadena inicialS(α){\displaystyle S(\alpha )}La prueba se considera un éxito, independientemente de cuántas otras formas de fracasar existan.

Ejemplo

Los RCG son capaces de reconocer el lenguaje de índice no lineal.{www:w{a,b}}{\displaystyle \{www:w\in \{a,b\}^{*}\}}como sigue:

Sea x, y, y z símbolos de variables: S(incógnitayz)A(incógnita,y,z)A(aincógnita,ay,az)A(incógnita,y,z)A(bincógnita,by,bz)A(incógnita,y,z)A(ϵ,ϵ,ϵ)ϵ{\displaystyle {\begin{aligned}S(xyz)&\to A(x,y,z)\\A(ax,ay,az)&\to A(x,y,z)\\A(bx,by,bz)&\to A(x,y,z)\\A(\epsilon ,\epsilon ,\epsilon )&\to \epsilon \end{aligned}}} La prueba de abbababbabb es entonces

S(abbabbabb)A(abb,abb,abb)A(bb,bb,bb)A(b,b,b)A(ϵ,ϵ,ϵ)ϵ{\displaystyle S(abbabbabb)\Rightarrow A(abb,abb,abb)\Rightarrow A(bb,bb,bb)\Rightarrow A(b,b,b)\Rightarrow A(\epsilon ,\epsilon ,\epsilon )\Rightarrow \epsilon }

O bien, utilizando la notación de puntos más correcta para rangos:

S(abbabbabb)A(abbabbabb,abbabbabb,abbabbabb)A(abbabbabb,abbabbabb,abbabbabb){\displaystyle S(\bullet {}abbabbabb\bullet {})\Rightarrow A(\bullet {}abb\bullet {}abbabb,abb\bullet {}abb\bullet {}abb,abbabb\bullet {}abb\bullet {})\Rightarrow A(a\bullet {}bb\bullet {}abbabb,abba\bullet {}bb\bullet {}abb,abbabba\bullet {}bb\bullet {})}A(abbabbabb,abbabbabb,abbabbabb)A(ϵ,ϵ,ϵ)ϵ{\displaystyle \Rightarrow A(ab\bullet {}b\bullet {}abbabb,abbab\bullet {}b\bullet {}abb,abbabbab\bullet {}b\bullet {})\Rightarrow A(\epsilon ,\epsilon ,\epsilon )\Rightarrow \epsilon }

Para una serie de3norte{\displaystyle 3n}letras, hay(3norte+22)=(3norte+2)(3norte+1)2{\displaystyle {\binom {3n+2}{2}}={\frac {(3n+2)(3n+1)}{2}}}diferentes instancias de esa primera cláusula, pero solo la que haceincógnita,y,z{\displaystyle x,y,z}todonorte{\displaystyle n}Cada letra permite que la derivación alcanceϵ{\displaystyle \epsilon }.

Propiedades

Toda gramática libre de contexto (GLC) se puede convertir en una gramática de concatenación de rangos:

  • Para cada no terminalA{\displaystyle A}del CFG, el RCG tiene una aridad1{\displaystyle 1}predicadoA(incógnita){\displaystyle A(x)}.
  • Para cada regla CFGABdo{\displaystyle A\to BC}, el RCG tieneA(incógnitay)B(incógnita)do(y){\displaystyle A(xy)\to B(x)C(y)}.
  • Para cada regla CFGAa{\displaystyle A\to a}(dóndea{\displaystyle a}terminal), la RCG tieneA(a)ϵ{\displaystyle A(a)\to \epsilon }.

La intersección y la unión de dos lenguajes de concatenación de rangos son trivialmente lenguajes de concatenación de rangos:

  • ParaS{\displaystyle S}la intersección deA{\displaystyle A}yB{\displaystyle B}, tienesS(incógnita)A(incógnita)B(incógnita){\displaystyle S(x)\to A(x)B(x)}.
  • ParaS{\displaystyle S}la unión deA{\displaystyle A}yB{\displaystyle B}, tienesS(incógnita)A(incógnita){\displaystyle S(x)\to A(x)}yS(incógnita)B(incógnita){\displaystyle S(x)\to B(x)}.

Los lenguajes de concatenación de rango posiblemente negativo también son cerrados bajo el complemento de conjuntos.

Una consecuencia de lo anterior es que resulta indecidible si un lenguaje de concatenación de rangos (positivo) no es vacío, puesto que resulta indecidible si la intersección de dos lenguajes libres de contexto no es vacía. Por lo tanto, las gramáticas de concatenación de rangos no son generativas.

Referencias

  1. Boullier, Pierre (enero de 1998). Propuesta para una estructura sintáctica de procesamiento del lenguaje natural (PDF) (Informe técnico). Vol.  3342. INRIA Rocquencourt (Francia).
  2. Pierre Boullier (1999). "Números chinos, MIX, Scrambling y gramáticas de concatenación de rangos" (PDF) . Actas de la EACL . págs. 53–60 . Archivado del original (PDF) el 15 de mayo de 2003. 
  3. Eberhard Bertsch y Mark-Jan Nederhof (octubre de 2001). "Sobre la complejidad de algunas extensiones del análisis sintáctico RCG" (PDF) . Actas del Séptimo Taller Internacional sobre Tecnologías de Análisis Sintáctico (Pekín) . págs. 66–77 . 
  4. Laura Kallmeyer (2010). Parsing Beyond Context-Free Grammars . Springer Science & Business Media. p. 37. ISBN  978-3-642-14846-0.citando a Bertsch, Nederhof (2001) [ 3 ]