寻找问题相似度的算法

3
我做了一些数据挖掘,从谷歌和微软的Glassdoor上提取了所有的面试问题:http://letschat.info/?p=34http://letschat.info/?p=37。我在那里有这两个列表。
我的想法是可能再拉几个公司的面试问题,并尝试找到多个来源中相似的问题。
我在搜索过程中发现了这个项目:http://lucene.apache.org/core/,我可以使用以下方式:http://javatechniques.com/blog/lucene-in-memory-text-search-example/
但这似乎太复杂了。是否有一种更简单的算法可以帮助我找到类似的问题?Stack Overflow使用什么算法?
我想也许可以根据两个问题之间匹配的单词数量生成一个分数,然后按照此方式进行过滤。
我想尝试将问题列表缩小为唯一问题列表。
更新:
我决定使用Lucene。我将整个列表放入索引中,然后迭代该列表并使用Lucene搜索10个与之相似的项。然后加起来得出10个结果的分数,以确定哪些问题被问得最多。
以下是实际代码链接:http://letschat.info/ranking-of-reduced-amazon-questions/
它并不太复杂。这是结果的示例:http://letschat.info/ranking-of-reduced-amazon-questions/ 来自原始来源:http://letschat.info/list-of-amazon-questions/

我喜欢你的想法,根据单词匹配数得分。每次添加一个问题到列表中,你都应该将问题和得分保存到数据库中。然后,随着新问题的出现,这只是一个简单的查询? - Induster
2个回答

2
实际上,余弦相似度tf-idf向量上的计算方法是Lucene实现的一种常见(而且相当基础)的衡量文档间相似性的方式。如果我是你,我会尝试一下(虽然你的文档可能有点短,以至于不太适合这种方法)。Lucene还进行了一些很好的文本规范化处理。

我并不是试图做文档间相似性比较,而更多的是尝试比较句子,但我想我可能会使用那种方法。谢谢 - SamFisher83
2
句子只是非常短的文档。TF-IDF和余弦相似度是文本相似性的两种标准技术。 - Has QUIT--Anony-Mousse

0

Simmetrics 是一个提供多种字符串比较算法的库。检查哪些算法最适合您的需求。

对于这些“问题”,您可以考虑一种方法是使用 n-gram,以提高准确性。


似乎它没有在积极开发中。 - SamFisher83

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