2009-08-12 8 views
6

alguna recomendación para lenguajes/librerías para convertir frase como:Declaraciones Procesamiento inglés

"X topé Y, que a su vez dio una patada Z."

a

  1. X: Bumped
  2. Y: fue golpeado, pateado Z
+0

X: Fue golpeado debería decir X: golpeado – Ricket

+2

No tengo idea sobre nlp, pero X no fue golpeado en la oración? Golpeó Y. –

Respuesta

7

Le sugiero que utilice el Analizador de Stanford (http://nlp.stanford.edu/software/lex-parser.shtml), que es de código abierto y relativamente simple, ya que estas cosas van. Con él, puede extraer un análisis de dependencia tipado. Un análisis sintáctico de una oración de dependencia, básicamente, se descompone una sentencia en un conjunto de relaciones binarias r(B, A), donde la palabra A depende gramaticalmente en la palabra B.

Tome su condena

X chocó Y, que a su vez dio una patada Z.

En esta oración, tanto X como Y dependen de bumped para obtener su relación gramatical en esta oración. El Analizador de Stanford extraería las siguientes relaciones para ellos:

nsubj(bumped, X) 
dobj(bumped, Y) 

Esto significa que el tema de la topado es X y el objeto directo de golpeado es Y. A continuación, puede utilizar esta información para hacer una relación gramatical: bumped(X, Y). Del mismo modo, el analizador de Stanford extrae las siguientes relaciones para el resto de la frase:

nsubj(kicked, who) 
rcmod(Y, kicked) 
dobj(kicked, Z) 

En este caso, usted tiene el tema de la patada ser "que", con Y como el rcmod (modificador de la cláusula relativa). No estoy seguro de cuál es el objetivo de su sistema, pero probablemente encontrará que necesita construir un conjunto de reglas de forma manual para cubrir situaciones. En este caso, su regla podría equiparar el rcmod con el nsubj para producir kicked(Y, Z).

Para obtener más información sobre el uso de las dependencias de tipo Stanford Parser, hay un excelente tutorial sobre el tema en el sitio web de Stanford Parser (http://nlp.stanford.edu/software/dependencies_manual.pdf).

1

El Stanford Analizador según lo sugerido por ealdent haría el trabajo, yo preferiría codificarlo como:

  • Bump (X, Y, Pasado)
  • Kick (Y, Z, Pasado)

Un etiquetador POS también podría funcionar, pero la frase es complicada ("quién en turno").

+0

Anotar la relación para reflejar el tiempo sería bueno, solo estaba dando un ejemplo. Es posible que desee agregar otras anotaciones (como el índice en la oración, parte del discurso), también. Un etiquetador de POS le daría las etiquetas POS en orden, pero tendría que idear reglas que determinen si algo es un objeto directo o un tema, y ​​eso rápidamente se volverá demasiado complicado a menos que sea un adicto a las reglas sintácticas . – ealdent

0

Además del analizador de Stanford, RASP es una posibilidad también: puede producir listas de relaciones gramaticales como parte de su salida. Ver this question.

0

una alternativa comercial multilingüe: GlobalNLP

0

Parece que usted está interesado en la identificación de los roles semánticos en la frase. Las herramientas de SRL etiquetan las entidades con sus roles correspondientes. Puede jugar con el demo de una de las herramientas.

En la relación topado, X está etiquetado como A0 (agente) e Y está etiquetado como A1 (paciente).

Cuestiones relacionadas