一 如何使用形式化语法来描述无限的句子集合的结构?    --上下位无关文法

 
    1.1 一个例子: 
    grammar1 = nltk.parse_cfg("""
    S -> NP VP
    VP -> V NP | V NP PP
    PP -> P NP
    V -> "saw" | "ate" | "walked"
    NP -> "John" | "Mary" | "Bob" | Det N | Det N PP
    Det -> "a" | "an" | "the" | "my"
    N -> "man" | "dog" | "cat" | "telescope" | "park"
    P -> "in" | "on" | "by" | "with"
    """)
 
    1.2 文法特点:
    简单,分析语句子结构时,无需考虑上下文信息。
 
    二 我们如何表示句子结构
 
    2.1 句法树
 
    这个图片所展示的句法树和下面的括号序列是一样的:
    (S (NP Mary) (VP (V saw) (NP Bob)))
 
    三 如何分析句子结构    --句法解析方法
 
    3.1 从规则入手
 
    3.1.1 递归下降分析
 
    3.1.1.1 介绍:
    枚举可能的树形结构,自上往下构建句法树。
 
    3.1.1.2 特点:
 
    1) 无法处理一下类型的文法规则--bug!
    NP -> NP PP
    2) 漫无目的地枚举和重复计算--低效!
 
    3.2 从句子本身入手
 
    3.2.1 移近-规约分析
 
    3.2.1.1 介绍:
    移位-规约分析器反复将下一个输入词推到堆栈(见4.1 节),这是移位操作。如果堆栈
上的前n 项,匹配一些产生式的右侧的n 个项目,那么就把它们弹出栈,并把产生式左边的
项目压入栈。这种替换前n 项为一项的操作就是规约操作。此操作只适用于堆栈的顶部;规
约栈中的项目必须在后面的项目被压入栈之前做。当所有的输入都使用过,堆栈中只剩余一
个项目,也就是一颗分析树作为它的根的S 节点时,分析器完成。
    3.2.1.2 特点
    1) 不回溯,没有多少无效枚举,以线性的复杂度扫一遍就结束--高效!
    2) 由于只是简单的扫描一遍,没有回溯过程,可能会错过某些可行解--舍弃召回率换取运行效率!
 
    3.3 流行做法--动态规划
 
    3.3.1 介绍:
    把整个输入句子当做一个一维空间(可以当成数轴),任意一个连续子串,可以由起始位置和长度确定,以连续子串为状态,求出每一个子串可能对应的最后规约出来的项。
    
 
    3.3.2 特点:
    1) 以空间换时间,保存中间结果,不做重复计算--高效!
    2) 可以计算出所有可能的结果--不存在召回率问题!
    
    四 一个句子可能会有多个可能的句法树    --歧义
    4.1 一个例子
 
 
   4.2 解决方法--概率上下文无关文法
   在刚才的计算过程中,中间状态加上一个权重,表示这个区间建立成某个非终结状态子树的可能性,最终得到权重最大的一颗完整的句法树

Python自然语言处理 - 系列四的更多相关文章

  1. Python基础笔记系列四:工具的安装与配置

    本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 一开始是没有打算写工具这篇的,后来发现在某些情况下会遇到一些奇怪的问题,这 ...

  2. Python自然语言处理-系列一

    一:python基础,自然语言概念 from nltk.book import * 1,text1.concordance("monstrous")      用语索引 2,tex ...

  3. Python自然语言处理系列之模拟退火算法

    1.基本概念 模拟退火算法(Simulated Annealing,SA)是一种模拟固体降温过程的最优化算法.其模拟的过程是首先将固体加温至某一温度,固体内部的粒子随温度上升慢慢变为无序的状态,内能增 ...

  4. python 自然语言处理(四)____词典资源

    词典或者词典资源是一个词和/或短语及其相关信息的集合,例如:词性和词意定义等相关信息.词典资源附属于文本,而且通常在文本的基础上创建和丰富.下面列举几种nltk中的词典资源. 1. 词汇列表语料库 n ...

  5. Python自然语言处理 - 系列三

    有监督分类过程 ![enter image description here][1]例子:涉及一个特征器,给定一个姓名分析出是男性名字还是女性名字 分析:男性和女性的名字有一些鲜明的特点.以a,e 和 ...

  6. Python基础笔记系列十一:标准输入输出、文件读写和指针等操作

    本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 标准输入输出一.输入 在sublime中这个时候需要安装SublimeRE ...

  7. Python基础笔记系列一:基本工具与表达式

    本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 工具基础(Windows系统下)传送门:Python基础笔记系列四:工具的 ...

  8. Python操作redis系列之 列表(list) (四)

    # -*- coding: utf- -*- import redis r =redis.Redis(host=,password="ZBHRwlb1608") 1. Lpush ...

  9. Python操作redis系列以 哈希(Hash)命令详解(四)

    # -*- coding: utf-8 -*- import redis #这个redis不能用,请根据自己的需要修改 r =redis.Redis(host=") 1. Hset 命令用于 ...

随机推荐

  1. python之filter()函数

    filter()函数是python内置的一个高阶函数. filter()函数接受一个函数f 和一个list,这个函数f的作用是对每个元素进行判断,返回True或False,filter()根据判断结果 ...

  2. JVM架构和GC垃圾回收机制详解

    JVM架构图分析 下图:参考网络+书籍,如有侵权请见谅 (想了解Hadoop内存溢出请看:Hadoop内存溢出(OOM)分类.参数调优化) JVM被分为三个主要的子系统 (1)类加载器子系统(2)运行 ...

  3. AAC终结者Opus音频编码器的瑞士军刀,编译android ios

    AAC-LD/ELD it is either 480 or 512 PCM samples per frame and channel. http://opus-codec.org/download ...

  4. -webkit-transition: all .2s ease-in-out;

    W3C标准中对CSS3的transition这是样描述的:CSS的transition允许CSS的属性值在一定的时间区间内平滑地过渡.这种效果可以在鼠标单击.获得焦点.被点击或对元素任何改变中触发,并 ...

  5. day12闭包,装饰器

    一.闭包:内部函数引用了外部函数的变量. # f1() #闭包的定义 #内部的函数引用了外部函数的变量 # def f1(b): #闭包的常用状态 # def f2(): # print(b) # r ...

  6. webservice 使用axis2实现

    Axis2 是Apache的:使用下载 :org.apache.axis2.eclipse.service.plugin_1.6.2.jar org.apache.axis2.eclipse.code ...

  7. 巨蟒python全栈开发django2:初识django

    今日内容大纲: 1.起飞版web框架 2.自定制框架的流程 3.jinja2模板渲染初识 4.MVC&&MTV 5.django版本介绍及django安装 6.django初识(一些操 ...

  8. 关于Springboot中dubbo整合注意的误区(不对之处请指出)

    这是我的客户端配置! 这是生产的配置, 首先注意一下 scan   我之前尝试这样的客户端配置 然后  果断客户端不能注册接口 @Reference(version="1.0") ...

  9. ipv4 ipv6 在系统可扩展性方面的应用 支撑公司10-100年的AmazonOrderId

    w 如同 基因 生态系统 理念 思维 算法

  10. iOS 面试题总结

    最近项目做完了 比较空闲 在网上看了一份面试题 想自己整理一下 一.为什么说Objective-C是一门动态的语言?NSUInteger和NSInteger 的区别? 静态 动态是相对的,这里的动态语 ...