2016-05-23 51 views
0

我的應用程序要求我能夠比較單詞並找出它們是否是同義詞,而不考慮時態。例如,'complete','finish'返回true,'completed','finish'也返回true。不管時態如何識別或查找同義詞?

我嘗試過敘詞表Altavista(http://thesaurus.altervista.org/),但它無法滿足緊張條件。

我考慮過這個問題,但這並不能解決問題,因爲它經常將單詞修飾爲非字典單詞。

是否存在滿足我的要求的現有API? (我試圖追查Bing Synonyms API,但它似乎不再支持)

是否有任何方法可以將兩個API結合起來以獲得期望的結果(一個用於「標準化」單詞時態,另一個用於檢查同義詞條件)

我在C#中工作,但對任何解決方案都開放。

感謝

回答

0

我寧願專注於解決不是其名稱和所有者。基本上,邏輯應該是有三個表:

字(ID,字)

word_forms(ID,word_id,表格)

同義詞(word_id1,word_id2

而且你可以用這種方式選擇同義詞:

select 1 
from words w1 
join word_forms wf1 
on w1.id = wf1.word_id and ((w1.word = 'completed') or (wf1.form = 'completed')) 
join synonyms 
on (w1.id = synonyms.word_id1) or (w1.id = synonyms.word_id2) 
join words w2 
on (w2.id = synonyms.word_id1) or (w2.id = synonyms.word_id2) 
join word_forms 
on w2.id = wf2.word_id and ((w2.word = 'finish') or (wf2.form = 'finish')) 
limit 0, 1 

如果這返回1,那麼它們是同義詞,否則它們不知道是同義詞。您需要將大型數據庫收集到此表單中才能完成此工作。

0

有什麼辦法來兩個API結合起來,得到期望的結果(一到 「正常化」字緊張,另一個檢查同義詞條件)?

是的 - 你想要一個lemmatizer。它就像一個詞幹,除了它會給你詞典中出現的實際單詞詞條。這裏似乎很受C#歡迎:http://lemmatise.ijs.si/Software/Version3。或者,如果你想要一個API,google搜索「lemmatization API」會發現很多看起來很有希望的事情。