我做了同样的数据挖掘,并从 glassdoor 上提取了谷歌和微软的所有面试问题: http://letschat.info/?p=34
我有两个列表。
我想做的是可能会拉一些其他公司的面试问题,并尝试在多个来源中找到相似的问题。
我做了一些谷歌搜索,我找到了这个项目:
http://lucene.apache.org/core/
我可以做以下事情: http://javatechniques.com/blog/lucene-in-memory-text-search-example/
然而,这似乎有点矫枉过正。有没有更简单的算法可以帮助我找到类似的问题?栈溢出用什么算法?
我在考虑是否可以根据两个问题之间匹配的单词数生成一个分数,然后以这种方式进行过滤。
我想尝试将问题列表缩减为唯一数量的问题列表。
更新:
我决定使用lucene。我将整个列表放入索引并遍历列表并使用 lucene 搜索 10 个类似的项目。然后我将这 10 个结果的分数相加,看看哪些问题被问得最多。
这里是实际代码的链接:http://letschat.info/ranking-of-reduced-amazon-questions/
这并不复杂。以下是结果示例: http://letschat.info/ranking-of-reduced-amazon-questions/
最佳答案
实际上,cosine similarity在 tf-idf vectors ,这是 Lucene 实现的,是一种常见的(并且非常基本的)测量文档间相似性的方法。如果我是你,我会尝试一下(尽管你的文件可能有点短,但它不能很好地发挥作用)。 Lucene 也做了一些不错的文本规范化。
关于查找问题相似性的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9456874/