Я использую CoreNLP для извлечения именованного объекта и столкнулся с проблемой. Проблема заключается в том, что всякий раз, когда именованный объект состоит из более чем одного токена, такого как "Han Solo", аннотатор не возвращает "Han Solo" как единую именованную сущность, а как два отдельных объекта "Han" "Solo",.
Можно ли получить именованный объект как один токен? Я знаю, что могу использовать CRFClassifier с classifyWithInlineXML до такой степени, но для моего решения требуется, чтобы я использовал CoreNLP, так как мне также нужно знать номер слова.
Ниже приведен код, который у меня есть до сих пор:
Properties props = new Properties();
props.put("annotators", "tokenize,ssplit,pos,lemma,ner,parse");
props.setProperty("ner.model", "edu/stanford/nlp/models/ner/english.conll.4class.distsim.crf.ser.gz");
pipeline = new StanfordCoreNLP(props);
Annotation document = new Annotation(text);
pipeline.annotate(document);
List<CoreMap> sentences = document.get(SentencesAnnotation.class);
for (CoreMap sentence : sentences) {
for (CoreLabel token : sentence.get(TokensAnnotation.class)) {
System.out.println(token.get(NamedEntityTagAnnotation.class));
}
}
Помоги мне Оби-Ван Кеноби. Ты моя единственная надежда.