HTML 内容提取的最新技术水平如何?

2024-03-19

有很多关于 HTML 内容提取的学术工作,例如 Gupta & Kaiser (2005)从可访问的网页中提取内容 http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.60.357,以及这里一些有趣的迹象,例如,one https://stackoverflow.com/questions/435547/html-downloading-and-text-extraction, two https://stackoverflow.com/questions/1386107/text-extraction-from-html-java, and three https://stackoverflow.com/questions/1696914/extracting-pure-content-text-from-html-pages-by-excluding-navigation-and-chrome,但我不太清楚后者的实践在多大程度上反映了前者的思想。最佳实践是什么?

我正在寻找良好的(特别是开源)实现的指针和良好的实现学术调查。

后记第一:准确地说,我所追求的调查类型是一篇论文(已发表的、未发表的,等等),讨论学术文献中的标准和一些现有的实现,并从以下角度分析这些实现的不成功程度:的标准。而且,实际上,在邮件列表中发帖也对我有用。

后记第二需要明确的是,在我接受了 Peter Rowell 的回答之后,我们可以看到这个问题引出了两个子问题:(i)解决了清理不合格 HTML 的问题,对此,Beautiful Soup 是最推荐的解决方案,并且(ii) 未解决的问题或将粗俗(主要是网站添加的样板和宣传材料)与肉类(那些认为该页面可能有趣的人实际上发现相关的内容)分开。为了解决最先进的问题,新的答案需要明确解决肉制品问题。


提取对于不同的人来说可能意味着不同的事情。能够处理所有乱七八糟的 HTML 是一回事,而 Beautiful Soup 显然是这个领域的赢家。但 BS 不会告诉你什么是粗品,什么是肉。

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

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

将残渣与肉分开是很困难的。并且(在问题的字里行间阅读)即使删除了残渣,如果没有仔细应用语义标记,它也是如此极其很难确定文章的“作者意图”。从像 citeseer 这样的网站(干净且可预测地布局,具有非常高的信噪比)中获取信息是2或3个数量级比处理随机网页内容更容易。

顺便说一句,如果您正在处理较长的文档,您可能会对以下人员所做的工作特别感兴趣马蒂·赫斯特 http://people.ischool.berkeley.edu/~hearst/(现为加州大学伯克利分校教授)。她博士论文 http://people.ischool.berkeley.edu/~hearst/papers/phdthesis.pdf和其他关于在大型文档中进行子主题发现的论文让我对在较小的文档中做类似的事情有了很多见解(令人惊讶的是,这可能更难处理)。但只有在清除掉这些残骸之后才能做到这一点。


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

在 80 年代和 90 年代,我们的客户大多是政府机构,他们的眼睛比预算更大,他们的梦想让迪士尼乐园显得单调。他们收集了所有他们能得到的东西,然后开始寻找一种银弹技术,以某种方式(巨大的手波)提取文档的“含义”。正确的。他们找到我们是因为我们是一家奇怪的小公司,在 1986 年进行“内容相似性搜索”。我们给了他们几个演示(真实的,不是伪造的),这吓坏了他们。

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

杂志文章怎么样?天哪,别让我开始!标题几乎总是毫无意义,而且每本杂志的结构都不同,甚至杂志的一个章节到下一个章节的结构也各不相同。拿起一份《连线》杂志和一份《大西洋月刊》。查看一篇主要文章并尝试找出一个有意义的1 段总结文章的内容。现在尝试描述一个程序如何完成同样的事情。同一套规则是否适用于所有文章?甚至来自同一杂志的文章?不,他们没有。

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

奇怪的是,谷歌如此成功的一个重要原因(从搜索引擎的角度来看)是他们非常重视链接中和链接周围的单词来自另一个网站。该链接文本代表一种小型摘要由人类完成它链接到的网站/页面的名称,正是您搜索时想要的。它适用于几乎所有类型/布局风格的信息。这是一个非常精彩的见解,我希望我自己也有这样的见解。但这不会给我的客户带来任何好处,因为没有链接从昨晚的莫斯科电视节目到他们捕获的一些随机电传信息,或者是埃及报纸的一些 OCR 版本。

/迷你咆哮和绊倒记忆通道

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTML 内容提取的最新技术水平如何? 的相关文章

随机推荐

  • 从 Django 1.7.1 升级到 1.8.2 失败

    我的 Django 1 7 1 应用程序运行良好 但我想升级到更新的版本 1 8 2 我正在按照说明进行操作here https docs djangoproject com en 1 8 howto upgrade version 基本上
  • 如何在提交后的钩子脚本中获取项目路径?(git)

    我想调用位于存储库中的脚本 我当然可以执行以下操作 bin sh myscript sh 但我认为这不太好 那么如何在提交后脚本中获取项目的路径呢 When you re dealing with a non bare repository
  • 动态对话框——bash 中的菜单框

    我正在寻找有关在 bash 中制作动态对话框菜单框的良好解释 我正在尝试从具有如下结构的文件加载用户列表 user rw412 0 2 rx511 23 1 sgo23 9 2 fs352 1 4 another user rw412 0
  • 阿帕奇“找不到文件。”而不是 404. 错误文档

    我想设置自定义 404 错误文档 但我遇到了问题 首先 我的 htaccess 中有两个 RewriteRules RewriteRule 2 3 php lang 1 L RewriteRule 2 3 4 php lang 1 L 所以
  • 在新的 Android Studio 项目上获取“错误:无法在 null 对象上获取属性 ':lib'”

    我已经使用 Android Studio 创建了一个新项目 并在其中添加了新的 lib 项目 但现在我得到了 Error Cannot get property lib on null object 显然我设法通过添加逗号来解决它setti
  • Java 中 10,000 以内且 3、5 或 7 的倍数的数字之和

    我知道如何让程序将 3 5 和 7 中每一个的倍数总和相加 但我不确定如何让程序只使用每个数字一次 例如 我可以让程序找出所有数字并将它们相加为 3 然后对 5 执行相同操作 但数字 15 将出现在最终数字中两次 我不确定如何让它只接受一次
  • Spring 验证异常:BindException

    提交表格至addUser控制器发生异常 严重 Servlet DispatcherServlet 的 Servlet service 抛出异常 org springframework validation BindException org
  • 在 yq 中传递 bash 变量

    我正在尝试在 yq 中传递 bash 变量 test yml configuration Properties corporate url https stackoverflow com temp configuration Propert
  • beforeunload 中的 ajax 会可靠执行吗?

    我有一个 HTML5 应用程序 需要在用户更改 刷新页面时发送断开连接 ajax 请求 我目前正在使用这段代码 window addEventListener beforeunload function event ajax url api
  • 如何在asp.net core应用程序中运行ssis包?

    我已经使用 Microsoft SqlServer Dts Runtime 在 ASP NET MVC 中运行包 但是我需要在 asp net core 中运行它 由于我们无法在 ASP NET Core 中添加单独的 DLL 我想知道是否
  • Android 应用程序复制保护和数据文件

    在我的应用程序中 我在代码中的以下硬编码位置访问我的 sqlite 数据库 数据 数据 com mydomain appname databases database db 如果我在 Market Place 中打开复制保护 我的应用程序仍
  • Telegram 机器人:如何隐藏内联键盘? PHP

    我制作了一个带有内联键盘的电报机器人 来自InlineKeyboardMarkup 我喜欢hide 或使其one time 用户响应后的键盘 我怎样才能在 PHP 中做到这一点 这是我的机器人的视图 有方法editMessageReplyM
  • 在 Backbone.js 中使用状态并登录用户

    我需要检查用户是否已登录并经过身份验证 然后才能让我的用户使用我的backbone js基于应用程序 用户身份验证作为属性存储在本机主干模型中 我在启动主路由器之前通过调用进行检查Backbone history start 这样 未经身份
  • 使用 React 内联样式设置背景图像

    我正在尝试访问静态图像以在内联中使用backgroundImageReact 中的属性 不幸的是 我对如何做到这一点已经一无所知 一般来说 我认为你只是做了如下操作 import Background from images backgro
  • 扩展方法中的 ArgumentNullException 或 NullReferenceException?

    在空实例上调用扩展方法 扩展方法不允许 时 您认为抛出的最佳异常类型是什么 由于扩展方法只不过是静态方法 您可能会认为它应该是 ArgumentNullException 但另一方面 它们的使用方式与实例方法类似 因此使用 NullRefe
  • 检测主线程之外的 UI 操作

    注 此问题涉及从后台线程调用 UIKit 时发出警告 https stackoverflow com questions 10976424 warn on calls to uikit from background threads但没有给
  • 如何将进度条连接到函数?

    我正在尝试将进度条连接到我的项目的函数 这是我到目前为止所拥有的 但我很确定它什么也没做 def main pgBar start function1 function2 function3 function4 pgBar stop 这是我
  • Postgresql - 在大数据库中使用数组的性能

    假设我们有一个包含 600 万条记录的表 有 16 个整数列和少量文本列 它是只读表 因此每个整数列都有一个索引 每条记录大约 50 60 字节 表名称为 项目 服务器为 12 GB RAM 1 5 TB SATA 4 核 所有 postg
  • 如何在[关闭]下实现带点的画廊滑动

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如何实现画廊下点滑动 我需要显示当前
  • HTML 内容提取的最新技术水平如何?

    有很多关于 HTML 内容提取的学术工作 例如 Gupta Kaiser 2005 从可访问的网页中提取内容 http citeseerx ist psu edu viewdoc summary doi 10 1 1 60 357 以及这里