使用OpenNLP查找位置名称

时间:2013-04-23 02:51:07

标签: java location opennlp

我是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());
}

1 个答案:

答案 0 :(得分:0)

opennlp结果取决于创建模型的数据。 sourceforge上的en-ner-location.bin文件可能不包含对您的数据有意义的样本。此外,使用chunker或POS标记器提取名词或名词短语(NNP)不会仅与位置隔离。因此,您的问题的答案是:模型不会考虑您数据中的每个案例,这就是您不会对此特定句子产生影响的原因。顺便说一下,NER从来都不是完美的,总会带来一定程度的误报和漏报。