4

我正在做一个大学项目,必须收集和组合用户提供的主题的数据。我遇到的问题是许多术语的谷歌搜索结果都被低质量的自动生成页面污染了,如果我使用它们,我最终可能会得到错误的事实。如何估计页面的质量/可信度?

您可能会认为“不,Google 工程师已经为这个问题工作了 10 年,他正在寻求解决方案”,但如果您考虑一下,SE 必须提供最新的内容,并且如果它将好的页面标记为坏的一、用户会不满意。我没有这样的限制,所以如果算法不小心将一些好的页面标记为坏,那不会是一个问题。

这是一个例子:假设输入是buy aspirin in south la. 尝试谷歌搜索它。前 3 个结果已从网站中删除,但第四个结果很有趣:(radioteleginen.ning.com/profile/BuyASAAspirin我不想创建活动链接)

这是正文的第一段:

此刻,从加拿大购买处方药在美国很重要。这是因为在美国,处方药价格飞涨,使得那些收入有限或集中收入的人难以购买他们急需的药物。美国人为他们的药物支付的费用比班上任何人都多。

其余文本类似,然后是相关关键字列表。这是我认为的低质量页面。虽然这个特定的文本似乎是有道理的(除了它很可怕),但我见过的其他例子(但现在找不到)只是一些垃圾,其目的是从谷歌获得一些用户并在创建后 1 天被禁止.

4

5 回答 5

6

N-gram 语言模型

您可以尝试在自动生成的垃圾邮件页面上训练一个n-gram 语言模型,并在其他非垃圾邮件网页的集合上训练一个。

然后,您可以简单地使用两种语言模型对新页面进行评分,以查看文本是否看起来更类似于垃圾邮件网页或常规 Web 内容。

通过贝叶斯定律更好地得分

当您使用垃圾邮件语言模型对文本进行评分时,您可以估计在垃圾邮件网页上找到该文本的概率,P(Text|Spam). Text该符号读取为给定的概率Spam (page)。来自非垃圾邮件语言模型的分数是对在非垃圾邮件网页上找到文本的概率的估计,P(Text|Non-Spam).

但是,您可能真正想要的术语是P(Spam|Text)或,等效地P(Non-Spam|Text)。也就是说,您想知道页面是给定出现在其上的文本的概率SpamNon-Spam

要获得其中任何一个,您需要使用Bayes Law,其中指出

           P(B|A)P(A)
P(A|B) =  ------------
              P(B)

使用贝叶斯定律,我们有

P(Spam|Text)=P(Text|Spam)P(Spam)/P(Text)

P(Non-Spam|Text)=P(Text|Non-Spam)P(Non-Spam)/P(Text)

P(Spam)之前是否认为从网络上随机选择的页面是垃圾邮件页面。您可以通过计算某个样本中有多少垃圾邮件网页来估计此数量,或者您甚至可以将其用作您手动调整的参数,以权衡精度和召回率。例如,给这个参数一个高的值将导致更少的垃圾页面被错误地归类为非垃圾邮件,而给它一个低的值将导致更少的非垃圾页面被意外归类为垃圾邮件。

该术语是在任何网页上P(Text)找到的总体概率。Text如果我们忽略这一点P(Text|Spam)P(Text|Non-Spam)使用不同的模型确定,则可以计算为P(Text)=P(Text|Spam)P(Spam) + P(Text|Non-Spam)P(Non-Spam)。这总结了二进制变量Spam/ Non-Spam

仅分类

但是,如果您不打算将概率用于其他任何事情,则无需计算P(Text). 相反,您可以只比较分子P(Text|Spam)P(Spam)P(Text|Non-Spam)P(Non-Spam)。如果第一个较大,则该页面很可能是垃圾页面,而如果第二个较大,则该页面很可能是非垃圾页面。这是有效的,因为上面的等式适用于两者P(Spam|Text)并且P(Non-Spam|Text)相同 P(Text)的值归一化。

工具

就您可以用于此类用途的软件工具包而言,SRILM将是一个很好的起点,并且它可以免费用于非商业用途。如果您想在商业上使用某些东西并且不想为许可证付费,您可以使用IRST LM,它在 LGPL 下分发。

于 2010-05-01T20:45:26.903 回答
3

定义网页的“质量”?指标是什么?

如果有人想买水果,那么搜索“大甜瓜”会得到许多包含“非纺织品”倾斜图像的结果。

然而,这些页面的标记和托管可能是合理的工程......

但是一个土农展示他的高品质、美味和健康产品的页面可能仅在 IE4.5 中可见,因为 html 已“损坏”...

于 2010-05-01T07:07:46.550 回答
1

对于每个关键字查询的每个结果集,执行单独的 google 查询以查找链接到该站点的站点数量,如果没有其他站点链接到该站点,则将其排除。我认为这至少是一个好的开始。

于 2010-05-01T07:45:44.430 回答
1

如果您正在寻找与性能相关的指标,那么 Y!Slow [firefox 插件] 可能会很有用。

http://developer.yahoo.com/yslow/

于 2010-05-01T21:35:06.223 回答
0

您可以使用监督学习模型进行此类分类。一般过程如下:

  1. 获取训练样本集。这将需要提供您想要涵盖的文档示例。您希望越通用,您需要使用的示例集就越大。如果您只想关注与阿司匹林相关的网站,那么这会缩小必要的样本集。

  2. 从文档中提取特征。这可能是从网站上提取的词。

  3. 将特征输入到分类器中,例如(MALLETWEKA)中提供的分类器。

  4. 使用类似k-fold cross validation来评估模型。

  5. 使用该模型对新网站进行评分。

当您谈论不关心是否将好站点标记为坏站点时,这称为召回。回忆一下你应该收回的那些你实际收回了多少的措施。精确测量你标记为“好”和“坏”的有多少是正确的。由于您声明了更精确的目标并且召回并不那么重要,因此您可以调整您的模型以获得更高的精度。

于 2010-05-03T18:10:15.993 回答