提交 505a9403 编写于 作者: W wizardforcel

2020-12-29 16:56:44

上级 920980aa
......@@ -492,7 +492,7 @@ True
## 4.1 基于特征的语法中的合成语义学
在本章开头,我们简要说明了一种在句法分析的基础上建立语义表示的方法,使用在[9.](./ch09.html#chap-featgram)开发的语法框架。这一次,不是构建一个 SQL 查询,我们将建立一个逻辑形式。我们设计这样的语法的指导思想之一是组合原则。(也称为 Frege 原则;下面给出的公式参见[(Gleitman & Liberman, 1995)](./bibliography.html#partee1995lsc) 。)
在本章开头,我们简要说明了一种在句法分析的基础上建立语义表示的方法,使用在 9 开发的语法框架。这一次,不是构建一个 SQL 查询,我们将建立一个逻辑形式。我们设计这样的语法的指导思想之一是组合原则。(也称为 Frege 原则;下面给出的公式参见[(Gleitman & Liberman, 1995)](./bibliography.html#partee1995lsc) 。)
**组合原则**:整体的含义是部分的含义与它们的句法结合方式的函数。
......
......@@ -68,9 +68,9 @@ TIMIT 的第四个特点是语料库的层次结构。每个句子 4 个文件
图 1.3:基本语言数据类型——词汇和文本:它们的多样性中,词汇具有记录结构,而已标注文本具有时间组织。
不考虑它的复杂性,TIMIT 语料库只包含两种基本数据类型,词典和文本。正如我们在[2.](./ch02.html#chap-corpora)中所看到的,大多数词典资源都可以使用记录结构表示,即一个关键字加一个或多个字段,如 1.3 所示。词典资源可能是一个传统字典或比较词表,如下所示。它也可以是一个短语词典,其中的关键字是一个短语而不是一个词。词典还包括记录结构化的数据,我们可以通过对应主题的非关键字字段来查找条目。我们也可以构造特殊的表格(称为范例)来进行对比和说明系统性的变化,1.3 显示了三个动词。TIMIT 的说话者表也是一种词典资源。
不考虑它的复杂性,TIMIT 语料库只包含两种基本数据类型,词典和文本。正如我们在 2 中所看到的,大多数词典资源都可以使用记录结构表示,即一个关键字加一个或多个字段,如 1.3 所示。词典资源可能是一个传统字典或比较词表,如下所示。它也可以是一个短语词典,其中的关键字是一个短语而不是一个词。词典还包括记录结构化的数据,我们可以通过对应主题的非关键字字段来查找条目。我们也可以构造特殊的表格(称为范例)来进行对比和说明系统性的变化,1.3 显示了三个动词。TIMIT 的说话者表也是一种词典资源。
在最抽象的层面上,文本是一个真实的或虚构的讲话事件的表示,该事件的时间过程也在文本本身存在。一个文本可以是一个小单位,如一个词或句子,也可以是一个完整的叙述或对话。它可能会有标注如词性标记、形态分析、话语结构等。正如我们在 IOB 标注([7.](./ch07.html#chap-chunk))中所看到的可以使用单个词的标记表示更高层次的成分。因此,1.3 所示的文本的抽象就足够了。
在最抽象的层面上,文本是一个真实的或虚构的讲话事件的表示,该事件的时间过程也在文本本身存在。一个文本可以是一个小单位,如一个词或句子,也可以是一个完整的叙述或对话。它可能会有标注如词性标记、形态分析、话语结构等。正如我们在 IOB 标注(7)中所看到的可以使用单个词的标记表示更高层次的成分。因此,1.3 所示的文本的抽象就足够了。
不考虑单独的语料库的复杂性和特质,最基本的,它们是带有记录结构化数据的文本集合。语料库的内容往往偏重于这些类型中的一种或多种。例如:布朗语料库包含 500 个文本文件,但我们仍然可以使用表将这些文件与 15 种不同风格关联。在事情的另一面,WordNet 包含 117659 个同义词集记录,也包含许多例子句子(小文本)来说明词的用法。TIMIT 处在中间,含有大量的独立的文本和词汇类型的材料。
......@@ -629,7 +629,7 @@ Toolbox 格式的许多词汇不符合任何特定的模式。有些条目可能
('lx:rt:ps:pt:ge:tkp:dt:ex:xp:xe:ex:xp:xe', 27), ('lx:ps:pt:ge:tkp:nt:dt:ex:xp:xe', 20), ...]
```
检查完高频字段序列后,我们可以设计一个词汇条目的上下文无关语法。在 5.2 中的语法使用我们在[8.](./ch08.html#chap-parse)看到的 CFG 格式。这样的语法模型隐含 Toolbox 条目的嵌套结构,建立一个树状结构,树的叶子是单独的字段名。最后,我们遍历条目并报告它们与语法的一致性,如 5.2 所示。那些被语法接受的在前面加一个`'+'`❶,那些被语法拒绝的在前面加一个`'-'`❷。在开发这样一个文法的过程中,它可以帮助过滤掉一些标签❸。
检查完高频字段序列后,我们可以设计一个词汇条目的上下文无关语法。在 5.2 中的语法使用我们在 8 看到的 CFG 格式。这样的语法模型隐含 Toolbox 条目的嵌套结构,建立一个树状结构,树的叶子是单独的字段名。最后,我们遍历条目并报告它们与语法的一致性,如 5.2 所示。那些被语法接受的在前面加一个`'+'`❶,那些被语法拒绝的在前面加一个`'-'`❷。在开发这样一个文法的过程中,它可以帮助过滤掉一些标签❸。
```py
grammar = nltk.CFG.fromstring('''
......@@ -659,7 +659,7 @@ def validate_lexicon(grammar, lexicon, ignored_tags):
print("-", ':'.join(marker_list))
```
另一种方法是用一个词块分析器([7.](./ch07.html#chap-chunk)),因为它能识别局部结构并报告已确定的局部结构,会更加有效。在 5.3 中我们为词汇条目建立一个词块语法,然后解析每个条目。这个程序的输出的一个示例如 5.4 所示。
另一种方法是用一个词块分析器(7),因为它能识别局部结构并报告已确定的局部结构,会更加有效。在 5.3 中我们为词汇条目建立一个词块语法,然后解析每个条目。这个程序的输出的一个示例如 5.4 所示。
```py
grammar = r"""
......
......@@ -34,9 +34,9 @@ g. There are two ways to do this, AFAIK :smile: (internet discussion archive)
第二个发展是符号逻辑。它提供一个捕捉选定的自然语言的表达的逻辑证明的有关方面的形式化方法。符号逻辑中的形式化演算提供一种语言的句法和推理规则,并可能在一套理论模型中对规则进行解释;例子是命题逻辑和一阶逻辑。给定这样的演算和一个明确的句法和语义,通过将自然语言的表达翻译成形式化演算的表达式,联系语义与自然语言的表达成为可能。例如,如果我们翻译 John saw Mary 为公式`saw(j,m)`,我们(或明或暗地)将英语动词 saw 解释为一个二元关系,而 John 和 Mary 表示个体元素。更多的一般性的表达式如 All birds fly 需要量词,在这个例子中是∀,意思是对所有的:∀x (bird(x) → fly(x))。逻辑的使用提供了技术性的机制处理推理,而推理是语言理解的重要组成部分。
另一个密切相关的发展是组合原理,即一个复杂表达式的意思由它的各个部分的意思和它们的组合模式组成([10.](./ch10.html#chap-semantics))。这一原理提供了句法和语义之间的有用的对应,即一个复杂的表达式的含义可以递归的计算。考虑句子 It is not true that p,其中 p 是一个命题。我们可以表示这个句子的意思为 not(p)。同样,我们可以表示 John saw Mary 的意思为 saw(j, m)。现在,我们可以使用上述信息递归地计算 It is not true that John saw Mary 的表示,得到 not(saw(j,m))。
另一个密切相关的发展是组合原理,即一个复杂表达式的意思由它的各个部分的意思和它们的组合模式组成(10)。这一原理提供了句法和语义之间的有用的对应,即一个复杂的表达式的含义可以递归的计算。考虑句子 It is not true that p,其中 p 是一个命题。我们可以表示这个句子的意思为 not(p)。同样,我们可以表示 John saw Mary 的意思为 saw(j, m)。现在,我们可以使用上述信息递归地计算 It is not true that John saw Mary 的表示,得到 not(saw(j,m))。
刚刚简要介绍的方法都有一个前提,自然语言计算关键依赖于操纵符号表示的规则。NLP 发展的一个特定时期,特别是 1980 年代,这个前提为语言学家和 NLP 从业人员提供了一个共同的起点,导致一种被称为基于归一(基于特征)语法的形式化语法家族(参见[9.](./ch09.html#chap-featgram)),也导致了在 Prolog 编程语言上实现 NLP 应用。虽然基于语法的自然语言处理仍然是一个研究的重要领域,由于多种因素在过去的 15-20 年它已经有些黯然失色。一个显著的影响因素来自于自动语音识别。虽然早期的语音处理采用一个模拟一类基于规则的音韵处理的模型,典型的如 *Sound Pattern of English* [(Chomsky & Halle, 1968)](./bibliography.html#chomskyhalle68),结果远远不能够解决实时的识别实际的讲话这样困难的问题。相比之下,包含从大量语音数据中学习的模式的系统明显更准确、高效和稳健的。此外,言语社区发现建立对常见的测试数据的性能的定量测量的共享资源对建立更好的系统的过程有巨大帮助。最终,大部分的 NLP 社区拥抱面向数据密集型的语言处理,配合机器学习技术和评价为主导的方法的越来越多地使用。
刚刚简要介绍的方法都有一个前提,自然语言计算关键依赖于操纵符号表示的规则。NLP 发展的一个特定时期,特别是 1980 年代,这个前提为语言学家和 NLP 从业人员提供了一个共同的起点,导致一种被称为基于归一(基于特征)语法的形式化语法家族(参见 9),也导致了在 Prolog 编程语言上实现 NLP 应用。虽然基于语法的自然语言处理仍然是一个研究的重要领域,由于多种因素在过去的 15-20 年它已经有些黯然失色。一个显著的影响因素来自于自动语音识别。虽然早期的语音处理采用一个模拟一类基于规则的音韵处理的模型,典型的如 *Sound Pattern of English* [(Chomsky & Halle, 1968)](./bibliography.html#chomskyhalle68),结果远远不能够解决实时的识别实际的讲话这样困难的问题。相比之下,包含从大量语音数据中学习的模式的系统明显更准确、高效和稳健的。此外,言语社区发现建立对常见的测试数据的性能的定量测量的共享资源对建立更好的系统的过程有巨大帮助。最终,大部分的 NLP 社区拥抱面向数据密集型的语言处理,配合机器学习技术和评价为主导的方法的越来越多地使用。
## 当代哲学划分
......
......@@ -10,7 +10,7 @@
## 1 获取文本语料库
正如刚才提到的,一个文本语料库是一大段文本。许多语料库的设计都要考虑一个或多个文体间谨慎的平衡。我们曾在第[1.](./ch01.html#chap-introduction)章研究过一些小的文本集合,例如美国总统就职演说。这种特殊的语料库实际上包含了几十个单独的文本——每个人一个演讲——但为了处理方便,我们把它们头尾连接起来当做一个文本对待。第[1.](./ch01.html#chap-introduction)章中也使用变量预先定义好了一些文本,我们通过输入`from nltk.book import *`来访问它们。然而,因为我们希望能够处理其他文本,本节中将探讨各种文本语料库。我们将看到如何选择单个文本,以及如何处理它们。
正如刚才提到的,一个文本语料库是一大段文本。许多语料库的设计都要考虑一个或多个文体间谨慎的平衡。我们曾在第 1 章研究过一些小的文本集合,例如美国总统就职演说。这种特殊的语料库实际上包含了几十个单独的文本——每个人一个演讲——但为了处理方便,我们把它们头尾连接起来当做一个文本对待。第 1 章中也使用变量预先定义好了一些文本,我们通过输入`from nltk.book import *`来访问它们。然而,因为我们希望能够处理其他文本,本节中将探讨各种文本语料库。我们将看到如何选择单个文本,以及如何处理它们。
## 1.1 古腾堡语料库
......@@ -922,7 +922,7 @@ KeyError: 'blog'
条目包括一系列的属性-值对,如`('ps', 'V')`表示词性是`'V'`(动词),`('ge', 'gag')`表示英文注释是'`'gag'`。最后的 3 个配对包含一个罗托卡特语例句和它的巴布亚皮钦语及英语翻译。
Toolbox 文件松散的结构使我们在现阶段很难更好的利用它。XML 提供了一种强有力的方式来处理这种语料库,我们将在[11.](./ch11.html#chap-data)回到这个的主题。
Toolbox 文件松散的结构使我们在现阶段很难更好的利用它。XML 提供了一种强有力的方式来处理这种语料库,我们将在 11 回到这个的主题。
注意
......
......@@ -50,7 +50,7 @@ NLTK 语料库集合中有古腾堡项目的一小部分样例文本。然而,
>>> request.ProxyHandler(proxies)
```
变量`raw`包含一个有 1,176,893 个字符的字符串。(我们使用`type(raw)`可以看到它是一个字符串。)这是这本书原始的内容,包括很多我们不感兴趣的细节,如空格、换行符和空行。请注意,文件中行尾的`\r``\n`,这是 Python 用来显示特殊的回车和换行字符的方式(这个文件一定是在 Windows 机器上创建的)。对于语言处理,我们要将字符串分解为词和标点符号,正如我们在[1.](./ch01.html#chap-introduction)中所看到的。这一步被称为分词,它产生我们所熟悉的结构,一个词汇和标点符号的列表。
变量`raw`包含一个有 1,176,893 个字符的字符串。(我们使用`type(raw)`可以看到它是一个字符串。)这是这本书原始的内容,包括很多我们不感兴趣的细节,如空格、换行符和空行。请注意,文件中行尾的`\r``\n`,这是 Python 用来显示特殊的回车和换行字符的方式(这个文件一定是在 Windows 机器上创建的)。对于语言处理,我们要将字符串分解为词和标点符号,正如我们在 1 中所看到的。这一步被称为分词,它产生我们所熟悉的结构,一个词汇和标点符号的列表。
```py
>>> tokens = word_tokenize(raw)
......@@ -62,7 +62,7 @@ NLTK 语料库集合中有古腾堡项目的一小部分样例文本。然而,
['The', 'Project', 'Gutenberg', 'EBook', 'of', 'Crime', 'and', 'Punishment', ',', 'by']
```
请注意,分词需要 NLTK,但所有前面的打开一个 URL 以及读入一个字符串的任务都不需要。如果我们现在采取进一步的步骤从这个列表创建一个 NLTK 文本,我们可以进行我们在[1.](./ch01.html#chap-introduction)中看到的所有的其他语言的处理,也包括常规的列表操作例如切片:
请注意,分词需要 NLTK,但所有前面的打开一个 URL 以及读入一个字符串的任务都不需要。如果我们现在采取进一步的步骤从这个列表创建一个 NLTK 文本,我们可以进行我们在 1 中看到的所有的其他语言的处理,也包括常规的列表操作例如切片:
```py
>>> text = nltk.Text(tokens)
......@@ -1002,7 +1002,7 @@ abstracts and other compilations; iron and other metals
注意
这种自动和人工处理相结合的方式是最常见的建造新的语料库的方式。我们将在[11.](./ch11.html#chap-data)继续讲述这些。
这种自动和人工处理相结合的方式是最常见的建造新的语料库的方式。我们将在 11 继续讲述这些。
搜索语料也会有遗漏的问题,即漏掉了我们想要包含的情况。仅仅因为我们找不到任何一个搜索模式的实例,就断定一些语言现象在一个语料库中不存在,是很冒险的。也许我们只是没有足够仔细的思考合适的模式。
......
......@@ -801,7 +801,7 @@ def search2(substring, words):
注意
`permutations`函数使用了一种技术叫递归,将在下面 4.7 讨论。产生一组词的排列对于创建测试一个语法的数据十分有用([8.](./ch08.html#chap-parse))。
`permutations`函数使用了一种技术叫递归,将在下面 4.7 讨论。产生一组词的排列对于创建测试一个语法的数据十分有用(8)。
### 高阶函数
......
......@@ -884,7 +884,7 @@ def display():
注意
开发一个已标注语料库是一个重大的任务。除了数据,它会产生复杂的工具、文档和实践,为确保高品质的标注。标记集和其他编码方案不可避免地依赖于一些理论主张,不是所有的理论主张都被共享,然而,语料库的创作者往往竭尽全力使他们的工作尽可能理论中立,以最大限度地提高其工作的有效性。我们将在[11.](./ch11.html#chap-data)讨论创建一个语料库的挑战。
开发一个已标注语料库是一个重大的任务。除了数据,它会产生复杂的工具、文档和实践,为确保高品质的标注。标记集和其他编码方案不可避免地依赖于一些理论主张,不是所有的理论主张都被共享,然而,语料库的创作者往往竭尽全力使他们的工作尽可能理论中立,以最大限度地提高其工作的有效性。我们将在 11 讨论创建一个语料库的挑战。
## 5 N 元标注
......@@ -1067,7 +1067,7 @@ N 元标注器不应考虑跨越句子边界的上下文。因此,NLTK 的标
一般情况下,标注过程会损坏区别:例如当所有的人称代词被标注为`PRP`时,词的特性通常会失去。与此同时,标注过程引入了新的区别从而去除了含糊之处:例如`deal`标注为`VB``NN`。这种消除某些区别并引入新的区别的特点是标注的一个重要的特征,有利于分类和预测。当我们引入一个标记集的更细的划分时,在 N 元标注器决定什么样的标记分配给一个特定的词时,可以获得关于左侧上下文的更详细的信息。然而,标注器同时也将需要做更多的工作来划分当前的词符,只是因为有更多可供选择的标记。相反,使用较少的区别(如简化的标记集),标注器有关上下文的信息会减少,为当前词符分类的选择范围也较小。
我们已经看到,训练数据中的歧义导致标注器准确性的上限。有时更多的上下文能解决这些歧义。然而,在其他情况下,如[(Church, Young, & Bloothooft, 1996)](./bibliography.html#abney1996pst)中指出的,只有参考语法或现实世界的知识,才能解决歧义。尽管有这些缺陷,词性标注在用统计方法进行自然语言处理的兴起过程中起到了核心作用。1990 年代初,统计标注器令人惊讶的精度是一个惊人的示范,可以不用更深的语言学知识解决一小部分语言理解问题,即词性消歧。这个想法能再推进吗?第[7.](./ch07.html#chap-chunk)中,我们将看到,它可以。
我们已经看到,训练数据中的歧义导致标注器准确性的上限。有时更多的上下文能解决这些歧义。然而,在其他情况下,如[(Church, Young, & Bloothooft, 1996)](./bibliography.html#abney1996pst)中指出的,只有参考语法或现实世界的知识,才能解决歧义。尽管有这些缺陷,词性标注在用统计方法进行自然语言处理的兴起过程中起到了核心作用。1990 年代初,统计标注器令人惊讶的精度是一个惊人的示范,可以不用更深的语言学知识解决一小部分语言理解问题,即词性消歧。这个想法能再推进吗?第 7 中,我们将看到,它可以。
## 6 基于转换的标注
......
# 6\. 学习分类文本
模式识别是自然语言处理的一个核心部分。以`-ed`结尾的词往往是过去时态动词([5.](./ch05.html#chap-tag))。频繁使用`will`是新闻文本的暗示`(3)`。这些可观察到的模式——词的结构和词频——恰好与特定方面的含义关联,如时态和主题。但我们怎么知道从哪里开始寻找,形式的哪一方面关联含义的哪一方面?
模式识别是自然语言处理的一个核心部分。以`-ed`结尾的词往往是过去时态动词(5)。频繁使用`will`是新闻文本的暗示`(3)`。这些可观察到的模式——词的结构和词频——恰好与特定方面的含义关联,如时态和主题。但我们怎么知道从哪里开始寻找,形式的哪一方面关联含义的哪一方面?
本章的目的是要回答下列问题:
......@@ -253,7 +253,7 @@ classifier = nltk.NaiveBayesClassifier.train(train_set)
## 1.4 词性标注
[5.](./ch05.html#chap-tag)中,我们建立了一个正则表达式标注器,通过查找词内部的组成,为词选择词性标记。然而,这个正则表达式标注器是手工制作的。作为替代,我们可以训练一个分类器来算出哪个后缀最有信息量。首先,让我们找出最常见的后缀:
5 中,我们建立了一个正则表达式标注器,通过查找词内部的组成,为词选择词性标记。然而,这个正则表达式标注器是手工制作的。作为替代,我们可以训练一个分类器来算出哪个后缀最有信息量。首先,让我们找出最常见的后缀:
```py
>>> from nltk.corpus import brown
......
......@@ -166,7 +166,7 @@ sentence = [("Rapunzel", "NNP"), ("let", "VBD"), ("down", "RP"), ❶
## 2.6 词块的表示:标记与树
作为标注和分析之间的中间状态([8.](./ch08.html#chap-parse),词块结构可以使用标记或树来表示。最广泛的文件表示使用 IOB 标记。在这个方案中,每个词符被三个特殊的词块标记之一标注,`I`(内部),`O`(外部)或`B`(开始)。一个词符被标注为`B`,如果它标志着一个词块的开始。块内的词符子序列被标注为`I`。所有其他的词符被标注为`O`。`B`和`I`标记后面跟着词块类型,如`B-NP`, `I-NP`。当然,没有必要指定出现在词块外的词符类型,所以这些都只标注为`O`。这个方案的例子如 2.5 所示。
作为标注和分析之间的中间状态(8,词块结构可以使用标记或树来表示。最广泛的文件表示使用 IOB 标记。在这个方案中,每个词符被三个特殊的词块标记之一标注,`I`(内部),`O`(外部)或`B`(开始)。一个词符被标注为`B`,如果它标志着一个词块的开始。块内的词符子序列被标注为`I`。所有其他的词符被标注为`O`。`B`和`I`标记后面跟着词块类型,如`B-NP`, `I-NP`。当然,没有必要指定出现在词块外的词符类型,所以这些都只标注为`O`。这个方案的例子如 2.5 所示。
![Images/chunk-tagrep.png](Images/542fee25c56235c899312bed3d5ee9ba.jpg)
......@@ -532,7 +532,7 @@ sentence = [("Mary", "NN"), ("saw", "VBD"), ("the", "DT"), ("cat", "NN"),
注意
这个级联过程使我们能创建深层结构。然而,创建和调试级联过程是困难的,关键点是它能更有效地做全面的分析(见第[8.](./ch08.html#chap-parse)章)。另外,级联过程只能产生固定深度的树(不超过级联级数),完整的句法分析这是不够的。
这个级联过程使我们能创建深层结构。然而,创建和调试级联过程是困难的,关键点是它能更有效地做全面的分析(见第 8 章)。另外,级联过程只能产生固定深度的树(不超过级联级数),完整的句法分析这是不够的。
## 4.2 Trees
......@@ -743,7 +743,7 @@ IOB 格式(有时也称为 BIO 格式)由[(Ramshaw & Marcus, 1995)](./biblio
9. ◑ 有时一个词的标注不正确,例如"12/CD or/CC so/RB cases/VBZ"中的中心名词。不用要求手工校正标注器的输出,好的词块划分器使用标注器的错误输出也能运作。查找使用不正确的标记正确为名词短语划分词块的其他例子。
10. ◑ 二元词块划分器的准确性得分约为 90%。研究它的错误,并试图找出它为什么不能获得 100% 的准确率。实验三元词块划分。你能够再提高准确性吗?
11. ★ 在 IOB 词块标注上应用 N 元和 Brill 标注方法。不是给词分配词性标记,在这里我们给词性标记分配 IOB 标记。例如如果标记`DT`(限定符)经常出现在一个词块的开头,它会被标注为`B`(开始)。相对于本章中讲到的正则表达式词块划分方法,评估这些词块划分方法的表现。
12. ★ 在[5.](./ch05.html#chap-tag)中我们看到,通过查找有歧义的 n-grams 可以得到标注准确性的上限,即在训练数据中有多种可能的方式标注的 n-grams。应用同样的方法来确定一个 N 元词块划分器的上限。
12. ★ 在 5 中我们看到,通过查找有歧义的 n-grams 可以得到标注准确性的上限,即在训练数据中有多种可能的方式标注的 n-grams。应用同样的方法来确定一个 N 元词块划分器的上限。
13. ★ 挑选 CoNLL 语料库中三种词块类型之一。编写函数为你选择的类型做以下任务:
1. 列出与此词块类型的每个实例一起出现的所有标记序列。
2. 计数每个标记序列的频率,并产生一个按频率减少的顺序排列的列表;每行要包含一个整数(频率)和一个标记序列。
......
......@@ -559,7 +559,7 @@ grammar = nltk.PCFG.fromstring("""
31. ★ 使用回溯实现移位-规约分析器的一个版本,使它找出一个句子所有可能的解析,它可以被称为“递归上升分析器”。咨询维基百科关于回溯的条目`http://en.wikipedia.org/wiki/Backtracking`
32. ★ 正如我们在[7.](./ch07.html#chap-chunk)中所看到的,可以将词块表示成它们的词块标签。当我们为包含 gave 的句子做这个的时候,我们发现如以下模式:
32. ★ 正如我们在 7 中所看到的,可以将词块表示成它们的词块标签。当我们为包含 gave 的句子做这个的时候,我们发现如以下模式:
```py
gave NP
......
# 9\. 构建基于特征的语法
自然语言具有范围广泛的语法结构,用[8.](./ch08.html#chap-parse)中所描述的简单的方法很难处理的如此广泛的语法结构。为了获得更大的灵活性,我们改变我们对待语法类别如`S``NP``V`的方式。我们将这些原子标签分解为类似字典的结构,其特征可以为一个范围的值。
自然语言具有范围广泛的语法结构,用 8 中所描述的简单的方法很难处理的如此广泛的语法结构。为了获得更大的灵活性,我们改变我们对待语法类别如`S``NP``V`的方式。我们将这些原子标签分解为类似字典的结构,其特征可以为一个范围的值。
本章的目的是要回答下列问题:
......@@ -365,7 +365,7 @@ None
## 3.1 子类别
[8.](./ch08.html#chap-parse)中,我们增强了类别标签表示不同类别的动词,分别用标签`IV``TV`表示不及物动词和及物动词。这使我们能编写如下的产生式:
8 中,我们增强了类别标签表示不同类别的动词,分别用标签`IV``TV`表示不及物动词和及物动词。这使我们能编写如下的产生式:
```py
VP -> IV
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册