En lingüística , la agregación es una subtarea de la generación de lenguaje natural , que implica la fusión de constituyentes sintácticos (como oraciones y frases ). A veces, la agregación se puede realizar a nivel conceptual.
Un ejemplo simple de agregación sintáctica es fusionar las dos oraciones John went to the shop y John bought an apple en la oración única John went to the shop and bought an apple .
La agregación sintáctica puede ser mucho más compleja que esto. Por ejemplo, la agregación puede incrustar uno de los constituyentes en el otro; por ejemplo, podemos agregar John went to the shop y The shop was closed en la oración John went to the shop, which was closed .
Desde una perspectiva pragmática, la agregación de oraciones suele sugerir al lector que estas oraciones están relacionadas entre sí. Si este no es el caso, el lector puede confundirse. Por ejemplo, alguien que lea John was to the shop and bought an apple puede inferir que la manzana fue comprada en la tienda; si este no es el caso, entonces estas oraciones no deberían agregarse.
Los algoritmos de agregación deben hacer dos cosas:
La primera cuestión, decidir cuándo agregar, es poco comprendida. Las decisiones de agregación dependen ciertamente de las relaciones semánticas entre los constituyentes, como se mencionó anteriormente; también dependen del género (por ejemplo, los textos burocráticos tienden a ser más agregados que los manuales de instrucciones). Probablemente deberían depender de la estructura retórica y del discurso. [1] El nivel de alfabetización del lector también es probablemente importante (los lectores deficientes necesitan oraciones más cortas). [2] Pero no tenemos un modelo integrado que reúna todos estos factores en un solo algoritmo .
En relación con la segunda cuestión, se han realizado algunos estudios sobre diferentes tipos de agregación y cómo deben llevarse a cabo. Harbusch y Kempen describen varias estrategias de agregación sintáctica. En su terminología, John fue a la tienda y compró una manzana es un ejemplo de reducción de conjunción hacia delante [3]. Se sabe mucho menos sobre la agregación conceptual. Di Eugenio et al. muestran cómo se puede realizar la agregación conceptual en un sistema de tutoría inteligente y demuestran que realizar dicha agregación hace que el sistema sea más efectivo (y que la agregación conceptual tiene un impacto mayor que la agregación sintáctica). [4]
Lamentablemente, no hay mucho software disponible para realizar agregaciones. [ cita requerida ] Sin embargo, el sistema SimpleNLG [5] incluye soporte limitado para agregaciones básicas. Por ejemplo, el siguiente código hace que SimpleNLG imprima El hombre tiene hambre y compra una manzana .
SPhraseSpec s1 = nlgFactory . createClause ( "el hombre" , "tener" , "hambriento" ); SPhraseSpec s2 = nlgFactory . createClause ( "el hombre" , "comprar" , "una manzana" ); NLGElement resultado = new ClauseCoordinationRule (). apply ( s1 , s2 ); System . out . println ( realiser . realiseSentence ( resultado ));