在C#中如何查找两个字符串中相似的单词

4

我有一个包含单词的字符串,需要像下面这样匹配,它是恒定的,而另一个可更改的字符串可能包含来自该字符串 's' 的单词。

string s = "run fun play game do work click type";

string g = "he will be running. He is playing a game by clicking the mouse";

我想要能够匹配这些单词并使它们在 Windows 表单应用程序文本框中加粗。例如,runRunning 匹配,因此 running 将被加粗,以此类推。:-/ 有什么想法吗?

你是在寻找运行,还是比较两个字符串中的单词以查看是否有匹配项? - rie819
这是一个经典的Levenshtein距离问题:http://en.wikipedia.org/wiki/Levenshtein_distance 文章中包含伪代码。 - Gayot Fow
不完全是这样。在他的例子中:Run -> Running 会有很大的距离(增加4) 然而Fun -> Run 距离较小。它们并不相关。 - Haedrian
我编辑了我的问题以澄清它,你能否请审核一下? - im5
根据所提出的问题,F(un)= R(un)。但更重要的是,您的词干方法在棕色和布朗运动中失败了。 - Gayot Fow
1个回答

6

我会使用词干提取器(如波特词干提取器),使用split(' ')拆开字符串,然后逐个进行比较。将匹配的单词变为加粗格式。

foreach (string t1 in term1.split(' '){

foreach (string t2 in term2.split(' '){

if (Stemmer.Stem(t1).equals(Stemmer.Stem(t2)){

//do whatever here

}

}    

    }

关于 Porter Stemmer 的源代码:

http://tartarus.org/martin/PorterStemmer/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接