VISITAS:

viernes, 20 de enero de 2012

Segmentación de sentencias (5)

En la mayoría de los lenguajes escritos, las sentencias se separan con los signos de puntuación. A pesar de ello, las reglas de puntuación no siempre están definidas claramente y además, no siempre se siguen estrictamente.
Además, en función del idioma, se utilizan distintos signos de puntuación para delimitar las sentencias y subsentencias. Por ejemplo, el español comienza las sentencias interrogativas con el signo ¿, mientras que el inglés no.
Parece que en general, el problema de la segmentación de sentencias es un problema de menor dificultad que el de la segmentación de palabras o tokenización.
Los signos de puntuación más utilizados son el punto, la coma, la interrogación, la exclamación, el punto y coma, los dos puntos.
Sin embargo, un punto puede utilizarse también como separador decimal en un número (o separador de miles, dependiendo del idioma), o como fin de una abreviatura, o incluso como una abreviatura al final de una sentencia. Los puntos suspensivos se pueden utilizar para terminar una sentencia, pero también en mitad de una sentencia. También a veces un paréntesis delimita una sentencia.
Por tanto, no podemos considerar el problema de la segmentación de sentencias como un problema trivial de fácil resolución, ni mucho menos.
Veamos ahora las técnicas que se pueden aplicar para resolver este problema.
Segmentación de sentencias con signos de puntuación
La mayoría de las aplicaciones NLP utilizan el punto, la interrogación y la exclamación como separadores de sentencias, definiéndose una sentencia como la que empieza por una letra mayúscula y que acaba con un signo de puntuación.
La utilización de pocos signos de puntuación como separadores da lugar a frases más largas (que también serán más difíciles de analizar por el NLP), pero reduce la casuística. Sin embargo, ampliando la cantidad de signos de puntuación utilizados da lugar a frases más cortas, pero con una casuística y complicación mayores.
El principal problema de esta técnica es el uso ambiguo de los distintos signos de puntuación. Por ejemplo, un punto puede indicar el final de una sentencia, un separador decimal en un número, una abreviatura en mitad de una sentencia o incluso una abreviatura al final de una sentencia.
El problema es desambiguar estos posibles usos.
Utilización del contexto
Podemos utilizar el carácter siguiente al signo de puntuación. Si se trata de una letra minúscula, entonces no estamos ante un final de sentencia. Si es mayúscula no se puede tomar una decisión, ya que podría tratarse de una abreviatura. En estos casos habría que analizar por ejemplo las 3 ó 4 palabras anteriores al signo de puntuación.
En general, se pueden analizar distintos contextos alrededor del signo de puntuación para determinar si se trata o no de un separador de sentencia:
  • uso de mayúsculas y minúsculas (como se ha comentado ya)
  • part of speech (por ej. Universidad de S. Antonio)
  • longitud de las palabras antes y después del punto
  • léxico de las palabras antes y después del punto
  • prefijos y sufijos
  • tipos de abreviaturas (Sr. no aparecerá al final de una frase nunca)
  • pronombres (después de un punto indican comienzo de frase)
Utilización de reglas
La utilización de reglas combinadas con listas de abreviaturas, excepciones, etc puede dar muy buenos resultados. El problema es que estas reglas suelen estar muy ligadas a un corpus y no suelen ser aplicables a otros corpus.
No obstante la utilización de estas "gramáticas" es muy efectiva habitualmente ya que puede utilizar algunos de los criterios de contexto mencionados en el apartado anterior.
Algoritmos de aprendizaje
Se han hecho algunos experimentos utilizando algoritmos de aprendizaje, sobre todo árboles de decisión, para resolver el problema de la segmentación de sentencias. Se utilizaron como variables las características contextuales de las palabras anterior y posterior al punto (longitud de la palabra, tipo de abreviatura, mayúscula/minúscula, etc).
Los resultados han sido muy satisfactorios en general, aunque ha sido necesario un corpus muy grande de entrenamiento. El problema aquí es que manualmente hay que delimitar las sentencias para que el sistema pueda aprender.

Y con esta entrada termino el tema relacionado con preprocesado del texto. Quizás un tema que no aporta mucho al NLP, pero que es imprescindible hacerlo muy cuidadosamente para que las siguientes etapas que iremos viendo puedan hacer su labor correctamente.








No hay comentarios:

Publicar un comentario