我正在尝试构建一个推荐系统,该系统会根据用户的行为(谷歌搜索、点击,用户还可以明确地对网页进行评分)向用户推荐网页。为了了解谷歌新闻是如何做的,它会显示关于特定主题的网络新闻文章。从技术上讲,这是聚类,但我目标相似。这将是基于用户行为的内容推荐。
所以我的问题是:
- 我如何可能遍历互联网来查找相关的网页?
- 我应该使用什么算法从网页中提取数据?文本分析和词频是唯一的方法吗?
- 最后,哪个平台最适合这个问题。我听说过Apache Mahout,它带有一些可重用的算法,这听起来像是一个好的选择吗?
回答:
正如Thomas Jungblut所说,关于你的问题可以写几本书;-)我会尽量给你一个简短的指南列表 – 但请注意,这里没有现成的解决方案…
-
爬取互联网:有很多工具包可以做到这一点,比如Python的Scrapy,Java的crawler4j和Heritrix,或者Perl的WWW::Robot。要从网页中提取实际内容,可以看看boilerpipe。
http://code.google.com/p/crawler4j/
-
首先,通常你可以使用协同过滤而不是基于内容的方法。但如果你想要更好的覆盖面,特别是在长尾部分,分析文本是不可避免的。可以考虑的主题建模方法是LDA。Mallet、Apache Mahout和Vowpal Wabbit中实现了几种LDA方法。对于索引、搜索和文本处理,可以看看Lucene。这是一个出色且成熟的软件。
-
除了包含LDA(见上文)、聚类和文本处理的Apache Mahout之外,如果你想专注于协同过滤,还有其他可用的工具包:LensKit,它也是用Java实现的,以及MyMediaLite(免责声明:我是主要作者),它是用C#实现的,但也有Java版本。