tag - ¿Cómo etiquetar NER y POS un texto pre-tokenizado con Stanford CoreNLP?
stanford nlp tag list (2)
Estoy usando el grabador de Entidades Nombradas por CoreNLP (NER) de Stanford y el etiquetador Part of Speech (POS) en mi aplicación. El problema es que mi código tokeniza el texto de antemano y luego necesito etiquetar NER y POS cada token. Sin embargo, solo pude descubrir cómo hacerlo utilizando las opciones de línea de comandos pero no programáticamente.
¿Puede alguien decirme cómo programáticamente puedo NER y POS etiquetar texto pretokenizado utilizando CoreNLP de Stanford?
Editar:
De hecho, estoy usando las instrucciones NER y POS individuales. Así que mi código fue escrito como se indica en los tutoriales que figuran en los paquetes NER y POS de Stanford. Pero tengo CoreNLP en mi classpath. Así que tengo CoreNLP en mi classpath pero usando los tutoriales en los paquetes NER y POS.
Editar:
Acabo de encontrar que hay instrucciones sobre cómo se pueden establecer las propiedades para CoreNLP aquí http://nlp.stanford.edu/software/corenlp.shtml, pero me gustaría que hubiera una manera rápida de hacer lo que quisiera con Stanford NER y Taggers de POS, ¡así que no tengo que recodificar todo!
Si establece la propiedad:
tokenize.whitespace = true
luego, la tubería CoreNLP se convertirá en tokenización en espacios en blanco en lugar de la tokenización PTB predeterminada. Es posible que también desee configurar:
ssplit.eolonly = true
para que solo dividas frases en caracteres nuevos.
Para ejecutar programáticamente un clasificador sobre una lista de tokens que ya ha obtenido a través de otros medios, sin un inconveniente como pegarlos junto con espacios en blanco y volver a formar tokens, puede usar el método Sentence.toCoreLabelList
:
String[] token_strs = {"John", "met", "Amy", "in", "Los", "Angeles"};
List<CoreLabel> tokens = edu.stanford.nlp.ling.Sentence.toCoreLabelList(token_strs);
for (CoreLabel cl : classifier.classifySentence(tokens)) {
System.out.println(cl.toShorterString());
}
Salida:
[Value=John Text=John Position=0 Answer=PERSON Shape=Xxxx DistSim=463]
[Value=met Text=met Position=1 Answer=O Shape=xxxk DistSim=476]
[Value=Amy Text=Amy Position=2 Answer=PERSON Shape=Xxx DistSim=396]
[Value=in Text=in Position=3 Answer=O Shape=xxk DistSim=510]
[Value=Los Text=Los Position=4 Answer=LOCATION Shape=Xxx DistSim=449]
[Value=Angeles Text=Angeles Position=5 Answer=LOCATION Shape=Xxxxx DistSim=199]