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

 
    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. php 循环简写

    <?php class a{ public function news($news){ $articles = array(); foreach ($news as $key => $va ...

  2. 如何使用 TP中的公共函数 (定义在common/common.php中的函数)

    如何使用 TP中的公共函数 (定义在common/common.php中的函数) (2011-09-30 15:32:09) 转载▼ 标签: 杂谈   1.在common/common.php 中有个 ...

  3. jQuery 数据操作函数

    函数 描述 .clearQueue() 从队列中删除所有未运行的项目. .data() 存储与匹配元素相关的任意数据. jQuery.data() 存储与指定元素相关的任意数据. .dequeue() ...

  4. hive0.13.1安装-mysql server作为hive的metastore

    hive0.13.1在hadoop2.4.1伪分布式部署上安装过程 环境:redhat enterprice 6.5 +hadoop2.4.1+hive0.13.1+mysql单节点伪分布式部署 相关 ...

  5. 关于Linq to Sql 中的left join 中defaultifempty的相关注意事项

    在使用Linq to Sql的时候,进行两个表的左连接的时候要注意defaultifempty的使用,这个函数本来的意思即是:如果为空则使用默认值代替,默认值为 NULL ,当然也可以使用defaul ...

  6. 同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式

    1. 概念理解        在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式:   同步/异步主要针对C端: 同步:    ...

  7. PHP 代码简洁之道 ( PHP Clean Code)

    https://laravel-china.org/topics/7774/the-conciseness-of-the-php-code-php-clean-code

  8. Gcc手册(转)

    手册链接地址:http://www.shanghai.ws/gnu/gcc_1.htm GCC中文手册 GCC现在是GNU中最主要和最流行的c & c++编译器. gcc/g++在执行编译工作 ...

  9. 网络安装CentOS6.4

    第一步:所需工具安装包下载地址: http://115.com/file/antbtamu#网络安装CentOS.rar(或者下载NetbootM.exe和hfs.exe) 第二步:将CentOS6. ...

  10. Difference between .classpath and MANIFEST.MF

    What is the difference between adding a dependency jar to the .classpath file in a RAD project and a ...