Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 网络爬网:根据以前爬网的单词的统计信息,为URL分配分数(使用组成URL的单词)_Algorithm_Statistics_Nlp_Web Crawler_Data Mining - Fatal编程技术网

Algorithm 网络爬网:根据以前爬网的单词的统计信息,为URL分配分数(使用组成URL的单词)

Algorithm 网络爬网:根据以前爬网的单词的统计信息,为URL分配分数(使用组成URL的单词),algorithm,statistics,nlp,web-crawler,data-mining,Algorithm,Statistics,Nlp,Web Crawler,Data Mining,我很难开发一个算法/公式来确定一个链接的分数,因为它是由单词组成的。这也适用于环绕URL的上下文(单词句子)。为简单起见,不考虑URL的主机 处理web文档时,将计算该页面的分数,该分数将传递给在该页面中找到的大纲链接。有一些输入词/术语(从现在起称为搜索标记-可能由多个词组成)将确定给定文档是否相关(具有正的页面分数)。每个术语都有一个给定的权重,该权重将决定它将为页面的分数增加多少分数。因此,一般来说,页面的分数是文档中所有找到的输入搜索标记、文档中这些标记的频率以及每个标记的权重的函数 如

我很难开发一个算法/公式来确定一个链接的分数,因为它是由单词组成的。这也适用于环绕URL的上下文(单词句子)。为简单起见,不考虑URL的主机

处理web文档时,将计算该页面的分数,该分数将传递给在该页面中找到的大纲链接。有一些输入词/术语(从现在起称为搜索标记-可能由多个词组成)将确定给定文档是否相关(具有正的页面分数)。每个术语都有一个给定的权重,该权重将决定它将为页面的分数增加多少分数。因此,一般来说,页面的分数是文档中所有找到的输入搜索标记、文档中这些标记的频率以及每个标记的权重的函数

如果页面得分为正(相关),则页面中的所有术语/单词都将更新其统计信息,即页面得分将累积到每个单词的得分总和。搜索标签本身的统计数据将有一个“提升”,即累积分数将乘以某个常数

因此,给定一组先前已爬网的术语/单词(术语是多个单词;仅搜索标记),每个单词都有这些不同的“统计信息”:

  • 爬网相关页面的累积分数
  • 在相关页面中找到该词的次数
  • 不相关的页面中找到此单词的次数
  • 考虑到爬网中找到的所有单词的统计信息,我应该如何使用这些统计信息来计算链接或其内聚文本上下文的分数(或相关概率)?或者我应该添加任何新词统计来使用某些统计方法,如贝叶斯分类?有什么好主意吗?非常感谢

    编辑:
    请注意,同义词的统计数据是相同的,无论它们属于哪个词类。我将使用WordNet来实现这一点。

    链接文本比提供链接的文档文本更重要,例如,带有关于熊猫的传出链接的页面可能有一个“更多关于熊猫”的链接,或者一个“关于其他动物”的链接。因此,您可能应该将链接文本与整个文档文本分开评分,然后合并评分以获得链接的评分。至于你可以使用的统计建模方法,你可以研究主题建模,但我认为这对你的问题来说是过分的。无论如何,这种方法通常只使用字数向量作为输入来计算给定主题的概率。

    我写了一个网络爬虫,它做的事情与我认为你所说的非常相似。这个拼图有两块。它们是相关的,但你必须将它们分开,否则思考问题会变得混乱

    第一件事是我们称之为“掘金函数”,即确定页面是否相关的函数。在我们的例子中,这非常简单,因为我们正在寻找媒体文件(所有类型的音乐和视频文件)。如果我们下载的文件是媒体文件,那么nugget函数返回1.0。如果该文件不是已知的(我们所知的)媒体文件类型,则nugget函数返回0.0

    另一部分是一个简单的贝叶斯分类器。每当我们发现一块金块,我们就会在URL中每个术语的良好结果计数中加1。如果nugget函数返回0,那么我们将在URL中每个术语的坏结果计数中添加1

    有了这些术语计数,我们可以通过分类器运行任何URL,它将为我们提供一个从0.0到1.0的概率,该URL是否会引导我们找到媒体文件

    在第一次剪切之后,我们将其他内容添加到术语列表中,最重要的是与URL关联的锚文本,以及提供链接的HTML页面的文本。这些显著地改进了分类器,但是主要的收益仅仅来自URL本身中的术语。对我们来说,主持人的名字是一个非常重要的部分。事实证明,过去提供好内容的主机通常会继续提供好内容

    出于您的目的,您可能希望您的nugget函数返回一个介于0.0和1.0之间的相关性分数,并使用该分数来添加术语中的好计数或坏计数

    你还必须定期删减你的术语列表,因为你将看到大约60%的术语是hapaxes;它们只会出现一次。你必须从术语表中删去不常见的术语,为新术语腾出空间。当你在网络上爬行时,列表中有很多搅动

    我们在使用和不使用分类器的情况下进行了一些测试。如果没有分类器,我们访问的500个链接中大约有1个是媒体文件。对于只查看URL术语的简单分类器的第一部分,每70个文档中就有一个是媒体文件。加上其他术语(锚文本和页面文本),这一比例降到了大约50分之一。请注意,这是没有抓取YouTube的。我们使用另一种技术从YouTube上获取新视频

    我最初的切割是一个朴素的贝叶斯分类器,我在研究了书中对贝叶斯分类的描述后将其组合在一起。没错,我使用了垃圾邮件过滤器来确定要抓取的URL

    几年前我在博客上写了一点关于爬虫的东西。我本来计划了一个长系列,但却偏离了方向,一直没有完成。你可能会在那里找到一些有用的信息,尽管治疗的水平相当高。有关介绍和其他部分的链接,请参见