使用OpenNLP (tNER)与Hadoop不返回跨度



我正在使用OpenNLP 1.5.2与CDH 4,并有一个不寻常的问题。

当我运行我的jUnit测试时,一切都通过了。当我在localJobRunner模式(psuedo或full模式)下运行时,许多名称并不总是被识别,当我期待某些东西时,我有'blank' span返回。

是的,在本地/psuedo/full模式下找不到的名称在我的jUnit测试中!

每次我打电话时,我一次传递一个句子。我将句子标记为String[],然后使用这些标记来查找。

我所说的一个例子是:

result = Parser.tokenizedNamedEntityRecognition("PK FRESH IGA PLUS LI PORT KENNEDY WA", nameFinder);
assertEquals("IGA", result);

Where nameFinder是:

InputStream modelIn;         
try {
  modelIn = new FileInputStream(System.getProperty("user.home") + "pathToModel" + MRConstants.c_namedEntityRecognitionModelFile);
} catch (FileNotFoundException e) {
  fail("fail message here");
}
NameFinderME nameFinder = new NameFinderME(new TokenNameFinderModel(modelIn));

在我调用的方法中,我正在做:

String tokens[] = sentence.split(MRConstants.c_singleSpace);
Span nameSpans[] = nameFinder.find(tokens);

当通过我的map方法调用时,它并不总是提取名称。我认为不合格率约为20%。

一个训练过的句子的例子是:

PK FRESH <START:name> IGA <END> PLUS LI PORT KENNEDY WA

我不太确定为什么,当我用相同的模型调用相同的方法时,它有时在本地/psuedo/full模式下运行时有效,但总是在jUnit中。

SOLVED:我没有清除文档之间的自适应数据。我犯了个愚蠢的错误!

相关内容

  • 没有找到相关文章

最新更新