如何检查2个单词是否具有相同的基数或词干?

时间:2013-10-19 17:27:57

标签: c#

我正在尝试合并具有相同基础的单词。 示例:

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

  • 放弃
  • 放弃

起初我使用了

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

word.dll获取单词的同义词。但我意识到我不想仅仅将同义词合并,而是将具有相同基础的单词合并。

如果2个单词具有相同的基数,我可以使用word.dll或任何dll可以使用的任何函数吗?

2 个答案:

答案 0 :(得分:2)

您可能正在寻找Inflector这是一个开源库。

  

它与.Net 3.5兼容

这是 sample code

答案 1 :(得分:1)

英语有很多例外,但使用你自己的小功能处理几个最常见的场景将照顾90%的情况。

似乎很少有常见的情景:

a)过去时:通过添加后缀“ed”

b)复数:添加“s”,“es”,

c)制作形容词的常见后缀:

d)副词的常见后缀

e)用于将动词转换为名词

的常见后缀

因此,通过从单词中删除常用后缀,我们可以尝试合并产生相同基数的单词。

对于不太常见的场景,可能是,我们可以通过一些字符串类似的算法来了解字符串是否相似。比如使用Levenshtein距离实现:

using LINQ

请参阅以下stackoverflow问题:

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