Python 基于神经网络的文档排序

Python 基于神经网络的文档排序,python,machine-learning,neural-network,Python,Machine Learning,Neural Network,我正在计划实现一个使用神经网络的文档ranker。如何通过考虑类似文章的评级来对文档进行评级?。有什么好的python库可以做这件事吗?。有谁能推荐一本关于AI的好书,里面有python代码 编辑 我计划制作一个推荐引擎,它可以从相似的用户那里推荐,也可以使用使用标签聚集的数据。用户将有机会为文章投票。将有大约十万篇文章。文档将根据它们的标记进行集群。给定一个关键词,文章将根据其标签获取,并通过神经网络进行排名。您可能想签出。如果我理解正确,您的任务与此相关。解决这个问题有很多可能的方法;我建议

我正在计划实现一个使用神经网络的文档ranker。如何通过考虑类似文章的评级来对文档进行评级?。有什么好的python库可以做这件事吗?。有谁能推荐一本关于AI的好书,里面有python代码

编辑


我计划制作一个推荐引擎,它可以从相似的用户那里推荐,也可以使用使用标签聚集的数据。用户将有机会为文章投票。将有大约十万篇文章。文档将根据它们的标记进行集群。给定一个关键词,文章将根据其标签获取,并通过神经网络进行排名。

您可能想签出。

如果我理解正确,您的任务与此相关。解决这个问题有很多可能的方法;我建议你关注维基百科页面,对你可以选择的主要方法进行概述

对于您的项目工作,我可以建议您使用一个简单的BackProp NN实现和一个分类示例。这不是“最佳”解决方案,但也许您可以在该示例的基础上构建您的系统,而不需要更大的框架。

如果你不致力于神经网络,我在支持向量机方面运气不错,k-均值聚类可能也会有帮助。这两个都是由提供的。它还对进行逐步判别分析,如果您试图按主题查找类似的文档,这肯定会对您有用

如果你选择了这条路线,上帝会帮助你,但是根框架有一个强大的机器学习包,名为,它提供了大量的分类方法,包括SVM、NN和增强决策树(也可能是一个不错的选择)。我没有使用它,但是pyROOT提供了到根功能的python绑定。公平地说,当我第一次使用root时,我没有C++知识,而且在概念上也有点过头,所以这对你来说可能是惊人的。ROOT拥有大量的数据处理工具

(NB:我还用卡方特征选择和余弦匹配编写了一个相当精确的文档语言标识符。显然,你的问题比较难,但是考虑到你可能不需要非常强大的工具。) 存储与处理 你在问题中提到:

…文章将根据标签获取,并通过神经网络进行排名

正如另一个注意事项,关于机器学习,您应该知道的一件事是,像培训和评估这样的过程往往需要一段时间。您可能应该考虑只为每个标签排列所有文档(假设您知道所有标签)并存储结果。一般来说,对于机器学习来说,使用更多的存储比使用更多的处理要好得多

现在谈谈你的具体情况。你没有说你有多少个标签,所以让我们假设你有1000个,表示圆度。如果你在每个标签上存储每个文档的排名结果,那么你可以存储1亿个浮动。这是大量的数据,计算它们都需要一段时间,但是检索它们非常快。相反,如果您根据需要重新计算每个文档的排名,则必须对其进行1000次传递,每个标记一次。根据您正在执行的操作类型和文档的大小,这可能需要几秒钟到几分钟的时间。如果这个过程足够简单,您可以等待您的代码按需执行其中几个评估,而不会感到无聊,那么就开始吧,但您应该在做出任何设计决策/编写您不想使用的代码之前对这个过程进行计时


祝你好运

这个库看起来也很有希望。

我不确定神经网络是否是解决这个问题的最佳方法。我认为欧几里德距离分数或皮尔逊相关分数与基于项目或用户的过滤相结合将是一个良好的开端


这方面的一本好书是:

您试图解决的问题称为“协作过滤”

神经网络 一种最先进的神经网络方法是深度信念网络和受限玻尔兹曼机器。有关GPU(CUDA)的快速python实现,请参阅。另一个选择是

关于你具体问题的学术论文:

  • 这可能是神经网络和协同过滤(电影)的最新技术:

    萨拉胡季诺夫,R.,姆尼赫,A.辛顿,G,受限玻尔兹曼 用于协同过滤的机器,将显示在 第24届国际会议记录 机器学习2007。

  • 用Python实现的Hopfield网络:

    Huang,Z.和Chen,H.和Zeng,D.应用关联检索技术缓解协同过滤中的稀疏性问题。 ACM信息系统交易(TOIS),221116-1422004,ACM

  • 一篇关于受限Boltzman机器协同过滤的论文(他们说Python不适合这项工作):

    G.卢佩。协同过滤:可扩展 使用受限玻尔兹曼机器的方法。 硕士论文,列日大学,2010年。

神经网络目前在协同过滤方面还不是最先进的。而且它们不是最简单、广泛的解决方案。关于您关于使用NNs的原因的评论,数据太少,神经网络在这种情况下没有固有的优势/劣势。因此,您可能需要考虑更简单的机器学习方法。 其他机器学习技术 目前最好的方法是混合k近邻和矩阵分解

如果您锁定了Python,请查看(建议推荐引擎的Python包装器)和(主要针对协同过滤中的应用程序,尤其是Netflix竞争)

如果你是op