3

我想确定两个新闻项目内容的相似性,类似于谷歌新闻,但在某种意义上不同,我希望能够确定基本主题是什么,然后确定哪些主题是相关的。

因此,如果一篇文章是关于萨达姆侯赛因的,那么该算法可能会推荐一些关于唐纳德拉姆斯菲尔德在伊拉克的商业交易的内容。

如果你能抛出 k-最近邻之类的关键词,并稍微解释一下它们为什么起作用(如果可以的话),我会做剩下的研究并调整算法。只是寻找一个开始的地方,因为我知道那里有人以前一定尝试过类似的东西。

4

2 回答 2

5

第一个想法:

  • 扔掉噪音词(和,你,是,那个,一些,......)。
  • 计算所有其他单词并按数量排序。
  • 对于两篇文章中的每个单词,根据数量的总和(或乘积或其他公式)添加分数。
  • 分数代表相似度。

似乎一篇主要关于唐纳德·拉姆斯菲尔德的文章会相当多地使用这两个词,这就是我在文章中对它们进行加权的原因。

然而,可能有一篇文章曾多次提到沃伦巴菲特和比尔盖茨,还有一篇文章多次提到比尔盖茨和微软。那里的相关性将是最小的。

根据您的评论:

因此,如果一篇文章是关于萨达姆侯赛因的,那么该算法可能会推荐一些关于唐纳德拉姆斯菲尔德在伊拉克的商业交易的内容。

除非萨达姆的文章也提到伊拉克(或唐纳德),否则情况并非如此。

这就是我要开始的地方,我已经看到了理论中的潜在漏洞(如果经常提到比尔·盖茨的名字,一篇关于比尔·盖茨的文章将与一篇关于比尔·克林顿的文章密切匹配)。这很可能被所有其他词(微软代表比尔,希拉里代表另一个)照顾到。

在尝试引入单词邻近功能之前,我可能会对其进行测试运行,因为这会使它变得非常复杂(可能是不必要的)。

另一项可能的改进是保持“硬”关联(就像总是在包含奥萨马·本·拉登的文章中添加阿富汗一词)。但同样,这需要额外的维护,因为关于奥萨马的文章几乎肯定也会提到阿富汗。

于 2009-04-09T06:04:00.353 回答
0

目前我正在考虑这样的事情。

每个非噪声词都是一个维度。每篇文章都由一个向量表示,其中未出现的单词用零表示,而出现的单词的值等于它们出现的次数除以页面上的总单词数。然后我可以取这个空间中每个点之间的欧几里得距离来得到任意两篇文章的相似度。

下一步是确定文章的集群,然后确定每个集群的中心点。然后计算任何两个集群之间的欧几里得距离,它给出了主题的相似性。

呸,我想通过打字我解决了我自己的问题。当然,只是以非常高的水平,我相信当我真正开始时,我会发现问题......魔鬼总是在细节中。

但评论和改进仍然受到高度赞赏。

于 2009-04-09T05:40:31.377 回答