NLTK基础教程学习笔记(九)

简介:

不同的解析器类型:
解析器通常需要对一个用于表达一组语法规则的输入字符串继续处理,然后构成一个或者多个可用于构成某种语法概念的规则。语法是我们衡量一个句子是否良好的一份规范说明,而解析器则是一个用于解读语法的程序。该程序会通过搜索各种不同的树结构空间,找出给定句子的最佳树结构,下面是一些解析器的运用细节和实际用途。
递归下降解析器:
递归下降解析器(recursive descent parsing)是一个自上而下的处理过程,由于解析器的基本操作是从左向右读取输入流中的信息,所以他会试着去验证其语法的正确性。该解析其的基本操作是从输入流中读取字符,然后将它们与终端所输入的语法规则进行匹配,递归下降解析器会在其得到一次正确匹配时会超前查看一个字符,并领先于其输入流的读取指针。
移位-归约解析器:
移位-归约解析器(shift-reduce parser)是一种简单的自下而上的解析器,其试着去寻找一个单词和短语的序列,它们一方面对应着语法生成器的右侧,另一方面则会用生成器左侧的内容对其进行替换,直到归简出完整的句子为止。
图表解析器:
将动态规划技术应用到解析器上,动态规划将中间的结果保存下来,然后再适当的时候重新启动它们,以便提高效率。在文本解析中将解析任务分成几个部分来解决,并将各个部分的结果先存储起来,然后在必要时再考虑如何将其有效地组合成一个完整的解决方法,这种方法被称为图表解析(chart parsing)
正则表达式解析器:
正则表达式解析器使用的是一个正则表达式,定义该表达式的语法形式是在完成了词性标注的字符串之上构建而成的。该解析器将使用这些正则表达式来解析给定的句子,并为他们生成解析树。下面是使用正则表达式所产生的解析实例:

import nltk
from nltk.chunk.regexp import *
chunk_rules=ChunkRule("<.*>","chunk everything")
reg_parser=RegexpParser('''
    NP: {<DT>?<JJ>* <NN>*}
    P: {<IN>}
    V: {<V.*>}
    PP: {<P> <VP>}
    VP: {<V> <NP|PP>*}
'''
)
test_sent="Mr. Obama played a big role in the Health insurance bill."
test_sent_pos=nltk.pos_tag(nltk.word_tokenize(test_sent))
paresed_out=reg_parser.parse(test_sent_pos)
print(paresed_out)

结果:

(S
  Mr./NNP
  Obama/NNP
  (VP (V played/VBD) (NP a/DT big/JJ role/NN))
  (P in/IN)
  (NP the/DT)
  Health/NNP
  (NP insurance/NN bill/NN)
  ./.)

可视化后树结构为:
20180202_105841
例子中我们(基于POS正则表达式)定义了模式的种类希望用模式来生成短语,例如,如果某个短语匹配{

? },也就是说明它是一个限定词后跟一个形容词,再加一个名词,大多数情况下会是一个名词的短语。
timg
目录
相关文章
|
1月前
|
JSON C++ 数据格式
【Python 基础教程 08】全面入门到精通:Python3 字符串操作实战教程与深度指南
【Python 基础教程 08】全面入门到精通:Python3 字符串操作实战教程与深度指南
89 0
|
11月前
|
人工智能 数据挖掘 Java
python从入门到项目实战——基础语法
python从入门到项目实战——基础语法
79 0
|
Java C语言 C++
【Python 基础教程】Python入门基础知识
【Python 基础教程】Python入门基础知识
162 0
【Python 基础教程】Python入门基础知识
|
人工智能 算法 程序员
【Python 基础教程】Python语言的自我介绍
【Python 基础教程】Python语言的自我介绍
143 0
【Python 基础教程】Python语言的自我介绍
|
机器学习/深度学习 自然语言处理 数据挖掘
fastText Python 教程
本文介绍fastText Python包的基本教程,包括安装方式和简单的使用方式。
fastText Python 教程
|
SQL Java 关系型数据库
Python基础教程,Python入门教程(非常详细)
Python基础教程,Python入门教程(非常详细)
99 0
|
存储 人工智能 大数据
合辑 | Python进阶必看的20+知识汇总
Python进阶知识合辑,包括列表(List)、元组(Tuple)、字典(Dictionary)和集合(Set)四种基本数据结构的介绍和实战案例分析。
|
Python
Python 小项目实战了解一下?
最近无论是北方还是南方都迎来了强冷空气的袭击,北风呼呼吹,我所在的城市这两天则可随处溜冰,城市道路结冰橙色预警,全省交通到处管制、小学幼儿园停课休息;上班路上的行人则是小心翼翼怕摔跤;老家韭菜坪的风景更美,给大家来带张照片感受感受:
102 0
Python 小项目实战了解一下?
|
Unix Python
python 基础教程
运算 !/usr/bin/python -- coding: UTF-8 -- a = 21 b = 10 c = 0 c = a + b print "1 - c 的值为:", c c = a - b print "2 - c 的值为:", c c ...
1023 2
|
机器学习/深度学习 XML 算法
从 0 学习 Python 0 - 120 大合集总结
从 0 学习 Python 0 - 120 大合集总结
122 0