2012-04-16 68 views
0

命令我們正在設計一個可以在這個格式處理不準確的自然語言字符串

command context 

上下文是從約200元組的話,如列表中定義的接受命令的系統:

physical therapy 
cardiac 
physician visit 
hospital inpatient 
hospital outpatient 
etc. 

我們希望系統能夠糾正用戶錯誤,如拼寫錯誤,但也要理解「物理治療」與「物理治療師」相同,並且還要接受同義詞

最後,如果它不完全匹配,應該要求用戶的最佳匹配

這是我在想這樣做的之間的歧義:

  1. 幹上下文的單詞和傳入查詢都
  2. 刪除/從查詢
  3. 檢查隔離命令串並糾正任何字謎(不過:這隻佔地面積拼寫錯誤一類)
  4. 尋找一個確切的詞匹配
  5. 查找

這並不覺得自己是一個巧妙的解決辦法「接近的比賽」,特別是步驟3和5

什麼是更好/更簡單的方法來做到這一點?任何圖書館都可以在C#中做到這一點,獎金。

Lucene可以這樣做嗎?任何指導讚賞。

謝謝!

回答

1

對於您的目的而言這可能太不精確,但Soundex是一種常用算法,用於判斷兩個單詞「聽起來相似」。

+0

是的。 Soundex或Metaphone。 http://en.wikipedia.org/wiki/Metaphone – 2012-04-17 04:38:46

0

我認爲Lucene最好只適用於步驟4和5,因爲Lucene目前只支持「glob」意義上的近似匹配(通配符 - 「?」用於匹配單個字符,「*」用於匹配多個字符)。

有一整套有關近似匹配的文獻 - 我將從agrep工作開始,並從那裏開始(但部分原因是因爲我熟悉agrep)。