java - the - Stanford NER: AbstractSequenceClassifier vs NamedEntityTagAnnotation
stanford nlp github (0)
PREGUNTAS
¿Cómo cargo un archivo de propiedades personalizado usando AbstractSequenceClassifier? p.ej,
Máster / tDEGREE
MBA / tDEGREE
¿Cuáles son los beneficios / inconvenientes de cada enfoque? (AbstractSequenceClassifier vs NamedEntityTagAnnotation)
¿Hay alguna documentación / tutorial accesible en internet? Puedo jugar con el código de demostración y leer javadocs, pero un buen tutorial me ahorraría a mí y a muchos otros mucho tiempo.
Durante mi lectura de la documentación de Stanford NER, me encontré con dos ejemplos de Java.
NamedEntityTagAnnotation
El primero usa NamedEntityTagAnnotation. Esto me permite agregar mi propio archivo de propiedades para los datos de entrenamiento (usando regexner.mapping).
El código de la clave es el siguiente: Initialize Pipeline:
Properties props = new Properties();
props.put("annotators", "tokenize, ssplit, pos, lemma, ner, regexner, depparse, natlog, openie");
props.put("regexner.mapping", "mypath/mytraineddatacodes.properties");
pipeline = new StanfordCoreNLP(props);
Inicializar documento:
Annotation document = new Annotation(pass4);
pipeline.annotate(document);
Luego acceda a los tokens NER y cualquier otra información necesaria:
List<CoreMap> sentences = document.get(SentencesAnnotation.class);
for (CoreMap sentence : sentences)
{
for (CoreLabel token : sentence.get(TokensAnnotation.class))
{
currNeToken = token.get(NamedEntityTagAnnotation.class);
String word = token.get(TextAnnotation.class);
}
}
AbstractSequenceClassifier
Este es el método demostrado en el ejemplo de Stanford NERDemo.java. Parece que proporciona acceso mucho más profundo a la API, pero no sé cómo cargar mi archivo de propiedades personalizadas de datos entrenados.
Initialize Classifier (que pasa por alto el pipeline)
String serializedClassifier = "classifiers/english.all.3class.distsim.crf.ser.gz";
AbstractSequenceClassifier classifier = CRFClassifier.getClassifierNoExceptions(serializedClassifier);
Cargue el archivo para analizar:
byte[] encoded = Files.readAllBytes(p);
String s = new String(encoded);
String fileContents = s;
List<List<CoreLabel>> out = classifier.classify(fileContents);
for (List<CoreLabel> sentence : out)
{
for (CoreLabel word : sentence)
{
Log.getLogger().debug(word.word() + ''/'' + word.get(AnswerAnnotation.class) + '' '');
}
System.out.println();
}
Y listo para las carreras, excepto que no ha cargado mi archivo de propiedades personalizadas para datos entrenados.
PREGUNTAS
¿Cómo cargo un archivo de propiedades personalizado usando AbstractSequenceClassifier? p.ej,
Máster / tDEGREE
MBA / tDEGREE
¿Cuáles son los beneficios / inconvenientes de cada método?
¿Hay alguna documentación / tutorial accesible en internet? Puedo jugar con el código de demostración y leer javadocs, pero un buen tutorial me ahorraría a mí y a muchos otros mucho tiempo.