2013-10-19 97 views
2

我試圖合併具有相同基數的單詞。 例子:如何檢查兩個單詞是否具有相同的基礎或詞幹?

  • 事故
  • 意外
  • 意外
  • 事故

  • 放棄
  • 拋棄
  • 放棄

起初我用

Word.Application().SynonymInfo[myWord, Word.WdLanguageID.wdEnglishUS]; 

word.dll得到一個單詞的同義詞。但我意識到我不想合併只有同義詞,但具有相同基礎的單詞。

是否有任何功能可以使用從word.dll或任何dll如果2個單詞具有相同的基地將返回?

+3

「拋棄」不是「拋棄」的代名詞...... – BartoszKP

+1

你需要看看看起來似乎是「同義詞」的定義。 –

+0

我知道,我注意到它不是同義詞,這就是爲什麼我要檢查相同的基礎。 – Marc

回答

2

您可能正在尋找Inflector這是一個開源庫。

它是由NET 3.5的兼容

這裏是一個sample code它。

+0

基於這個問題http://stackoverflow.com/questions/8856347/how-to-know-if-two-words-have-the-same-base,它不適用於動詞。是對的嗎? – Marc

+0

@Marc: - 是的。您也可以從這裏獲得一些幫助: - http://cid-net.googlecode.com/svn/trunk/src/Cid.Mvc/Inflector.cs –

+1

謝謝!它看起來不錯,我會試試 – Marc

1

英語語言有很多例外情況,但使用您自己的小功能照顧少數幾個最常見的情況會照顧90%的情況。

這似乎是有幾個常見的場景:

一)過去式:通過添加後綴 「ED」

B)複數形式:通過增加 「S」, 「ES」,

c)中共同後綴製備形容詞:

d)共同後綴副詞

E)共同後綴用於轉換動詞與noun

因此,通過從單詞中刪除通用後綴,我們可以嘗試合併導致相同基數的單詞。

對於不常見的場景,可能是我們可以通過一些字符串類似的算法來知道字符串是否相似都不是。喜歡用Levenshtein距離實現:

using LINQ

請看下面的計算器問題也:

Are there any Fuzzy Search or String Similarity Functions libraries written for C#?

+0

謝謝你,不錯的鏈接 – Marc

相關問題