网页推荐系统

我正在尝试构建一个推荐系统,该系统会根据用户的行为(谷歌搜索、点击,用户还可以明确地对网页进行评分)向用户推荐网页。为了了解谷歌新闻是如何做的,它会显示关于特定主题的网络新闻文章。从技术上讲,这是聚类,但我目标相似。这将是基于用户行为的内容推荐。

所以我的问题是:

  1. 我如何可能遍历互联网来查找相关的网页?
  2. 我应该使用什么算法从网页中提取数据?文本分析和词频是唯一的方法吗?
  3. 最后,哪个平台最适合这个问题。我听说过Apache Mahout,它带有一些可重用的算法,这听起来像是一个好的选择吗?

回答:

正如Thomas Jungblut所说,关于你的问题可以写几本书;-)我会尽量给你一个简短的指南列表 – 但请注意,这里没有现成的解决方案…

  1. 爬取互联网:有很多工具包可以做到这一点,比如Python的Scrapy,Java的crawler4j和Heritrix,或者Perl的WWW::Robot。要从网页中提取实际内容,可以看看boilerpipe。

    http://scrapy.org/

    http://crawler.archive.org/

    http://code.google.com/p/crawler4j/

    https://metacpan.org/module/WWW::Robot

    http://code.google.com/p/boilerpipe/

  2. 首先,通常你可以使用协同过滤而不是基于内容的方法。但如果你想要更好的覆盖面,特别是在长尾部分,分析文本是不可避免的。可以考虑的主题建模方法是LDA。Mallet、Apache Mahout和Vowpal Wabbit中实现了几种LDA方法。对于索引、搜索和文本处理,可以看看Lucene。这是一个出色且成熟的软件。

    http://mallet.cs.umass.edu/

    http://mahout.apache.org/

    http://hunch.net/~vw/

    http://lucene.apache.org/

  3. 除了包含LDA(见上文)、聚类和文本处理的Apache Mahout之外,如果你想专注于协同过滤,还有其他可用的工具包:LensKit,它也是用Java实现的,以及MyMediaLite(免责声明:我是主要作者),它是用C#实现的,但也有Java版本。

    http://lenskit.grouplens.org/

    http://ismll.de/mymedialite

    https://github.com/jcnewell/MyMediaLiteJava

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注