tagger tag stanford spanish software recognition pos framework edu nlp stanford-nlp named-entity-recognition pos-tagger

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]