学习文法的好处

学习文法的一个好处是,它提供了一个概念性的框架和词汇拼写这些直觉。
成分结构基于对词与其他词结合在一起形成单元的观察。一个词序列形成这样一个单元被证明是可替代的——也就是说,在一个符合语法规则的句子中的词序列可以被一个更小的序列替代而不会导致句子不符合语法规则。例如下面这个句子:
eg:The little bear saw the fine fat trout in the brook.

在下图中,我们系统地用较短的序列替代较长的序列,并使其依然符合语法规则。事实上,形成一个单元的每个序列可以被一个单独的词替换,我们最终只有两个元素。

下图中,我们为我们在前面的图上看到的词增加了文法类别标签。标签 NP,VP 和PP 分别表示 名词短语, 动词短语和介词短语。

如果我们现在从最上面的行剥离出词汇,增加一个 S 节点,翻转图,最终我们得到一个标准的短语结构树。如下图所示:

上下文无关文法

一种简单的文法

按照惯例 ,第一条生产式的左端是文法的 开始符号,通常是 S,所有符合语法规则的树都必须有这个符
号作为它们的根标签。下面给出一个例子:

grammar1 = nltk.CFG.fromstring("""S -> NP VPVP -> V NP | V NP PPPP -> P NPV -> "saw" | "ate" | "walked"NP -> "John" | "Mary" | "Bob" | Det N | Det N PPDet -> "a" | "an" | "the" | "my"N -> "man" | "dog" | "cat" | "telescope" | "park"P -> "in" | "on" | "by" | "with"""")>>> sent = "Mary saw Bob".split()
>>> rd_parser = nltk.RecursiveDescentParser(grammar1)
>>> for tree in rd_parser.parse(sent):
...      print(tree)
(S (NP Mary) (VP (V saw) (NP Bob)))

句法类型:

Symbol Meaning Example
S sentence the man walked
NP noun phrase a dog
VP verb phrase saw a park
PP prepositional phrase(介词短语) with a telescope
Det determiner(限定词) the
N noun dog
V verb walked
P preposition in

VP -> V NP | V NP PP 代表这是VP -> V NP 和 VP -> V NP PP 的缩写。

上下文无关文法分析

递归下降分析

S→NP VP 生产式允许分析器替换这个目标为两个子目标:找到一个 NP,然后找到一个 VP。每个这些子目标都可以再次被子目标的子目标替代,使用左侧有 NP 和 VP 的产生式。
递归下降分析器在上述过程中建立分析树。带着最初的目标(找到一个 S),创建 S 根节点。随着上述过程使用文法的产生式递归扩展,分析树不断向下延伸(故名为递归下降)。我们可以在图形化示范 nltk.app.rdparser()中看到这个过程。

分析器以一颗包含节点 S 的树开始;每个阶段它会查询文法来找到一个可以用于扩大树的产生式;当遇到一个词汇产生式时,将它的词与输入比较;发现一个完整的分析树后,分析器会回溯寻找更多的分析树。
递归下降分析是一种 自上而下分析。自上而下分析器在检查输入之前先使用文法预测输入将是什么。
注意:RecursiveDescentParser 是无法处理形如 X -> X Y 的 左递归产生式。

移进-规约分析

一种简单的自下而上分析器是 移进-归约分析器。与所有自下而上的分析器一样,移进-归约分析器尝试找到对应文法生产式右侧的词和短语的序列,用左侧的替换它们,直到整个句子归约为一个 S。
移位-规约分析器反复将下一个输入词推到堆栈,这是 移位(shift)操作。如果堆栈上的前 n 项,匹配一些产生式的右侧的 n 个项目,那么就把它们弹出栈,并把产生式左边的项目压入栈。这种替换前 n 项为一项的操作就是 规约(reduce)操作。
当所有的输入都使用过,堆栈中只剩余一个项目,也就是一颗分析树作为它的根的 S 节点时,分器完成。
我们可以使用图形化示范 nltk.app.srparser()看到移位-规约分析算法步骤 。

左角落分析器(The Left-Corner Parser)

递归下降分析器的问题之一是当它遇到一个左递归产生式时,会进入无限循环。这是因为它盲目应用文法产生式而不考虑实际输入的句子。左角落分析器是我们已经看到的自下而上与自上而下方法的混合体。

例如:A->B C ,则我们说B是A的左角落。

左角落分析器是一个带自下而上过滤的自上而下的分析器。不像普通的递归下降分析器,它不会陷入左递归产生式的陷阱。在开始工作之前,左角落分析器预处理上下文无关文法建立一个表,其中每行包含两个单元,第一个存放非终结符,第二个存放那个非终结符可能的左角落的集合。例如:

Category Left-Corners (非终结符)
S NP
NP Det, PropN
VP V
PP P

分析器每次考虑产生式时,它会检查下一个输入词是否与左角落表格中至少一种非终结符的类别相容。

8.NLTK之分析句子结构相关推荐

  1. 《用Python进行自然语言处理》第8章 分析句子结构

    1. 我们如何使用形式化语法来描述无限的句子集合的结构? 2. 我们如何使用句法树来表示句子结构? 3. 语法分析器如何分析一个句子并自动构建语法树? 8.1 一些语法困境 语言数据和无限可能性 #语 ...

  2. python nltk 10 分析句子的意思

    10 分析句子的意思 Analyzing the Meaning of Sentences 1 自然语言理解 1.1 查询数据库 1.2 自然语言,语义学和逻辑学 2 命题逻辑 3 一阶逻辑 3.1 ...

  3. python自然语言处理 |分析句子的意思

    python自然语言处理的第10章 分析句子的意思,这一章在拆解英语的语法及对应于计算机语言的概念和内容变得更深更多,相应地需要理解和记忆的东西增多.整章读下来很吃力,可能大致有了个理解. 我们已经有 ...

  4. 第十章-分析句子的含义(还需要进行小的修改)

    我们已经看到,利用计算机的能力大规模处理文本是多么有用.然而,现在我们有了解析器和基于特征的语法,通过分析句子的意思,我们能做些类似的有用的事情吗?本章的目的是回答以下问题: 我们如何表示自然语言的意 ...

  5. 形容等待时间长的句子_雅思听力该如何准确辨别句子结构?学会结构精听,雅思8分轻松get!...

    雅思想考高分,总共分几步? 三步! 1第一步:稳稳抓住送分题. Part 1 信息表中常常考点有哪些? 人名拼写听起来好简单,实际上陷阱重重,暗藏玄机: 高频辨音你会不会? W和double U你分的 ...

  6. 《Python自然语言处理(第二版)-Steven Bird等》学习笔记:第10章 分析句子的意思

    第10章 分析句子的意思 10.1 自然语言理解 查询数据库 自然语言.语义和逻辑 10.2 命题逻辑 10.3 一阶逻辑 一阶定理证明 一阶逻辑语言总结 真值模型 独立变量和赋值 量化 量词范围歧义 ...

  7. 就是用计算机判断一个句子的语义,英语汉语词汇语义及句子结构对比

    一.词汇语义对比 汉语和英语都有丰富的词汇.汉英大量的对应词语是汉英翻译的语言基础.两种语言中存在许多不相对应的词语,主要表现为词语的空缺和词义的差别.例如: (1) (2) 车-vehicle, c ...

  8. 根据词袋模型使用Python实现一个简单的分析句子对相似度的软件

    使用词袋模型实现一个简单的分析句子对相似度的软件 1. 实验内容 本次实验使用词袋(bag of words)技术,利用词袋模型进行编程并计算了不少于10组句子对的相似度,同时设计了图形界面,可以在界 ...

  9. 自然语言处理(NLP):概述【NLP技术的四个维度:声音、单词、句子结构、语义】

    深度学习-自然语言处理:概述[NLP技术的四个维度:声音.单词.句子结构.语义] 一.NLP的主要问题 二.NLP技术的四个维度 1.声音 2.单词/Morphology层面的技术 2.1 Word ...

  10. C#分析数据库结构,使用XSL模板自动生成代码

    <html> <head> <TITLE>分析数据库结构,自动生成代码</TITLE> <meta http-equiv="Conten ...

最新文章

  1. csv文件示例_如何在R中使用数据框和CSV文件-带有示例的详细介绍
  2. python os.environ gpu_Tensorflow下如何实现多GPU数据并行训练?
  3. 1.2 学习笔记之数据类型
  4. php去除html标签_用PHP操作DOM (一)
  5. MySql 触发器同步备份数据表记录
  6. 定积分算法java_变步长梯形积分算法求解函数定积分
  7. 206.12.15随笔--最近内心的一些想法
  8. ES6 类继承 和 super的使用
  9. 学习笔记之七_第2层交换和生成树协议(STP)(CCNA知识考点)
  10. biopython1_序列操作
  11. 欧姆龙HOSTLINK协议,上位机软件欧姆龙HOSTLINK协议,适合欧姆龙全系列PLC
  12. 使用Java播放wav音乐
  13. 脑袋里是浆糊时的c++程序
  14. CSDN问答标签技能树(一) —— 基本框架的构建
  15. R语言学习笔记三:两独立样本t检验
  16. 笔记本电脑外接显示器出现灰屏
  17. mysql开启外网访问权限
  18. PHP阴历阳历天干地支纪年月日生肖五行24节气生辰八字
  19. C++版本ECDSA-with-SHA256签名验证
  20. ExcelVBA 之Select Case

热门文章

  1. 微信头像卡片制作,听说很火?
  2. 1、RFID标签介绍
  3. C++ 取模、求余运算
  4. python之numpy之方差numpy.var
  5. Java 山上有一口缸可以装50升水,现在有15升。老和尚叫小和尚下山挑水,每次挑5升,要挑几次。
  6. 农商行JAVA笔试题_银行笔试题
  7. phpstudy如何创建mysql_PHPStudy怎样创建数据库
  8. 输入日期得出星座c语言,根据日期计算星座
  9. 国内主机备案是干嘛的? 国内免备案主机是真的吗?
  10. v中国瓶装水市场营销状况与销售动态分析报告2022-2027年