【问题标题】:Algorithm to find similarity of questions寻找问题相似性的算法
【发布时间】:2012-03-16 10:41:05
【问题描述】:

我进行了相同的数据挖掘,并在 glassdoor 上从谷歌和微软提取了所有面试问题: http://letschat.info/?p=34

http://letschat.info/?p=37

我有两个列表。

我想做的可能是拉一些其他公司的面试问题,并尝试在多个来源中找到相似的问题。

我做了一些谷歌搜索,发现了这个项目:

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/

来自原始来源: http://letschat.info/list-of-amazon-questions/

【问题讨论】:

  • 我喜欢您根据单词匹配计数获得分数的想法。每次将一个问题添加到列表中时,您应该将问题与分数一起保存到数据库中。那么随着新问题的出现,这是一个简单的查询?

标签: algorithm search data-mining


【解决方案1】:

实际上,Lucene 实现的tf-idf vectors 上的cosine similarity 是测量文档间相似性的一种常见(并且非常基本)的方法。如果我是您,我会尝试(尽管您的文档可能有点短,无法很好地运行)。 Lucene 也做了一些不错的文本规范化。

【讨论】:

  • 我不是在尝试进行文档间相似性,而是更多地尝试比较句子,但我想我可能只是使用那种方法。谢谢
  • 句子只是很短的文档 TF-IDF 和余弦相似度是文本相似度的两种标准技术。
【解决方案2】:

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

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

【讨论】:

  • 似乎没有积极开发
猜你喜欢
  • 2010-09-09
  • 1970-01-01
  • 2012-04-27
  • 1970-01-01
  • 2014-10-02
  • 2012-06-21
  • 1970-01-01
  • 2020-08-17
  • 1970-01-01
相关资源
最近更新 更多