2016-06-24 24 views
0

Ich habe versucht, mit Stanford Core NLP herumspielen. Ich würde gerne mein eigenes NER-Modell trainieren. Aus den Foren auf SO und der offiziellen Website wird beschrieben, eine Property-Datei dazu zu verwenden. Wie würde ich das über die API tun?Training NER-Modell in Stanford-NLP

Properties props = new Properties(); 
props.setProperty("annotators", "tokenize, ssplit, pos, lemma, ner, parse, sentiment, regexner"); 
props.setProperty("regexner.mapping", "resources/customRegexNER.txt"); 

StanfordCoreNLP pipeline = new StanfordCoreNLP(props);  

String processedQuestion = "Who is the prime minister of Australia?" 

//Annotation annotation = pipeline.process(processedQuestion); 
Annotation document = new Annotation(processedQuestion); 
pipeline.annotate(document); 
List<CoreMap> sentences = document.get(SentencesAnnotation.class); 
for (CoreMap sentence : sentences) { 

    // To get the tokens for the parsed sentence 
    for (CoreMap tokens : sentence.get(TokensAnnotation.class)) {   
     String token = tokens.get(TextAnnotation.class); 
     String POS = tokens.get(PartOfSpeechAnnotation.class);  
     String NER = tokens.get(NamedEntityTagAnnotation.class);    
     String Sentiment = tokens.get(SentimentClass.class);    
     String lemma = tokens.get(LemmaAnnotation.class); 
  1. Wie & Wo ich die Prop-Datei hinzufügen zu tun?
  2. N-Gram-Tokenisierung (z. B. Premierminister als ein einzelnes Token betrachtet werden, später wird dieses Token für den POS, NER anstelle von zwei Token übergeben werden übergeben (Prime und Minister))?

Antwort

1

ich denke, es mit diesem Code arbeiten kann:

val props = new Properties() 
    props.put("annotators", "tokenize, ssplit, pos, lemma, ner, regexner") 
    props.put("ner.model", "/your/path/ner-model.ser.gz"); 
    val pipeline = new StanfordCoreNLP(props)