我正在尝试构建一个推荐系统,该系统会根据用户的操作(谷歌搜索、点击,他还可以明确地对网页进行评分)向用户推荐网页。为了了解谷歌新闻的做法,它会显示来自网络的有关特定主题的新闻文章。用技术术语来说就是集群,但我的目标是相似的。它将是基于用户操作的基于内容的推荐。
所以我的问题是:
- 我怎样才能在互联网上搜寻相关网页?
- 我应该使用什么算法从网页中提取数据?文本分析和词频是唯一的方法吗?
- 最后,什么平台最适合解决这个问题。我听说过 Apache mahout,它附带了一些可重用的算法,听起来很合适吗?
正如 Thomas Jungblut 所说,一个人可以就你的问题写出几本书;-)
我将尝试为您提供一系列简短的指示 - 但请注意,不会有现成的解决方案......
-
抓取互联网:有很多工具包可以完成此任务,例如用于 Python 的 Scrapy、用于 Java 的crawler4j 和 Heritrix,或用于 Perl 的 WWW::Robot。要从网页中提取实际内容,请查看boilerpipe。
http://scrapy.org/ http://scrapy.org/
http://crawler.archive.org/ http://crawler.archive.org/
http://code.google.com/p/crawler4j/ http://code.google.com/p/crawler4j/
https://metacpan.org/module/WWW::Robot https://metacpan.org/module/WWW::Robot
http://code.google.com/p/boilerpipe/ http://code.google.com/p/boilerpipe/
-
首先,通常您可以使用协作过滤而不是基于内容的方法。但如果你想获得良好的覆盖率,尤其是长尾的覆盖率,就没有办法绕过分析文本。需要注意的一件事是主题建模,例如LDA。 Mallet、Apache Mahout 和 Vowpal Wabbit 中实现了多种 LDA 方法。
对于索引、搜索和文本处理,请查看 Lucene。这是一个很棒的、成熟的软件。
http://mallet.cs.umass.edu/ http://mallet.cs.umass.edu/
http://mahout.apache.org/ http://mahout.apache.org/
http://hunch.net/~vw/ http://hunch.net/~vw/
http://lucene.apache.org/ http://lucene.apache.org/
-
除了还包含 LDA(见上文)、集群和文本处理等内容的 Apache Mahout 之外,如果您想专注于协作过滤,还可以使用其他工具包:LensKit(也是用 Java 实现)和 MyMediaLite(免责声明:我我是主要作者),它是用 C# 实现的,但也有一个 Java 端口。
http://lenskit.grouplens.org/ http://lenskit.grouplens.org/
http://ismll.de/mymedialite http://ismll.de/mymedialite
https://github.com/jcnewell/MyMediaLiteJava https://github.com/jcnewell/MyMediaLiteJava
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)