5

我们正在开发一种文档搜索引擎——主要关注用户提交的 MS Word 文档的索引。

我们注意到,存在关键字填充滥用。

我们确定了两种主要的滥用行为:

  1. 一遍又一遍地重复同一个词
  2. 大量不相关的术语添加到文档中

通过添加与文档背景颜色相同的字体颜色的文本,或者将字体大小设置为 1 像素,这两种形式的滥用都被启用。

虽然确定背景颜色是否与文本颜色相同,但考虑到 MS 单词布局的复杂性,这很棘手 - 字体大小也是如此 - 因为任何截断似乎都可能是任意的 - 如果我们可能会意外删除有效文本设置一个过大的截止值。

我的问题是 - 是否有任何标准化的预处理或统计分析技术可以用来减少这种关键字填充的影响?

任何指导将不胜感激!

4

4 回答 4

4

使用可压缩性的概念,您的问题有一个非常简单的解决方案。

如果您将 Word 文档转换为文本(您可以轻松地即时执行此操作),然后可以压缩它们(例如,使用免费的 zlib 库)并查看压缩率。普通文本文档的压缩比通常在 2 左右,因此任何重要的偏差都意味着它们已被“填充”。分析过程非常简单,我已经分析了大约 100k 文本,使用 Python 只需要大约 1 分钟。

另一种选择是查看文档/单词的统计属性。为此,您需要有一个“干净”文档样本并计算不同单词的平均频率及其标准偏差。

完成此操作后,您可以获取一个新文档并将其与平均值和偏差进行比较。填充文档将被表征为具有与该词的平均值高度偏差的几个词(一个或两个词重复多次的文档)或具有高偏差的许多词(文本块重复的文档)

以下是一些关于可压缩性的有用链接:

http://www.ra.ethz.ch/cdstore/www2006/devel-www2006.ecs.soton.ac.uk/programme/files/pdf/3052.pdf

http://www.ispras.ru/ru/proceedings/docs/2011/21/isp_21_2011_277.pdf

您也可以使用熵的概念,例如香农熵计算 http://code.activestate.com/recipes/577476-shannon-entropy-calculation/

另一种可能的解决方案是使用词性 (POS) 标记。我认为名词的平均百分比在“正常”文档中是相似的(根据http://www.ingentaconnect.com/content/jbp/ijcl/2007/00000012/00000001/art00004?crawler=true为 37% )。如果某些 POS 标签的百分比更高或更低,那么您可能会检测到“填充”文档。

于 2013-07-08T10:12:56.173 回答
1

如果您注意到一种模式,即常见的填充器总是使用低于特定大小的字体大小并且该大小(即 1-5)不是真正可读的,那么您可以假设这是“填充部分”。

然后您可以继续检查字体颜色是否也与背景颜色相同并将其删除该部分。

于 2013-06-06T13:19:50.300 回答
1

正如 Chris Sinclair 在您的问题中评论的那样,除非您有 google 级别的算法(甚至他们弄错了,因此有上诉程序),否则最好标记可能的关键字填充文件以供进一步人工审查......

如果一个页面有100个词,你在页面中搜索关键字出现次数(渲染填充1px或bgcolor无关),从而获得关键字密度计数,确实没有一定百分比的硬性方法'allways' 是关键字填充,一般 3-7% 是正常的。也许如果您检测到 10% 以上,那么您将其标记为“可能已填充”并留出供人工审核。

进一步考虑这些场景(取自此处):

  • 没有实质性附加值的电话号码列表
  • 列出网页试图排名的城市和州的文本块

以及关键字的上下文是什么。

很难正确地做到这一点。

于 2013-06-06T12:08:47.693 回答
1

像您已经做的那样使用前景色/背景色检测来检测标签滥用。对于大小检测,计算平均文本大小并删除异常值。还要对 textsize 设置预定义的限制(就像你已经做的那样)。

接下来是标签“blob”的结构。对于您的第一点,您可以只计算单词,如果一个单词出现得太频繁(可能比第二个单词多 5 倍),您可以将其标记为重复标签。

批量添加标签时,用户通常将它们全部添加到一个位置,因此您可以查看已知的“欺诈标签”是否彼此相邻出现(可能中间有一两个词)。

如果您至少可以识别一些常见的“欺诈标签”并且想要更高级,那么您可以执行以下操作:

  • 将文档拆分为具有相同文本大小/字体的部分,并分别分析每个部分。为了获得更好的结果,对使用几乎相同字体/大小的部分进行分组,而不仅仅是那些字体/大小完全相同的部分。
  • 计算每个已知标签的出现次数,当超出您设置的某个限制时,这部分文档将被删除或文档被标记为“坏”(如“使用过多标签”)

无论您的检测有多先进,只要人们知道它在那里并且或多或少地知道它是如何工作的,他们就会找到绕过它的方法。

发生这种情况时,您应该标记有问题的文件并自己查看它们。然后,如果您注意到您的检测算法出现误报,您可以改进它。

于 2013-06-06T12:10:40.140 回答