我计划实现一个使用神经网络的文档排名系统。如何通过考虑相似文章的评分来对文档进行评级?有没有好的Python库可以用来做这件事?谁能推荐一本关于人工智能的好书,里面有Python代码?
编辑
我计划制作一个推荐引擎,该引擎将从相似用户那里进行推荐,并使用基于标签的数据进行聚类。用户将有机会为文章投票。文章总数大约有十万篇。文档将根据它们的标签进行聚类。给定一个关键词,文章将根据它们的标签被提取出来,并通过神经网络进行排名。
回答:
你试图解决的问题被称为“协同过滤”。
神经网络
一种最先进的神经网络方法是深度信念网络和受限玻尔兹曼机。要查看GPU(CUDA)的快速Python实现,请点击这里。另一个选择是PyBrain。
关于你具体问题的学术论文:
-
这可能是神经网络和协同过滤(电影)的最先进技术:
Salakhutdinov, R., Mnih, A. Hinton, G, Restricted Boltzman Machines for Collaborative Filtering, 将出现在2007年第24届国际机器学习会议论文集上。 PDF
-
在Python中实现的Hopfield网络:
Huang, Z. and Chen, H. and Zeng, D. Applying associative retrieval techniques to alleviate the sparsity problem in collaborative filtering. ACM Transactions on Information Systems (TOIS), 22, 1,116–142, 2004, ACM. PDF
-
关于使用受限玻尔兹曼机进行协同过滤的论文(他们说Python不适合这项工作):
G. Louppe. Collaborative filtering: Scalable approaches using restricted Boltzmann machines. 硕士论文,列日大学,2010年。
PDF
目前,神经网络并不是协同过滤领域的最先进技术。它们也不是最简单、最广泛使用的解决方案。关于你提到使用神经网络的原因是数据量太少,神经网络在这种情况下并没有固有的优势或劣势。因此,你可能需要考虑更简单的机器学习方法。
其他机器学习技术
目前最好的方法是结合使用k-最近邻和矩阵分解。
如果你坚持使用Python,可以看看pysuggest(SUGGEST推荐引擎的Python包装器)和PyRSVD(主要针对协同过滤应用,特别是Netflix竞赛)。
如果你愿意尝试其他开源技术,请查看:开源协同过滤框架和http://www.infoanarchy.org/en/Collaborative_Filtering。