NLTK学习笔记——信息抽取(1)
来源:互联网 发布:网络直播游戏 编辑:程序博客网 时间:2024/06/06 02:27
信息抽取的内容在《Natural Language Processing》第7章,对于文本的信息抽取,命名实体及其关系的识别是至关重要要的,信息抽取分为以下几个步骤:
1. 文本切分,将string类型的文本划分为list类型的句子
2. 句子切分,将每个list类型的句子划分成由单词或chunk组成的list
3. 词性标注,生成由一个list,其组成内容是多个形如(word,lable)的tuple
4. 命名实体识别,生成各个tree组成一个list
5. 关系识别,生成一个list,其内容是多个形如(entity,relation,entity)的tuple
在tree的构成中,分块是个重要的过程,如NP(DT,JJ,JJ,NN)可构成一个NP短语。nltk中有重要的类是RegexpParser,分析预先定义的分块语法grammar,得到多个语法规则,然后利用parser函数对句子分析,得到语法树。下面就介绍一个RegexpParser分析grammar的过程和parser函数的解析过程。
- RegexpParser类
调用:cp=nltk.RegexpParser(grammar)
输入:分块语法grammar,有一个或多个识别块信息的正则表达式,如:
grammar = r""" NP: {<.*>*} # start by chunking everything }<[\.VI].*>+{ # chink any verbs, prepositions or periods <.*>}{<DT> # separate on determiners PP: {<IN><NP>} # PP = preposition + noun phrase VP: {<VB.*><NP|PP>*} # VP = verb words + NPs and PPs """
输出:
过程:分析过程主要是在read_grammar函数里实现,当grammar是string类型时(如上),就调用read_grammar进行分析。下面就介绍一下分析过程中的要点。
(1)按行读取,并将每行的开头、结尾空格删除
(2)分离非终结符和规则,调用re.py里的match函数进行分离(其细节与chunk模块无关,这里就先不研究了),分离的依据仍然是正则表达式,冒号之前的是非终结符,如NP、PP、VP,冒号之后的是rule
(3)程序用stage来记录有多少个非终结符,一旦遇到非终结符就重设stage,将上一个rule记录下来(之所以记录的是上一个,是因为当前的rule尚未处理,可能存在注释,需要经过处理之后才能记录下来),因此在重设stage时需要判断rule是否为空,那么在首次记录时就不会报错
(4)对于记录rule的过程,首先设定识别chunk、chink、split和merge的规则:
{regexp} # chunk rule }regexp{ # chink rule regexp}{regexp # split rule regexp{}regexp # merge rule
因此,对于传入的rule,将进行如下处理:
①类似于分离非终结符和rule的方法,将rule和#注释分离,依据是#
②对于分离出的rule(不带注释),根据上面讲的规则,识别出对应的类别,分别调用ChunkRule、ChinkRule、SplitRule和MergeRule进行处理。
- NLTK学习笔记——信息抽取(1)
- NLTK学习之四:文本信息抽取
- NLTK学习笔记——Classify模块(1)
- NLTK 学习笔记(1)
- NLTK学习笔记——Classify模块(2)
- NLTK学习笔记——Classify模块(3)
- python自然语言处理学习笔记1—install NLTK
- NLTK学习笔记——开篇
- NLTK学习笔记(七):文本信息提取
- Python NLTK 学习笔记1
- NLTK 学习笔记(2)
- NLTK 学习笔记(4)
- NLTK 学习笔记(5)
- NLTK学习笔记(6)
- python nltk自然语言处理学习笔记1
- NLTK学习笔记
- NLTK 学习笔记(3)
- NLTK学习笔记
- project源文件下没有其所包含的树目录所包含的树目录
- 特征值、特征向量的物理、几何意义
- 装机史
- create .mat file
- MFC(一):win32创建一个最简单的窗口
- NLTK学习笔记——信息抽取(1)
- python caffe libcaffe.so.1.0.0-rc3: cannot open shared object file
- 给 Android 开发者的 RxJava 详解 Observable
- leetcode之Combination Sum
- Unicode原理
- 内部排序算法总结
- 插入排序
- UICollectionView-集合视图(理论篇)
- 利用缓存存储网络下载的图片