2

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

  • 事故
  • 偶然
  • 偶然
  • 事故

或者

  • 放弃
  • 放弃

起初我使用

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

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

如果两个单词具有相同的基数,是否有任何我可以使用的函数word.dll或任何可以返回的函数?dll

4

2 回答 2

2

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

它与 .Net 3.5 兼容

这是它的示例代码

于 2013-10-19T17:30:34.877 回答
1

英语有很多例外,但使用您自己的小功能处理少数最常见的场景将处理 90% 的情况。

似乎很少有常见的场景:

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

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

c) 作形容词的常用后缀:

d) 副词的通用后缀

e) 用于将动词转换为名词的通用后缀

因此,通过从单词中删除共同的后缀,我们可以尝试合并导致相同基数的单词。

对于不那么常见的场景,可能是,我们可以通过一些字符串相似算法来知道字符串是否相似。就像使用 Levenshtein 距离实现:

使用 LINQ

另请参阅以下 stackoverflow 问题:

是否有任何为 C# 编写的模糊搜索或字符串相似函数库?

于 2013-10-19T17:54:16.743 回答