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

 
    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. 更新换代----systemctl命令取代chkconfig和service

    systemctl命令是系统服务管理器指令,它实际上将 service 和 chkconfig 这两个命令组合到一起. 任务 旧指令 新指令 使某服务自动启动 chkconfig --level 3 ...

  2. Oracle----oracle编程总结

    1,SEQUENCE的使用 问题:在MSSQL中,我们可以通过设置自增长来作为主键,但是oracle里面没有这个 解决方案:使用SEQUENCE来实现,具体步骤如下 (1)首先建立一个序列(就是每次查 ...

  3. 基于 UML 的业务建模举例

    简介: 对于管理流程咨询项目.大型信息化建设项目和套装管理软件实施项目,对业务环境的分析和理解对项目的成功至关重要.系统.全面理解 IT 系统所处的业务环境,可以帮助 IT 系统能提供正确系统功能,并 ...

  4. Java连接Sql Server 2008的简单数据库应用

    1.从微软官网下载JDBC驱动包 sqljdbc_4.0.2206.100_chs.exe,双击解压文件到指定目录,我的指定目录是: C:\Program Files\Microsoft JDBC D ...

  5. postgresql学习文档

    字符串函数: http://www.php100.com/manual/PostgreSQL8/functions-string.html http://gavin-chen.iteye.com/bl ...

  6. Pig系统分析(8)-Pig可扩展性

    本文是Pig系统分析系列中的最后一篇了,主要讨论怎样扩展Pig功能.不仅介绍Pig本身提供的UDFs扩展机制,还从架构上探讨Pig扩展可能性. 补充说明:前些天同事发现twitter推动的Pig On ...

  7. 服务器之FRU

    EEPROM是server主板上的电可擦除可编程只读存储器, 里面存储了FRU data, 包括制造商,产品型号,产品序列号,资产序列号等信息,为厂商和客户提供资产信息管理. 所以正确的FRU格式以及 ...

  8. 43、android:screenOrientation

    android:screenOrientationThe orientation of the activity's display on the device. The value can be a ...

  9. java中对Redis的缓存进行操作

    Redis 是一个NoSQL数据库,也是一个高性能的key-value数据库.一般我们在做Java项目的时候,通常会了加快查询效率,减少和数据库的连接次数,我们都会在代码中加入缓存功能.Redis的高 ...

  10. 二、docker入门

    docker入门 使用场景: 面向产品.面向开发.面向测试.面向运维.面向自动化.面向微服务.面向大规模的分布式架构(微信红包) 虚拟化解决方案: 商业解决方案: VMware vSphere,VMw ...