QQ:231469242

欢迎喜欢nltk朋友交流

http://www.cnblogs.com/undercurrent/p/4754944.html

一、信息提取模型

信息提取的步骤共分为五步,原始数据为未经处理的字符串,

第一步:分句,用nltk.sent_tokenize(text)实现,得到一个list of strings

第二步:分词,[nltk.word_tokenize(sent) for sent in sentences]实现,得到list of lists of strings

第三步:标记词性,[nltk.pos_tag(sent) for sent in sentences]实现得到一个list of lists of tuples

前三步可以定义在一个函数中:

>>> defie_preprocess(document):

... sentences =nltk.sent_tokenize(document)

... sentences = [nltk.word_tokenize(sent) for sent insentences]

... sentences = [nltk.pos_tag(sent) for sent in sentences]

第四步:实体识别(entity detection)在这一步,既要识别已定义的实体(指那些约定成俗的习语和专有名词),也要识别未定义的实体,得到一个树的列表

第五步:关系识别(relation detection)寻找实体之间的关系,并用tuple标记,最后得到一个tuple列表

二、分块(chunking)

分块是第四步entity detection的基础,本文只介绍一种块noun phrase chunking即NP-chunking,这种块通常比完整的名词词组小,例如:the market for system-management software是一个名词词组,但是它会被分为两个NP-chunking——the market 和 system-management software。任何介词短语和从句都不会包含在NP-chunking中,因为它们内部总是会包含其他的名词词组。

从一个句子中提取分块需要用到正则表达式,先给出示例代码:

grammar = r"""

NP: {

?*} # chunk determiner/possessive, adjectives and noun

{+} # chunk sequences of proper nouns

"""

cp =nltk.RegexpParser(grammar)

sentence = [("Rapunzel", "NNP"), ("let", "VBD"), ("down", "RP"),

("her", "PP$"), ("long", "JJ"), ("golden", "JJ"), ("hair", "NN")]

>>>print(cp.parse(sentence))

(S

(NP Rapunzel/NNP)

let/VBD

down/RP

(NP her/PP$ long/JJ golden/JJ hair/NN))

正则表达式的格式为"""块名:{...<>}

{...}”""

如:

grammar = r"""

NP: {

?*} # chunk determiner/possessive, adjectives and noun

{+} # chunk sequences of proper nouns

"""

大括号内为分块规则(chunking rule),可以有一个或多个,当rule不止一个时,RegexpParser会依次调用各个规则,并不断更新分块结果,直到所有的rule都被调用。nltk.RegexpParser(grammar)用于依照chunking rule创建一个chunk分析器,cp.parse()则在目标句子中运行分析器,最后的结果是一个树结构,我们可以用print打印它,或者用result.draw()将其画出。

在chunking rule中还用一种表达式chink,用于定义chunk中我们不想要的模式,这种表达式的格式为:‘  }表达式{  ’ 使用chink的结果一般有三种,一、chink定义的表达式和整个chunk都匹配,则将整个chunk删除;二、匹配的序列在chunk中间,则 chunk分裂为两个小chunk;三、在chunk的边缘,则chunk会变小。使用方法如下:

grammar = r"""NP:

{<.>+} # Chunk everything

}+{ # Chink sequences of VBD and IN

"""sentence = [("the", "DT"), ("little", "JJ"), ("yellow", "JJ"),

("dog", "NN"), ("barked", "VBD"), ("at", "IN"), ("the", "DT"), ("cat", "NN")]

cp =nltk.RegexpParser(grammar)

>>> print(cp.parse(sentence))

(S

(NP the/DT little/JJ yellow/JJ dog/NN)

barked/VBD

at/IN

(NP the/DT cat/NN))

python nlp 句子提取_自然语言16.1_Python自然语言处理学习笔记之信息提取步骤分块(chunking)...相关推荐

  1. python nlp 句子提取_关于nlp:使用NLTK python进行因果句提取

    我正在从水事故报告中提取因果关系句子.我在这里使用NLTK作为工具.我通过采用20个因果关系句子结构手动创建了regExp语法[请参见下面的示例].构造的语法是以下类型的 grammar = r''' ...

  2. python分块处理功能_Python自然语言处理学习笔记之信息提取步骤分块(chunking)...

    一.信息提取模型 信息提取的步骤共分为五步,原始数据为未经处理的字符串, 第一步:分句,用nltk.sent_tokenize(text)实现,得到一个list of strings 第二步:分词,[ ...

  3. python nlp 句子提取_python nlp 句子提取_《用Python进行自然语言处理》第7章 从文本提取信息...

    1. 我们如何能构建一个系统,从非结构化文本中提取结构化数据? 2. 有哪些稳健的方法识别一个文本中描述的实体和关系? 3. 哪些语料库适合这项工作,我们如何使用它们来训练和评估我们的模型? 7.1 ...

  4. python 网页爬虫作业调度_第3次作业-MOOC学习笔记:Python网络爬虫与信息提取

    1.注册中国大学MOOC 2.选择北京理工大学嵩天老师的<Python网络爬虫与信息提取>MOOC课程 3.学习完成第0周至第4周的课程内容,并完成各周作业. 4.提供图片或网站显示的学习 ...

  5. python小车行驶路线图_基于opencv-Python小车循线学习笔记

    基于opencv-Python小车循线学习笔记 加入摄像头模块,让小车实现自动循迹行驶 思路为:摄像头读取图像,进行二值化,将白色的赛道凸显出来 选择下方的一行像素,黑色为0,白色为255 找到白色值 ...

  6. python nlp 句子提取_Python可以把一个文本里部分词语相同的句子提取出来吗?

    谢邀,题主的这个问题与具体的编程语言无关.涉及的知识点或者说技术点为NLP(自然语言处理).不过由于Python处理文本内容的便捷性,人们常常会用Python来做NLP. 如果你不想了解原理,直接使用 ...

  7. python nlp 句子提取_python-仅从Stanford Core NLP获取作为输出的标记化句子

    尝试new "shiny" Stanford CoreNLP API in NLTK =) 第一: pip install -U nltk[corenlp] 在命令行上: java ...

  8. 9月16日计算机视觉基础学习笔记——认识机器视觉

    文章目录 前言 一.Week 1 homework 1.基本操作 2.滤波 二.从图像处理到计算机视觉 1.反色变换 2.Gamma 变换 3.直方图 & 直方图均衡化 三.计算机视觉的两个步 ...

  9. python简历数据提取_提取python简介

    书籍:掌握Python的网络和安全 Mastering Python for Networking and Security - 2018.pdf 简介 掌握Python的网络和安全 掌握Python ...

最新文章

  1. 从零开始编写自己的C#框架(16)——Web层后端父类
  2. C语言博客作业--函数嵌套调用
  3. 【MySQL】 性能优化之 延迟关联
  4. python开发需要掌握哪些知识-Python基础学习需要掌握哪些知识
  5. 012_原始值和引用值
  6. linux 如何判断当前用户
  7. Java 算法 友好数
  8. synchronized的用法介绍
  9. SQL50道练习题(1-15)
  10. MySQL数据库(二) 一一 MySQL管理
  11. Spring-3.2.4 + Quartz-2.2.0集成实例
  12. [Python] 函数来判断一个对象是否是一个已知的类型:isinstance(object, classinfo)
  13. Sqlite 对数据进行增删改查
  14. veu创建项目,自定义配置
  15. KMP的个人向总结(next数组 || DFA实现--JAVAC++魔改版)--by wxj
  16. HTML、CSS实现手风琴效果
  17. 毫米波雷达在无人机避障系统中的应用
  18. 手术导航系统重新开发2:设计IDD_CGITS_DIALOG (Dialog),.h.cpp的写入
  19. iPhone X UITabBarController UITabBar 适配解读
  20. 揽一帘心事,掬一捧清泉

热门文章

  1. 任性安装苹果应用,安装包在手天下我有
  2. Linux-CentOS上的服务搭建
  3. layui使用formselect4完成的下拉框多选,拼音搜索
  4. 《互联网时代》第二集·浪潮
  5. 浅谈安科瑞无线测温系统在生物制药工厂中的应用
  6. CCF GitLink开源编程夏令营 · 学生开放报名!
  7. 女工下班路上被3男子拖入黑巷 身中10多刀身亡
  8. 本周最新文献速递20220123
  9. 牛客网 - 小乐乐打游戏(BFS)
  10. SQLiteSpy 打开SqLite数据库文件