【发布时间】:2011-08-13 05:45:33
【问题描述】:
我正在做一个 Java 项目,我必须在其中制作一个文本相似性程序。我希望它获取 2 个文本文档,然后将它们相互比较并获得相似度。它们之间有多么相似。
我稍后会放置一个已经存在的数据库,该数据库可以找到单词的同义词并查看文本以查看文本文档作者是否只是将单词更改为其他同义词而文本完全相同.向上或向下移动 paragrafs 也是如此。 是的,因为它是一个抄袭程序......
我想听听你们会推荐什么样的算法。
通过查看这里和其他地方,我发现了 Levenstein 和 Cosine 的相似性。他们两个似乎都被提及很多。汉明距离是我老师告诉我的另一个距离。
我有一些与这些相关的问题,因为我并没有真正了解维基百科。有人可以向我解释这些事情吗?
Levenstein:这个算法由sub改变,添加和删除单词,看看它与文本文档中的另一个单词有多接近。但是如何在整个文本文件中使用它呢?我可以看到它如何用于一个单词,但不能用于一个句子或从一个到另一个的整个文本文档。
余弦:通过测量两个向量之间夹角的余弦来衡量两个向量之间的相似性。我在这里不明白两个文本如何成为 2 个向量以及其中的单词/句子呢?
Hamming:这个距离似乎比 Levenstein 更好,但它只是在相等的弦上。当 2 个文档甚至其中的句子不是两个长度相等的字符串时,为什么它很重要?
维基百科应该有意义,但事实并非如此。如果这些问题听起来太愚蠢,我很抱歉,但它让我感到沮丧,我认为这里有人非常有能力解释它,所以即使是这个领域的新手也能理解。
感谢您的宝贵时间。
【问题讨论】:
-
肯定会帮助你,但是,不是从头开始。不如你先来看看我们可以从哪里开始。这就是家庭作业/学校项目的工作方式。
-
Err..对不起,我没有得到你。我想我确实开始了为什么我要问我不理解的问题。哦,我还没有做程序,我在理解事物的部分。我喜欢在使用它之前得到它。
标签: java algorithm text similarity