DIPRE

<!-- /* Font Definitions */ @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:"Cambria Math"; panose-1:2 4 5 3 5 4 6 3 2 4; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:-1610611985 1107304683 0 0 159 0;} @font-face {font-family:Calibri; panose-1:2 15 5 2 2 2 4 3 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:-1610611985 1073750139 0 0 159 0;} @font-face {font-family:"/@宋体"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-unhide:no; mso-style-qformat:yes; mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; mso-pagination:none; font-size:10.5pt; mso-bidi-font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:宋体; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi; mso-font-kerning:1.0pt;} h1 {mso-style-priority:9; mso-style-unhide:no; mso-style-qformat:yes; mso-style-link:"标题 1 Char"; mso-style-next:正文; margin-top:17.0pt; margin-right:0cm; margin-bottom:16.5pt; margin-left:0cm; text-align:justify; text-justify:inter-ideograph; line-height:240%; mso-pagination:lines-together; page-break-after:avoid; mso-outline-level:1; font-size:22.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:宋体; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi; mso-font-kerning:22.0pt; font-weight:bold;} p {mso-style-noshow:yes; mso-style-priority:99; mso-margin-top-alt:auto; margin-right:0cm; mso-margin-bottom-alt:auto; margin-left:0cm; mso-pagination:widow-orphan; font-size:12.0pt; font-family:宋体; mso-bidi-font-family:宋体;} p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph {mso-style-priority:34; mso-style-unhide:no; mso-style-qformat:yes; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; text-indent:21.0pt; mso-char-indent-count:2.0; mso-pagination:none; font-size:10.5pt; mso-bidi-font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:宋体; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi; mso-font-kerning:1.0pt;} span.1Char {mso-style-name:"标题 1 Char"; mso-style-priority:9; mso-style-unhide:no; mso-style-locked:yes; mso-style-link:"标题 1"; mso-ansi-font-size:22.0pt; mso-bidi-font-size:22.0pt; mso-font-kerning:22.0pt; font-weight:bold;} .MsoChpDefault {mso-style-type:export-only; mso-default-props:yes; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page Section1 {size:595.3pt 841.9pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:42.55pt; mso-footer-margin:49.6pt; mso-paper-source:0; layout-grid:15.6pt;} div.Section1 {page:Section1;} /* List Definitions */ @list l0 {mso-list-id:857423642; mso-list-type:hybrid; mso-list-template-ids:1199838004 -1603782386 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;} @list l0:level1 {mso-level-tab-stop:none; mso-level-number-position:left; margin-left:18.0pt; text-indent:-18.0pt;} ol {margin-bottom:0cm;} ul {margin-bottom:0cm;} -->

二次迭代模式扩展

在我业余的时间里,我花费了一年的时间对这个问题进行了研究。首先,我总结一下概念:将已知关系的两个数据点作为种子,将此种子作为算法的输入;算法搜索 Internet ,去寻找含有这个种子的网页;当一个资源被发现,算法依据这个种子构造正则表达式,并用这个模式去搜索这个网页,寻找和这个模式匹配的数据点。

Sergey Brin ,对这个思路有专利权,不用再去专利局寻找。但是,他的理论有很大的提高空间(去斯坦福大学网站可以看到),我回忆,他的方法是在同一个网页使用模式去寻找数据点,我扩展了他的生成模式方法,并通过网络测试了这个方法,使用频繁测试,去验证这个模式是否代表了数据库产生的模式。

爱因斯坦说过,如果一个理论不能用简单的方式阐述,那么它有可能是假的。所以我使用了彩色的代码和垂直的流程图来阐述这个算法。浏览过这个算法图之后,我加入了一个测试样本,使用这个方法流程图来阐述测试过程,这样你就可以看到一个实际的输出。

 

我对这种抽取方法总结出了一些经验。我浪费了大量的时间从一个独立种子匹配得到的大规模数据集里清理结果

1.       在你的算法里使用统计数据的方法去选择下一个种子元组。为了获得种子,我存储了每一个匹配,即使它与前面域里匹配的结果相同。你可以使用一种查询的方式选择重复出现次数最高的元组作为你的下一个种子,这样可以确保你为这个算法提供的种子再次有效。不使用统计数据分析,有可能导致算法失败。

2.  如果你的算法分析的是HTML 字符串,确保你的正则表达式使用标签替换ID 属性。我采用每一个ID=XY ”模式,并使用诸如ID=.*? ”通配符去替换它,这样可以确保你补偿动态下载的数据。使用了替换内部属性值的方法,使我的抓取数据扩大了一倍。

3.  对于网页抓取,使用统计方法去处理泡沫网站,所谓的泡沫网站是指返回较多的在抓取列表的顶端数据。但是,确保你使用一种机制去随机化抓取模式以此保证你不再连续的碰到相同的网址。我加入了T_LAST_VISITED 表,这个表可以登录最近20 分钟访问过的网址,使用简单的匹配,就可以保证我在20 分钟访问的网站都是唯一的。因此,使用了我这个泡沫查询方法将最重要的元组推入到顶部,保证一小部分区域依赖的数据进入我们的元组表。

4.       关于提取数据模式,虽然我处理了不同的属性信息,如 ID= .* ?”,我没有删除中间数据,例如,下面的情况,对于我的算法匹配将会返回假。
[td]Of Mice and Men[/td] [td]ISBN:0142000671[/td] [td]by Steinbeck, John[/td]
原因是 ISBN 号是唯一的,所以这个匹配产生的模式将不会匹配任何其他的值,我遇到了这个问题,在我测试棒球卡的时候,因为卡号是唯一的,我遇到了大量的模式拥有唯一的信息。一种解决方法就是识别 >< 符号之间的数据类型,并让算法产生通配符,然后使用算法进行频率测试将其替换。例如,创建一个通配符模式“ ISBN:0142000671 ”,产生通配符基于数据模式“ [A-Z]{4}/:[0-9]{10}” 。方法比较有效对于经常产生这种中间数据的网页。

这个方法的底线是会产生失真。唯一的解决办法就是使用统计抓取,并统计的选择种子。做到了这些,你可以查询置顶的“干净”部分,有很高的数据精确度和置信度。在“ Of Mice and Men / Steinbeck John ”种子,我几乎没发现失真。我做了查询去寻找作者域中含有数字的元组,在 700000 仅仅发现 20-30 记录有数字。如果我有计算资源使得抓取器继续,它可能会建立一个作者和主题的完全资源库。由于统计抓取和统计种子模式的成功,绝大部分的 CPU 时间都是在处理正则表达式。对于它碰到每一网页,能够抽取 50 100 个作者和主题元组。所以如果一个机遇统计的算法成功,你会发现随着时间推移,抓取时间将会减少而 CPU 处理正则表达式的时间将会上升。

 

我想我使这个算法工作了。现在,我的基本工程已经建立了一个应用程序,并成功识别了语法使用基于大规模数据资源,存在与 Internet 上。其中之一的成果将被用作语法规则去抽取表格数据(就想 DIPRE )。最初,我打算使用开源语法,词典和索引区生成算法,但是我发现这样不好。我知道语言学,语言和习语发展如此之快以至于使用统计规则集的方法去适应他们是不可能的。规则集需要随着语言的演化而改变。所以,我认为最好的方法是创建一个算法,实时抓取 Internet 上的数据并在实际语言使用的基础上产生规则。我不打算描述我的算法。我已经做了很多实验并且很成功,我在期待一次大规模的测试,毫无疑问,这将消耗很大资源,但是这的确很好。

 

All information on this page is copyrighted (2007) by Alex Mayers

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值