从文本提取信息外文翻译资料

 2022-07-26 16:04:15

英语原文共 31 页,剩余内容已隐藏,支付完成后下载完整资料


从文本提取信息

对于任何给定的问题,很可能已经有人把答案写在某个地方了。以电子形式提供的自然语言文本的数量真的惊人,并且与日俱增。然而,自然语言的复杂性使访问这些文本中的信息非常困难。NLP 目前的技术水平仍然有很长的路要走,才能够从不受限制的文本建立通用的意义重现。如果我们不是集中我们的精力在问题或“实体关系”的有限集合,例如:“不同的设施位于何处”或“谁被什么公司雇用”上,我们就能取得重大进展。本章的目的是要回答下列问题:

1. 我们如何能构建一个系统,从非结构化文本中提取结构化数据?

2. 有哪些稳健的方法识别一个文本中描述的实体和关系?

3. 哪些语料库适合这项工作,我们如何使用它们来训练和评估我们的模型?

一路上,我们将应用最后两章中的技术来解决分块和命名实体识别。

信息提取

信息有很多种“形状”和“大小”。一个重要的形式是结构化数据:实体和关系的可预测的规范的结构。例如:我们可能对公司和地点之间的关系感兴趣。给定一个公司,我们希望能够确定它做业务的位置;反过来,对于给定位置,我们会想发现哪些公司在该位置做业务。如果我们的数据是表格形式,如表7.1中的例子,那么回答这些问题就很简单了。

如果这个位置数据被作为一个元组(entity, relation, entity)的链表存储在Python 中,那么这个问题:“哪些组织在亚特兰大经营?”可翻译如下:

gt;gt;gt; print [org for (e1, rel, e2) if rel==#39;IN#39; and e2==#39;Atlanta#39;]

[#39;BBDO South#39;, #39;Georgia-Pacific#39;]

如果我们尝试从文本中获得相似的信息,事情就比较麻烦了。例如:思考下面的片段(来自nltk.corpus.ieer,fileid为NYT19980315.0085)

The fourth Wells account moving to another agency is the packaged paperproducts division of Georgia-Pacific Corp., which arrived at Wells only last fall. Like Hertz and the History Channel, it is also leaving for an Omnicom-owned agency, the BBDO South unit of BBDO Worldwide. BBDO South in Atlanta, which handles corporate advertising for Georgia-Pacific, will assume additional duties for brands like Angel Soft toilet tissue and Sparkle paper towels, said Ken Haldin, a spokesman for Georgia-Pacific in Atlanta.

如果你通读了上述片段,你将收集到回答例子问题所需的信息。但我们如何能让一台机器理解上述片段返回链表[#39;BBDO South#39;, #39;Georgia-Pacific#39;]作为答案呢?这显然是一个困难得多的任务。与表7.1不同,上述片段不包含连结组织名和位置名的结构。 这个问题的解决方法之一是建立一个非常通用的意义重现(第10 章)。在这一章中,我们采取不同的方法,提前定为我们将只查找文本中非常具体的各种信息,如:组织和地点之间的关系。不是试图用文字像上述片段那样直接回答这个问题,我们首先将自然语言句子这样的非结构化数据转换成表 7-1的结构化数据。然后,利用强大的查询工具,如SQL语句。这种从文本获取意义的方法被称为信息提取。

信息提取有许多应用,包括商业智能、简历收获、媒体分析、情感检测、专利检索、电子邮件扫描。当前研究的一个特别重要的领域是提取出电子科学文献的结构化数据,特别是在生物学和医学领域。

信息提取结构

图7-1 显示了一个简单的信息提取系统的结构。它开始于使用第3 章和第5 章讨论过的几个程序处理文档:首先,使用句子分割器将该文档的原始文本分割成句,使用分词器将每个句子进一步细分为词。接下来,对每个句子进行词性标注,在下一步命名实体识别中将证明这是非常有益的。在这一步,我们寻找每个句子中提到的潜在的有趣的实体。最后,我们使用关系识别搜索文本中不同实体间的可能关系。

图7.1 信息提取的简单流水线结构

该系统以一个文档的原始文本作为其输入,生成 (entity, relation, entity)元组的一个链表作为输出 。 例如 :假设一个文档表明 Georgia -Pacific 公司位于 Atlanta,它可能产生元组 ([ORG: #39;Georgia-Pacific#39;] #39;in#39; [LOC: #39;Atla nta#39;]) 。

要执行前面三项任务,我们可以定义一个函数,简单地连接NLTK 中默认的句子分割器,分词器和词性标注器:

gt;gt;gt; def ie_preprocess(document):

... sentences = nltk.sent_tokenize(document)

... sentences = [nltk.word_tokenize(sent) for sent in sentences]

... sentences = [nltk.pos_tag(sent) for sent in sentences]

接下来,命名实体识别中,我们分割和标注可能组成一个有趣关系的实体。通常情况下,这些将被定义为名词短语,例如 the knights who say 'ni'或者适当的名称如 Monty Python。 在一些任务中,同时考虑不明确的名词或名词块也是有用的,如every student或 cats,这些不必要一定与定义NP 和适当名称一样的方式指示实体。

最后,在提取关系时,我们搜索对文本中出现在附近的实体对之间的特殊模式,并使用这些模式建立元组记录实体之间的关系。

分块

我们将用于实体识别的基本技术是分块(chunking),分割和标注图 7-2所示的多标识符序列。小框显示词级标识符和词性标注,大框显示较高级别的分块。每个这种较大的框叫做一大块(chunk)。就像分词忽略空白符,分块通常选择标识符的一个子集。同样像分词 一样,分块构成的源文本中的片段不能重叠。

在本节中,我们将在较深的层面探讨分块,以块的定义和表示开始。我们将看到正则表 达式和N-gram 的方法分块,使用 CoNLL-2000 分块语料库开发和评估分块器。我们将在7. 5节和 7.6节回到命名实体识别和关系抽取的任务。

名词短语分块

我们将首先思考名词短语分块,或NP-分块(NP-chunking),在那里我们寻找单独名 词短语对应的块。

例如:这里是一些《华尔街日报》文本,其中的NP-块用方括号标记:

  1. [ The/DT market/NN ] for/IN [ system-management/NN software/NN ] for/ IN [ Digital/NNP ] [ rsquo;s/POS hardware/NN ] is/VBZ fragmented/JJ enough/RB that/IN [ a/DT giant/NN ] such/JJ as/IN [ Computer/NNP Associates/NNPS ] should/MD do/VB well/RB there/RB ./.

正如我们可以看到,NP-块往往是比完整的名词短语的小片段。例如:the market for s ystem-management software for Digital#39;s hardware 是一个单独的名词短语(含两个嵌套的名 词短语),它中间有一个简单的 NP-块 the market。这种差异的动机之一是NP-块被定义为不包含其他的NP-块。因此,修饰一个名词的任何介词短语或从句将不包括在相应的NP-块内, 因为它们几乎可以肯定包含更多的名词短语。

NP-分块信息最有用的来源之一是词性标记。这是在我们的信息提取系统中进行词性标 注的动机之一。我们在例 7-1中用一个已经标注词性的例句来演示这种方法。为了创建一个 NP-块,我们将首先定义一个块语法,规则句子应如何分块。在本例中,我们将用一个正则 表达式规则定义一个简单的语法。这条规则是说一个NP-块由一个可选的限定词(DT) 后面跟着任何数目的形容词(JJ)然后是一个名词(NN)组成。使用此语法,我们创建了一个块分析器,测试我们的例句④。结果是一棵树,我们可以输出⑤或图形显示⑥。

标记模式

组成一个块语法的规则使用标记模式来描述已标注的词的序列。一个标记模式是一个用尖括号分隔的词性标记序列,如lt;DTgt;?lt;JJgt;*lt;NNgt;。标记模式类似于正则表达式模式(3. 4节)。现在,思考下面的来自《华尔街日报》的名词短语:

another/DT sharp/JJ dive/NN

trade/NN figures/NNS

any/DT new/JJ policy/NN measures/NNS

earlier/JJR stages/NNS

Panamanian/JJ dictator/NN Manuel/NNP Noriega/NNP

我们可以使用轻微改进的上述第一个标记模式来匹配这些名词短语,如lt;DTgt;?lt;JJ.* gt;*lt;NN.*gt; 。这将把任何以一个可选的限定词开头,后面跟零个或多个任何类型的形容词(包括相对形容词,如earlier/JJR),后面跟一个或多个任何类型的名词的标识符序列分块。

用正则表达式分块

要找到一个给定的句子的块结构,RegexpParser分块器以一个没有标识符被分块的平面结构开始。轮流应用分块规则,依次更新块结构。所有的规则都被调用后,返回块结构。

加缝隙

有时定义我们想从一个块排除什么比较容易。我们可以为不包括在一大块中的一个标识符序列定义一个缝隙。在下面的例子中,barked/VBD at/IN 是一个缝隙:

[ the/DT little/JJ yellow/JJ dog/NN ] barked/VBD at/IN [ the/DT cat/NN ]

加缝隙是从一大块中去除一个标识符序列的过程。如果匹配的标识符序列贯穿一整块,那么这一整块会被去除;如果标识符序列出现在块中间,这些标识符会被去除,在以前只有一个块的地方留下两个块。如果序列在块的周边,这些标记被去除,留下一个较小的块。表 7-2演示了这三种可能性。

开发和评估分块器

现在你对分块的作用有了一些了解,但我们并没有解释如何评估分块器。和往常一样, 这需要一个合适的已标注语料库。我们一开始寻找将IOB 格式转换成 NLTK树的机制,然 后是使用已分块的语料库如何在一个更大的规模上做这个。我们将看到如何为一个分块器相 对一个语料库的准确性打分,再看看一些数据驱动方式搜索 NP块。我们整个的重点在于扩 展一个分块器的覆盖范围。

读取IOB格式与CoNLL2000分块语料库

使用corpora 模块,我们可以加载已标注的《华尔街日报》文本,然后使用 IOB符号 分块。这个语料库提供的块类型有NP,VP 和PP。正如我们已经看到的,每个句子使用多 行表示,如下所示:

he PRP B-NP

accepted VBD B-VP

the DT B-NP

position NN I-NP

...

转换函数chunk.conllstr2tree()用这些多行字符串建立一个树表示。此外它允许我们选择使用三个块类型的任何子集,这里只是NP 块:

gt;gt;gt; text = #39;#39;#39;

... he PRP B-NP

... accepted VBD B-VP

... the DT B-NP

... position NN I-NP

... of IN B-PP

... vice NN B-NP

... chairman NN I-NP

... of IN B-PP

... Carlyle NNP B-NP

... Group NNP I-NP

... , , O

... a DT B-NP

... merchant NN I-NP

... banking NN I-NP

... concern NN I-NP

... . . O

... #39;#39;#39;

gt;gt;gt; nltk.chunk.conllstr2tree(text, chunk_types=[#39;NP#39;]).draw()

我们可以使用NLTK 的 corpus 模块访

全文共10679字,剩余内容已隐藏,支付完成后下载完整资料


资料编号:[144585],资料为PDF文档或Word文档,PDF文档可免费转换为Word

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。