0
我使用OpenNLP 1.5.2與CDH 4並有一個不尋常的問題。使用OpenNLP(tNER)與Hadoop不返回跨度
當我運行我的jUnit測試時,一切都通過了。 當我以localJobRunner模式運行(psuedo或full模式)時,許多名稱並不總是被識別出來,並且當我期待某些事情時,我有'空白'跨度返回。
是的,在本地/ psuedo /完整模式下找不到的名稱在我的jUnit測試中!
每次撥打電話時,我都會一次輸入一個句子。我將這個句子轉化爲一個String [],然後使用這些標記找到。
什麼我打電話的一個例子是:
result = Parser.tokenizedNamedEntityRecognition("PK FRESH IGA PLUS LI PORT KENNEDY WA", nameFinder);
assertEquals("IGA", result);
其中的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);
當通過調用我的地圖方法,它並不總是提取名稱。我會說約20%的失敗率。
許多訓練有素的一句話的一個例子是:
PK FRESH <START:name> IGA <END> PLUS LI PORT KENNEDY WA
我不明白爲什麼,當我打電話用相同型號的相同方法,它在本地/僞運行時,有時會工作/完整模式,但始終在jUnit中。
任何見解將不勝感激:)