18

有很多关于 HTML 内容提取的学术工作,例如 Gupta & Kaiser (2005) Extracting Content from Accessible Web Pages,这里还有一些感兴趣的迹象,例如onetwothree,但我不太清楚后者的实践如何很好地反映了前者的思想。最佳做法是什么?

指向良好(特别是开源)实现的指针和对实现的良好学术调查将是我正在寻找的那种东西。

后记第一个:确切地说,我所追求的那种调查将是一篇论文(已发表,未发表,等等),它讨论了学术文献中的标准和一些现有的实现,并分析了实现的不成功程度从标准的角度来看。而且,真的,发到邮件列表的帖子也对我有用。

后记第二个要明确的是,在我接受了Peter Rowell的回答之后,我们可以看到这个问题导致了两个子问题:(i)清理不合格HTML的已解决问题,最推荐Beautiful Soup解决方案,以及(ii)未解决的问题或将垃圾(主要是网站添加的样板和促销材料)与肉类(认为该页面可能有趣的那种人实际上认为相关的内容)分离。解决最先进的技术,新的答案需要明确地解决从肉到肉的问题。

4

8 回答 8

18

提取对不同的人可能意味着不同的事情。能够处理所有损坏的 HTML 是一回事,Beautiful Soup 显然是该部门的赢家。但 BS 不会告诉你什么是粗粮,什么是肉。

从计算语言学家的角度考虑内容提取时,事情看起来不同(而且丑陋)。在分析页面时,我只对页面的特定内容感兴趣,减去所有导航/广告/等。粗鲁。你不能开始做有趣的事情——共现分析、短语发现、加权属性向量生成等——直到你摆脱了麻烦。

OP 引用的第一篇论文表明这就是他们试图实现的目标——分析一个站点,确定整体结构,然后减去它,瞧!你只有肉——但他们发现这比他们想象的要难。他们从改进的可访问性角度解决了这个问题,而我是一个早期的搜索引擎专家,但我们都得出了相同的结论:

将残羹剩饭与肉分开很难。并且(在问题的字里行间阅读)即使删除了杂物,如果没有仔细应用语义标记,也很难确定文章的“作者意图”。从 citeseer 之类的网站(以非常高的信噪比干净且可预测地布局)获取肉比处理随机 Web 内容要容易2 或 3 个数量级。

顺便说一句,如果您正在处理较长的文档,您可能会对Marti Hearst(现为加州大学伯克利分校的教授)所做的工作特别感兴趣。她的博士论文和其他关于在大型文档中进行子主题发现的论文让我对在较小的文档中做类似的事情有了很多见解(令人惊讶的是,这可能更难处理)。但你只能在摆脱杂物之后才能做到这一点。


对于少数可能感兴趣的人,这里有一些背景故事(可能是题外话,但我今晚有那种心情):

在 80 年代和 90 年代,我们的客户大多是政府机构,他们的眼光超出了预算,他们的梦想让迪士尼乐园看起来很单调。他们正在收集他们能拿到的所有东西,然后去寻找一种能以某种方式(巨大的手波)提取文件“意义”的灵丹妙药技术。对。他们找到我们是因为我们是 1986 年做“内容相似性搜索”的一家奇怪的小公司。我们给了他们几个演示(真实的,不是伪造的),这让他们吓坏了。

我们已经知道的一件事(他们花了很长时间才相信我们)是每个系列都是不同的,需要它自己的特殊扫描仪来处理这些差异。例如,如果你所做的只是咀嚼直接的报纸故事,那么生活就很容易了。标题主要告诉你一些有趣的事情,故事是用金字塔风格写的——第一段或第二段有谁/什么/何地/何时的内容,然后接下来的段落对此进行了扩展。就像我说的,这很容易。

杂志文章怎么样?哦,上帝,不要让我开始!标题几乎总是毫无意义,结构从一个杂志到下一个,甚至从一个杂志的一个部分到下一个。拿起一份《连线》和一份《大西洋月刊》。查看一篇主要文章,并尝试找出一篇有意义的段落摘要来概括文章的内容。现在试着描述一个程序如何完成同样的事情。同一组规则是否适用于所有文章?甚至来自同一杂志的文章?不,他们没有。

抱歉,这听起来像个脾气暴躁的人,但这个问题真的很难

奇怪的是,谷歌取得如此成功的一个重要原因(从搜索引擎的角度来看)是他们非常重视来自另一个站点的链接中和周围的文字。该链接文本代表一种由其链接到的站点/页面的人员完成的小型摘要,这正是您在搜索时想要的。它适用于几乎所有类型/布局样式的信息。这是一个非常出色的洞察力,我希望我自己也有过。但这对我的客户没有任何好处,因为从昨晚的莫斯科电视节目表中没有链接到他们捕获的一些随机电传消息,或者与埃及报纸的某些 OCR 版本很差的链接。

/mini-rant-and-trip-down-memory-lane

于 2009-12-26T03:05:54.343 回答
14

一个词:锅炉管。

对于新闻领域,在代表性语料库上,我们现在的提取准确率达到 98% / 99%(平均/中位数)

也完全独立于语言(今天,我了解到它也适用于尼泊尔语)。

免责声明:我是该作品的作者。

于 2012-04-25T20:29:36.237 回答
6

你见过锅炉管吗?发现它在一个类似的问题中提到。

于 2010-12-21T17:27:40.153 回答
5

我遇到过http://www.keyvan.net/2010/08/php-readability/

去年我将 Arc90 的 Readability 移植到了五个过滤器项目中。一年多过去了,可读性有了很大的提高——这要感谢 Chris Dary 和 Arc90 团队的其他成员。

作为全文 RSS 服务更新的一部分,我开始将更新的版本 (1.6.2) 移植到 PHP,并且代码现在在线。

对于不熟悉的人来说,Readability 是为用作浏览器插件(一个书签)而创建的。一键转换网页以方便阅读并消除杂乱。Apple 最近将其整合到 Safari 阅读器中。

它对于内容提取也非常方便,这就是我想首先将它移植到 PHP 的原因。

于 2010-12-20T12:39:47.740 回答
3

有一些开源工具可以执行类似的文章提取任务。 https://github.com/jiminoc/goose 由 Gravity.com 开源

它包含有关 wiki 的信息以及您可以查看的源代码。有几十个单元测试显示从各种文章中提取的文本。

于 2011-05-08T16:07:12.857 回答
2

多年来,我一直与 Peter Rowell 一起从事各种信息检索项目,其中许多涉及从各种标记源中提取非常困难的文本。

目前,我专注于从诸如 Google 之类的“消防水带”资源中提取知识,包括它们的 RSS 管道,这些管道可以吸出大量本地、区域、国家和国际新闻文章。在许多情况下,标题是丰富而有意义的,但只是用来吸引网站访问量的“钩子”,而实际文章是无意义的段落。这似乎是一种旨在提高流量评级的“反向垃圾邮件”。

即使使用最简单的文章长度度量来对文章进行排名,您也必须能够从标记中提取内容。如今,主导 Web 内容的奇异标记和脚本在应用于 Google 和类似来源的大量特征时会破坏大多数开源解析包,例如 Beautiful Soup。根据经验,我发现 30% 或更多的挖掘文章会破坏这些包。这使我们重新专注于开发非常低级的、智能的、基于字符的解析器,以将原始文本与标记和脚本分开。您的解析(即内容的分区)越精细,您的工具就必须越智能(和手工制作)。为了让事情变得更有趣,随着 Web 创作随着新脚本方法的开发而不断变化和变化,您有一个移动的目标,标记和语言扩展。这倾向于支持基于服务的信息传递,而不是“收缩包装”应用程序。

回顾这些年来,似乎很少有关于这种提取的低级机制(即您所指的“前者的实践”)的学术论文,可能是因为它是如此特定的领域和内容。

于 2011-07-26T14:30:36.697 回答
1

Beautiful Soup是一个用 Python 编写的强大的 HTML 解析器。

它优雅地处理带有错误标记的 HTML,并且还作为 Python 库精心设计,支持迭代和搜索的生成器、子访问的点表示法(例如,访问<foo><bar/></foo>' usingdoc.foo.bar`)和无缝的 unicode。

于 2009-12-26T01:32:00.067 回答
0

如果您要从大量使用 javascript 的页面中提取内容,selenium 远程控制可以完成这项工作。它不仅适用于测试。这样做的主要缺点是你最终会使用更多的资源。好处是您将从丰富的页面/应用程序中获得更准确的数据馈送。

于 2011-08-16T00:06:48.737 回答