2013-04-03 23 views
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中。

任何見解將不勝感激:)

回答

0

解決:我沒有文檔之間結算自適應數據。愚蠢的錯誤代表我!