我是OpenNLP的新手。我使用OpenNLP从句子中查找位置的名称。我的输入字符串是“意大利在CIA案件中赦免美国上校”。我在结果集中找不到“意大利”字样。我怎么解决这个问题。提前谢谢!
try {
InputStream modelIn = new FileInputStream("en-token.bin");
TokenizerModel tokenModel = new TokenizerModel(modelIn);
modelIn.close();
Tokenizer tokenizer = new TokenizerME(tokenModel);
NameFinderME nameFinder =
new NameFinderME(
new TokenNameFinderModel(new FileInputStream("en-ner-location.bin")));
String tokens[] = tokenizer.tokenize(documentStr);
Span nameSpans[] = nameFinder.find(tokens);
for( int i = 0; i<nameSpans.length; i++) {
System.out.println("Span: "+nameSpans[i].toString());
}
}
catch(Exception e) {
System.out.println(e.toString());
}
答案 0 :(得分:0)
opennlp结果取决于创建模型的数据。 sourceforge上的en-ner-location.bin文件可能不包含对您的数据有意义的样本。此外,使用chunker或POS标记器提取名词或名词短语(NNP)不会仅与位置隔离。因此,您的问题的答案是:模型不会考虑您数据中的每个案例,这就是您不会对此特定句子产生影响的原因。顺便说一下,NER从来都不是完美的,总会带来一定程度的误报和漏报。