在我正在创建的应用程序中,我想添加将新闻故事组合在一起的功能。我想将来自不同来源的关于同一主题的新闻故事分组到同一个组中。例如,来自 CNN 和 MSNBC 的关于 XYZ 的文章将属于同一组。我猜它是某种模糊逻辑比较。从技术角度来看,我将如何做到这一点?我有哪些选择?我们甚至还没有启动应用程序,因此我们可以使用的技术不受限制。
在此先感谢您的帮助!
在我正在创建的应用程序中,我想添加将新闻故事组合在一起的功能。我想将来自不同来源的关于同一主题的新闻故事分组到同一个组中。例如,来自 CNN 和 MSNBC 的关于 XYZ 的文章将属于同一组。我猜它是某种模糊逻辑比较。从技术角度来看,我将如何做到这一点?我有哪些选择?我们甚至还没有启动应用程序,因此我们可以使用的技术不受限制。
在此先感谢您的帮助!
从机器学习的角度来看,这个问题分解为几个子问题。
首先,您将要弄清楚要根据哪些新闻故事进行分组。一种常见的技术是使用“词袋”:只是出现在故事正文或标题中的单词列表。您可以做一些额外的处理,例如删除没有意义的常见英语“停用词”,例如“the”、“because”。你甚至可以做搬运工词干去除复数词和词尾的冗余,如“-ion”。这个单词列表是每个文档的特征向量,将用于测量相似度。您可能需要进行一些预处理才能删除 html 标记。
其次,你必须定义一个相似度指标:相似的故事在相似度上得分很高。使用词袋方法,如果两个故事中有相似的词,它们就是相似的(我在这里含糊不清,因为你可以尝试很多东西,你必须看看哪个效果最好)。
最后,您可以使用经典的聚类算法,例如k-means 聚类,它根据相似度度量将故事分组在一起。
综上所述:将新闻故事转化为特征向量 -> 根据该特征向量定义相似度度量 -> 无监督聚类。
查看谷歌学者,最近的文献中可能已经有一些关于这个特定主题的论文。我刚刚讨论的很多这些东西都是在大多数主要语言的自然语言处理和机器学习模块中实现的。
问题可以分解为:
有两大类聚类算法:批量和增量。如果您提前获得了所有文章,Batch 非常棒。由于您正在对新闻进行聚类,因此您的文章可能会逐渐增加,因此您不能一次将它们全部聚类。您将需要一个增量(又名顺序)算法,而这些往往很复杂。
你也可以试试http://www.similetrix.com,一个快速的谷歌搜索弹出他们,他们声称通过 API 提供这项服务。
一种方法是在文章被列出时为其添加标签。一个标签是 XYZ。其他标签可能会描述文章主题。
您可以在数据库中执行此操作。每篇文章可以有无限数量的标签。然后,可以通过一个或多个标签来识别“组”。
这种方法在很大程度上依赖于人类分配适当的标签,以便从搜索中返回正确的文章,而不是太多的文章。真正做好并不容易。