如何判断两个网页内容是否相似?

时间:2012-04-05 20:09:36

标签: python nlp machine-learning text-mining semantic-analysis

鉴于2个html源代码,我想首先使用类似this之类的东西从中提取主要内容。有other better libraries - 我是专门寻找Python / Javascript的吗?

一旦我有两个提取的内容,我想要返回0到1之间的分数,表示它们有多相似,例如来自美国有线电视新闻网和英国广播公司的同一主题的新闻文章将具有更高的相似性得分,因为它们与亚马逊网站上同一产品相关的主题或网页相同,而沃尔玛网站的得分也很高。我怎样才能做到这一点?是否有现有的库已经这样做了?我可以使用哪些好的库?基本上我正在寻找automatic summarizationkeyword extractionnamed-entity recognitionsentiment-analysis的组合。

1 个答案:

答案 0 :(得分:5)

您的问题中嵌入了许多内容。我将尝试为您提供一个库,否则将建议您可以解决您的任务的算法(您可以使用Google,您将获得许多python实现)

第1点。从html中提取主要内容(http://nltk.googlecode.com/svn/trunk/doc/book/ch03.html)&对于其他NLP相关的东西,你可以查看NLTK。它用Python编写。您还可以查看一个名为BeautifulSoup的图书馆,它很棒(http://www.crummy.com/software/BeautifulSoup/)

第2点。当你说:

一旦我获得了两个提取的内容,我想要返回0到1之间的分数,表示它们有多相似......

为此,我建议您可以使用任何无监督的学习聚类技术对文档集进行聚类。由于您的问题属于基于距离度量的聚类,因此您应该很容易对类似文档进行聚类,然后根据它们与聚类质心的相似性为它们分配分数。尝试K-Means或自适应共振理论。在后者中,您不需要提前定义簇的数量。或正如larsman在他的评论中指出的那样,你可以简单地使用TF-IDF(http://www.miislita.com/term-vector/term-vector-3.html)

第3点。当你说:

基本上我正在寻找自动摘要,关键字提取,命名实体识别和情感分析的组合

对于自动摘要,请使用非负矩阵分解

对于关键字提取,请使用NLTK

对于命名实体识别,请使用NLTK

对于情感分析,请使用NLTK