像GOOGLE新闻一样将类似的新闻内容分组在一起

时间:2010-10-18 10:09:59

标签: php rss cluster-analysis feeds

由于各种新闻网站发布了大量新故事/类似新闻内容,我无法轻松管理RSS源。对于诸如世界新闻和商业新闻等主题,许多故事都是多余的,给读者增加了负担,使他们能够理清他们已经阅读过的故事。为了解决泛洪和冗余这两个问题,我需要开发一个代码来减少要读取的项目数量,并使用重叠信息来划分有趣的主题。

如果我能够像GOOGLE NEWS / StackOverflow一样将类似的新闻内容组合在一起并将其呈现给用户,那将会更容易。

5 个答案:

答案 0 :(得分:9)

这绝对是一个不容易解决的问题,可以通过以下方式解决:

  • 智能文本解析功能
  • 原始硬件电源
  • 他们两人
  • 测试,测试,测试
  • 最后微调

首先,我将不同的新闻来源分组到一些相对广泛的类别。您可以轻松确定Tech新闻来源不会在经济类别下发布新闻。 (或者,那就是问题。)

大部分案例新闻标题都不会被触及,它最多仍保留原始形式。因此,分类,标题和发布日期是将新闻分组为一个的良好起点。

如果您发现上述方法存在问题,则需要进行一些微调。

也许您需要阅读整篇文章并逐个比较两篇(数千篇)文章。

  • 有很多停用词可以扭曲比较,所以你需要忽略这些。
  • 您可能需要定义同义词(J Lo = Jennifer Lopez)

如果新闻的原始文本相似(您可以定义阈值),您可以再次比较其他因素(如上所述)。

一些新闻来源在RSS源中提供了良好的标记,也许你也可以使用它但不依赖它。

请记住,一开始(大约1年)你需要进行大量的微调,然后你会没事的。

答案 1 :(得分:3)

我在某个地方读过 - 但我没有参考 - 谷歌新闻使用MinHash的变体来检测近乎重复的新闻帖子。其中很多几乎都是相同的,来自一家新闻机构,只有报纸的轻微改编。

http://en.wikipedia.org/wiki/MinHash

有一个参考和Google新闻使用LSH和MinHash的变体的声明:

  

Das,Abhinandan S.等。 (2007年),“谷歌新闻个性化:可扩展的在线协同过滤”,第16届万维网国际会议论文集。 ACM

答案 2 :(得分:2)

我在这里没有看到任何问题,但我首先要开发某种指纹算法,包括文章中的文字,名称,标题,日期等。然后我会检查指纹的相似性,找到相同的文章,可能通过某种MapReduce作业,轻松地将作品传播到集群中的不同服务器。

如果您需要一些灵感,请查看Google Living Stories的源代码: http://code.google.com/p/living-stories/

答案 3 :(得分:0)

通过将所有文章转储到Elsasticsearch中并进行more_like_this查询,我在使用此方法方面取得了成功。这出奇地好。只需进行一些微调即可正确设置某些设置。您还可以在bonsai.io

使用免费的Elasticsearch托管实例。

答案 4 :(得分:-1)

您需要进行某种形式的文档群集。这包括:

  • 将文章分解为“特征”(例如,TF-IDF向量 关键词)
  • 具有相似性度量(例如,余弦相似度,可能需要两篇文章并决定它们的相似程度)
  • 一种聚类算法,它使用相似性指标将文章分解为聚类。

由于这是新闻并且您有新文章,您可能需要一个“在线”算法而不是批量算法。搜索增量DBSCAN作为示例。