我有以下情况:
字符串a=“网络爬虫是自动浏览万维网因特网的计算机程序”;字符串b=“网络爬虫计算机程序浏览万维网”;
有没有什么想法或标准算法来计算相似度百分比?
例如,在上面的情况下,通过人工查找估计的相似度应该是90%++。
我的想法是对两个字符串进行标记化,并比较匹配的标记数。类似于(7个令牌/1 0个令牌)* 100。但是,当然,对于这种方法,它根本不是有效的。比较匹配的字符数量似乎也没有效果...
有谁能给点指导吗?
以上是我的项目,抄袭分析器的一部分。
因此,匹配的单词将完全相同,没有任何同义词。
在这种情况下,唯一的问题是如何计算相当准确的相似度百分比。
非常感谢你的帮助。
发布于 2010-03-07 00:34:18
正如Konrad指出的,你的问题在很大程度上取决于你所说的“相似”是什么意思。总的来说,我想说下面的指导原则是有用的:
你可以改进技术以包括词形、句子词序、同义词列表等之间的差异。尽管你永远不会得到完美的结果,但你有很多调整的可能性,我相信一般来说,你可能会得到相当有价值的相似性度量。
发布于 2010-03-07 00:01:47
这取决于你对相似性的看法。从形式上讲,您需要为您认为“相似”的字符串定义一个度量,以便对它们应用统计信息。通常,这是通过假设问题来完成的:“第一个字符串是引入错误(例如,通过键入它)的第一个字符串的修改版本的可能性有多大?”
对于这种相似性(或者更确切地说,相反的),一个非常简单但有效的度量是两个字符串的edit distance,可以使用动态编程来计算,这通常需要O(nm)时间,其中n和m是字符串的长度。
根据您的使用情况,可能需要更详细的度量(或完全不相关的度量,如soundex metric)度量。
在你的例子中,如果你直接应用一个令牌匹配(即仅仅是单词计数),你永远不会得到> 90%的相似度。要以有意义的方式获得如此高的相似度,需要高级语义分析。如果你完成了这项工作,请发表这篇论文,因为这是一个很大程度上尚未解决的问题。
发布于 2010-03-07 00:10:29
我赞同康拉德·鲁道夫已经说过的话。
其他人可能会推荐不同的距离度量。我要说的就是这些,但更多的是看语义匹配的问题。
鉴于您似乎在寻找什么,我建议您应用一些标准的文本处理方法。所有这些都有潜在的缺陷,所以我将它们按应用和难做的顺序列出
,of等。
https://stackoverflow.com/questions/2393082
复制相似问题