2012-04-23 57 views
1

我正在爲我的一個項目嘗試apache打開NLP,我的要求是從電子郵件內容中檢測名詞並檢查我們的客戶數據庫(此數據庫由個人名稱,組織名稱等組成和我的搜索引擎是Solr基地)。apache openNLP chuker/POS名詞檢測

對於普通英語名詞,默認訓練模型可以正常工作(對於大多數情況),但 其中一個棘手的要求是,我們的企業組織有縮寫,如OK,LET等,因此在少數情況下我需要考慮OK,LET等作爲名詞。

舉個例子 1)「發送一些項目讓,請期待延誤付款」 2)「讓我們去聚會」

在#1我會考慮讓儘可能名詞和#2例LET不是名詞。

如果我能達到這個要求,我可以在搜索引擎中減少大量的誤報。

任何幫助,高度讚賞。

+0

爲什麼不在處理後過濾掉壞的東西呢? – dfb 2012-04-23 03:06:43

+0

我的客戶數據索引在Solr和傳入的電子郵件內容搜索索引作爲自由文本搜索,客戶數據每天都在變化....我不知道我是否完全得到您的建議....但我想建立一些規則就像在掃描後只考慮名詞基礎命中(忽略非名詞基礎命中) – Rushik 2012-04-23 03:28:23

+0

在你的例子中,儘管LET仍然是一個名詞。你希望它被認爲不是一個名詞,因爲它是大寫的? – dfb 2012-04-23 03:50:54

回答

2

製作一個字典的特殊名詞,並執行字典爲基礎的提取作爲後處理步驟。基於字典的提取應考慮小寫字母和大寫字母之間的區別,特別是對於那些爲縮寫詞的條目。

實施詞典查找的術語:

  • 只要所討論的實體是單個令牌(或僅由每個令牌的預定義,小的最大數目M),實施字典作爲HashSet<String>,tokenising文本,使查找窗口中的散列每個令牌(和最多M個令牌組)應該很好地工作

  • 如果你正在處理的很長的實體,或者如果標記化一個問題,使用一個搜索關係o r有限狀態機實現字典是明智的。

最後,一如既往地與NLP,你將需要看看效果的顯著樣品,以確定任何進一步的問題。根據實體列表中的歧義級別,您可能需要通過在區分大小寫的字典查詢之上添加啓發式或統計/基於ML的決策機制來進一步優化檢測方法。

+0

謝謝,但我認爲我的主要問題不是大寫/小寫,問題是在各種情況下考慮」讓「的含義(類似於」讓「我有很多其他條款).....我仍然不確定字典庫方法在這裏會有幫助,但讓我閱讀一些關於字典的更多細節,然後再回來....再次感謝。 – Rushik 2012-04-23 05:25:45

+1

@Rushik我明白,你想要使用一種複雜的方法來「理解」(不管那意味着什麼)上下文,並根據它來決定「let」是動詞還是專有名詞。但這不僅非常複雜,而且還需要大量的評估和改進。獲得準確性最直接的方法是利用這樣一個事實,即首字母縮寫詞大部分時間*是大寫的,動詞不會。 – jogojapan 2012-04-23 05:35:31

+0

是的,我認爲你是對的,我只是嘗試了NLP的standford版本,正如你所提到的那樣,它可以把「LET」當作名詞和「let」作爲動詞......但是我沒有得到與apache POS相同的結果,可能是我會創建詞典,因爲你建議實現相同...謝謝 – Rushik 2012-04-23 06:09:31