Python NLTK学习5(词性标注)

发表于: 2017年1月3日  阅读: 12925

除特别注明外,本站所有文章均为小杰Code原创

本系列博客为学习《用Python进行自然语言处理》一书的学习笔记。

词性标注器

一个词性标注器处理一个词序列,为每个词附加一个词性标记,我们先看一个示例:

import nltk

words = nltk.word_tokenize('And now for something completely different')

print(words)

word_tag = nltk.pos_tag(words)

print(word_tag)

结果为:

['And', 'now', 'for', 'something', 'completely', 'different']

[('And', 'CC'), ('now', 'RB'), ('for', 'IN'), ('something', 'NN'), ('completely', 'RB'), ('different', 'JJ')]

nltk.word_tokenize(text):对指定的句子进行分词,返回单词列表。

nltk.pos_tag(words):对指定的单词列表进行词性标记,返回标记列表。

从结果我们可以看到something是NN,NN代表名词。

为什么nltk.pos_tag()方法可以对单词进行词性标记?这是因为NLTK预先使用一些语料库训练出了一个词性标注器,这个词性标注器可以对单词列表进行标记。

标注语料库

NLTK中的很多语料库都已经标注了词性,我们之前学习过的布朗语料库就是一个被标注了词性的语料库,每个语料库使用的标记符号可以有所不同。

from nltk.corpus import brown

words_tag = brown.tagged_words(categories='news')

print(words_tag[:10])

结果为:

[('The', 'AT'), ('Fulton', 'NP-TL'), ('County', 'NN-TL'), ('Grand', 'JJ-TL'), ('Jury', 'NN-TL'), ('said', 'VBD'), ('Friday', 'NR'), ('an', 'AT'), ('investigation', 'NN'), ('of', 'IN')]

brown可以看作是一个CategorizedTaggedCorpusReader实例对象。

CategorizedTaggedCorpusReader::tagged_words(fileids, categories):该方法接受文本标识或者类别标识作为参数,返回这些文本被标注词性后的单词列表。

CategorizedTaggedCorpusReader::tagged_sents(fileids, categories):该方法接受文本标识或者类别标识作为参数,返回这些文本被标注词性后的句子列表,句子为单词列表。

tagged_sents = brown.tagged_sents(categories='news')

print(tagged_sents)

结果为:

[[('The', 'AT'), ('Fulton', 'NP-TL'), ('County', 'NN-TL'), ('Grand', 'JJ-TL'), ('Jury', 'NN-TL'), ('said', 'VBD'), ('Friday', 'NR'), ('an', 'AT'), ('investigation', 'NN'), ('of', 'IN'), ("Atlanta's", 'NP$'), ('recent', 'JJ'), ('primary', 'NN'), ('election', 'NN'), ('produced', 'VBD'), ('``', '``'), ('no', 'AT'), ('evidence', 'NN'), ("''", "''"), ('that', 'CS'), ('any', 'DTI'), ('irregularities', 'NNS'), ('took', 'VBD'), ('place', 'NN'), ('.', '.')], [('The', 'AT'), ('jury', 'NN'), ('further', 'RBR'), ('said', 'VBD'), ('in', 'IN'), ('term-end', 'NN'), ('presentments', 'NNS'), ('that', 'CS'), ('the', 'AT'), ('City', 'NN-TL'), ('Executive', 'JJ-TL'), ('Committee', 'NN-TL'), (',', ','), ('which', 'WDT'), ('had', 'HVD'), ('over-all', 'JJ'), ('charge', 'NN'), ('of', 'IN'), ('the', 'AT'), ('election', 'NN'), (',', ','), ('``', '``'), ('deserves', 'VBZ'), ('the', 'AT'), ('praise', 'NN'), ('and', 'CC'), ('thanks', 'NNS'), ('of', 'IN'), ('the', 'AT'), ('City', 'NN-TL'), ('of', 'IN-TL'), ('Atlanta', 'NP-TL'), ("''", "''"), ('for', 'IN'), ('the', 'AT'), ('manner', 'NN'), ('in', 'IN'), ('which', 'WDT'), ('the', 'AT'), ('election', 'NN'), ('was', 'BEDZ'), ('conducted', 'VBN'), ('.', '.')], ...]

NLTK中还包含一个中文语料库sinica_treebank,该库使用繁体中文,该库也被标注了词性,我们来看看该库。

from nltk.corpus import sinica_treebank

print(sinica_treebank.fileids())

结果为:

['parsed']

sinica_treebank可以看做是一个SinicaTreebankCorpusReader实例对象。

SinicaTreebankCorpusReader::words(fileids):该方法接受文本标识作为参数,返回文本的单词列表。

SinicaTreebankCorpusReader::tagged_words(fileids):该方法接受文本标识作为参数,返回文本被标注词性后的单词列表。

words = sinica_treebank.words('parsed')

print(words[:40])

words_tag = sinica_treebank.tagged_words('parsed')

print(words_tag[:40])

结果为:

['一', '友情', '嘉珍', '和', '我', '住在', '同一條', '巷子', '我們', '是', '鄰居', '也', '是', '同班', '同學', '我們', '常常', '一起', '上學', '一起', '回家', '有一天', '上學', '時', '我', '到', '她', '家', '等候', '按', '了', '門鈴', '卻', '沒有', '任何', '動靜', '正當', '我', '想', '離開']

[('一', 'Neu'), ('友情', 'Nad'), ('嘉珍', 'Nba'), ('和', 'Caa'), ('我', 'Nhaa'), ('住在', 'VC1'), ('同一條', 'DM'), ('巷子', 'Nab'), ('我們', 'Nhaa'), ('是', 'V_11'), ('鄰居', 'Nab'), ('也', 'Dbb'), ('是', 'V_11'), ('同班', 'Nv3'), ('同學', 'Nab'), ('我們', 'Nhaa'), ('常常', 'Dd'), ('一起', 'Dh'), ('上學', 'VA4'), ('一起', 'Dh'), ('回家', 'VA13'), ('有一天', 'DM'), ('上學', 'VA4'), ('時', 'Ng'), ('我', 'Nhaa'), ('到', 'P61'), ('她', 'Nhaa'), ('家', 'Ncb'), ('等候', 'VK2'), ('按', 'VC2'), ('了', 'Di'), ('門鈴', 'Nab'), ('卻', 'Dbb'), ('沒有', 'VJ3'), ('任何', 'Neqa'), ('動靜', 'Nad'), ('正當', 'P16'), ('我', 'Nhaa'), ('想', 'VE2'), ('離開', 'VC2')]

我们来看看哪些标记是sinica_treebank库中最常见的。

words_tag = sinica_treebank.tagged_words('parsed')

tag_fd = nltk.FreqDist(tag for (word, tag) in words_tag)

tag_fd.tabulate(5)

结果为:

Nab DE Nac Nad VH11

9520 7095 4478 3873 3722

我们可以看到Nab标记出现了9520次。

总结

nltk.word_tokenize(text):对指定的句子进行分词,返回单词列表

nltk.pos_tag(words):对指定的单词列表进行词性标记,返回标记列表

CategorizedTaggedCorpusReader::tagged_words(fileids, categories):该方法接受文本标识或者类别标识作为参数,返回这些文本被标注词性后的单词列表

CategorizedTaggedCorpusReader::tagged_sents(fileids, categories):该方法接受文本标识或者类别标识作为参数,返回这些文本被标注词性后的句子列表,句子为单词列表

SinicaTreebankCorpusReader::tagged_words(fileids):该方法接受文本标识作为参数,返回文本被标注词性后的单词列表

SinicaTreebankCorpusReader::tagged_sents(fileids):该方法接受文本标识作为参数,返回文本被标注词性后的句子列表,句子为单词列表

其他章节链接

Python NLTK学习5(词性标注)

python词性标注_Python NLTK学习5(词性标注)相关推荐

  1. python 命名实体识别_Python NLTK学习11(命名实体识别和关系抽取)

    Python NLTK学习11(命名实体识别和关系抽取) 发表于: 2017年7月27日  阅读: 18262 除特别注明外,本站所有文章均为小杰Code原创 本系列博客为学习<用Python进 ...

  2. guido正式发布python年份_Python 基础学习笔记.docx

    Python 基础学习笔记 基于<Python语言程序设计基础(第2版)> 第一部分 初识Python语言 第1章 程序设计基本方法 1.1 计算机的概念 计算机是根据指令操作数据的设备, ...

  3. 32岁学python 人工智能_python深入学习好还是直接学人工智能好?

    python深入学习好还是直接学人工智能好 这个其实是理解上的一个偏差,人工智能是一个领域,而深度学习是门技术 有很多人说不会机器学习,深度学习无法实现人工智能,这句话放在5-6年前完全正确,而放眼现 ...

  4. python版本更新_python入门学习第一天-初识Python

    初识Python Python简介 Python的历史 1989年圣诞节:Guido von Rossum开始写Python语言的编译器. 1991年2月:第一个Python编译器(同时也是解释器)诞 ...

  5. python助手_python编写学习助手0

    项目原因 为了解决学习知识后不及时复习而导致遗忘的问题,准备写一个桌面助手,采用艾宾浩斯记忆法,对每次学习的内容排布复习计划. 第一步是做出最简单的文本列表,里面是待办事项,每个复习待办事项都会有符合 ...

  6. python 图表_Python入门学习系列——使用Python调用Web API实现图表统计

    使用Python调用Web API实现图表统计 Web API:Web应用编程接口,用于URL请求特定信息的程序交互,请求的数据大多以非常易于处理的格式返回,比如JSON或CSV等. 本文将使用Pyt ...

  7. 菜鸟python爬虫_Python爬虫学习-基础爬取

    编译环境:python v3.5.0, mac osx 10.11.4 第三方库:针对网页解析,python有丰富的第三方库如: BeautifulSoup, urllib, requests etc ...

  8. python学到哪知道baseline_Python NLTK学习6(创建词性标注器)

    Python NLTK学习6(创建词性标注器) 发表于: 2017年1月5日  阅读: 6487 除特别注明外,本站所有文章均为小杰Code原创 本系列博客为学习<用Python进行自然语言处理 ...

  9. python语言处理初探——分词、词性标注、提取名词

    这个教程里我们只需要调库,不需要了解原理,很简单的 参考文章: 参考:Python NLTK 自然语言处理入门与例程 参考1:NLP入门学习1--分词.词性标注 - CSDN博客 参考2:使用nltk ...

  10. 分词与词性标注--第一周学习总结07-28

    分词与词性标注--第一周学习总结07-28 词性标注与自然语言处理 相关概念 理论基础 算法依赖 应用领域 个人学习笔记 HMM(隐含马尔可夫模型) 分词与词性标注 自然语言处理 相关学习链接推荐 词 ...

最新文章

  1. Java 反射 (快速了解反射)
  2. 70+Python项目,面向初学者、中级和经验丰富的开发人员
  3. Ubuntu快速重装软件的技巧
  4. keil生成hex文件找不到_骚操作!用Python把公众号文章打包成pdf文件,再也不怕找不到了...
  5. 修改Windows远程登录端口号
  6. [回归分析][10]--相关误差的问题
  7. [react] React组件的构造函数有什么作用?
  8. 微课|中学生可以这样学Python(例11.3):tkinter通信录管理系统2
  9. 如何添加二级标题_怎样给Word文档添加目录?
  10. 想更换手机卡,但它绑定了支付宝,微信,银行卡等,该怎么办啊?
  11. HR:不录用她,是因为她“太傻白甜了……”
  12. pdf2image报错,pdf2image完整安装
  13. 推荐广告相关名词ctr,cvr等
  14. 一口一个超酥脆的宝宝小零食,超简单的做法哦
  15. 太湖2018年渔业产值达7.3亿元 今年大闸蟹产量将降低
  16. 关于TopoJSON以及制作方法
  17. 哔哩哔哩2018校招前端笔试
  18. js中拼接字符串遇到的单引号、双引号以及转义字符问题
  19. 人工智能的嘴巴——语音合成(Text to Speech | TTS)
  20. Python进阶【第一篇】socket

热门文章

  1. 英文电子书下载:salttiger.com
  2. 打开ps显示计算机内存不足怎么办,ps显示内存不足怎么办,教你ps显示内存不足怎么办...
  3. 马科维茨投资组合理论(均方模型)(1)
  4. Python编程实战:寻找回文
  5. 酷狗音乐榜单歌曲获取解析教程
  6. c语言学生成绩及格率,c语言百分制输入学生的考试分数统计学生及格率
  7. java中set和get用法_java中 set 和 get
  8. python调用WinRAR暴力获取压缩密码 用网址做解压密码
  9. Uplift modeling for clinical trial data 论文阅读
  10. 读《An Adaptable and Extensible Geometry Kernel》