python词性标注_Python NLTK学习5(词性标注)
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(词性标注)相关推荐
- python 命名实体识别_Python NLTK学习11(命名实体识别和关系抽取)
Python NLTK学习11(命名实体识别和关系抽取) 发表于: 2017年7月27日 阅读: 18262 除特别注明外,本站所有文章均为小杰Code原创 本系列博客为学习<用Python进 ...
- guido正式发布python年份_Python 基础学习笔记.docx
Python 基础学习笔记 基于<Python语言程序设计基础(第2版)> 第一部分 初识Python语言 第1章 程序设计基本方法 1.1 计算机的概念 计算机是根据指令操作数据的设备, ...
- 32岁学python 人工智能_python深入学习好还是直接学人工智能好?
python深入学习好还是直接学人工智能好 这个其实是理解上的一个偏差,人工智能是一个领域,而深度学习是门技术 有很多人说不会机器学习,深度学习无法实现人工智能,这句话放在5-6年前完全正确,而放眼现 ...
- python版本更新_python入门学习第一天-初识Python
初识Python Python简介 Python的历史 1989年圣诞节:Guido von Rossum开始写Python语言的编译器. 1991年2月:第一个Python编译器(同时也是解释器)诞 ...
- python助手_python编写学习助手0
项目原因 为了解决学习知识后不及时复习而导致遗忘的问题,准备写一个桌面助手,采用艾宾浩斯记忆法,对每次学习的内容排布复习计划. 第一步是做出最简单的文本列表,里面是待办事项,每个复习待办事项都会有符合 ...
- python 图表_Python入门学习系列——使用Python调用Web API实现图表统计
使用Python调用Web API实现图表统计 Web API:Web应用编程接口,用于URL请求特定信息的程序交互,请求的数据大多以非常易于处理的格式返回,比如JSON或CSV等. 本文将使用Pyt ...
- 菜鸟python爬虫_Python爬虫学习-基础爬取
编译环境:python v3.5.0, mac osx 10.11.4 第三方库:针对网页解析,python有丰富的第三方库如: BeautifulSoup, urllib, requests etc ...
- python学到哪知道baseline_Python NLTK学习6(创建词性标注器)
Python NLTK学习6(创建词性标注器) 发表于: 2017年1月5日 阅读: 6487 除特别注明外,本站所有文章均为小杰Code原创 本系列博客为学习<用Python进行自然语言处理 ...
- python语言处理初探——分词、词性标注、提取名词
这个教程里我们只需要调库,不需要了解原理,很简单的 参考文章: 参考:Python NLTK 自然语言处理入门与例程 参考1:NLP入门学习1--分词.词性标注 - CSDN博客 参考2:使用nltk ...
- 分词与词性标注--第一周学习总结07-28
分词与词性标注--第一周学习总结07-28 词性标注与自然语言处理 相关概念 理论基础 算法依赖 应用领域 个人学习笔记 HMM(隐含马尔可夫模型) 分词与词性标注 自然语言处理 相关学习链接推荐 词 ...
最新文章
- Java 反射 (快速了解反射)
- 70+Python项目,面向初学者、中级和经验丰富的开发人员
- Ubuntu快速重装软件的技巧
- keil生成hex文件找不到_骚操作!用Python把公众号文章打包成pdf文件,再也不怕找不到了...
- 修改Windows远程登录端口号
- [回归分析][10]--相关误差的问题
- [react] React组件的构造函数有什么作用?
- 微课|中学生可以这样学Python(例11.3):tkinter通信录管理系统2
- 如何添加二级标题_怎样给Word文档添加目录?
- 想更换手机卡,但它绑定了支付宝,微信,银行卡等,该怎么办啊?
- HR:不录用她,是因为她“太傻白甜了……”
- pdf2image报错,pdf2image完整安装
- 推荐广告相关名词ctr,cvr等
- 一口一个超酥脆的宝宝小零食,超简单的做法哦
- 太湖2018年渔业产值达7.3亿元 今年大闸蟹产量将降低
- 关于TopoJSON以及制作方法
- 哔哩哔哩2018校招前端笔试
- js中拼接字符串遇到的单引号、双引号以及转义字符问题
- 人工智能的嘴巴——语音合成(Text to Speech | TTS)
- Python进阶【第一篇】socket
热门文章
- 英文电子书下载:salttiger.com
- 打开ps显示计算机内存不足怎么办,ps显示内存不足怎么办,教你ps显示内存不足怎么办...
- 马科维茨投资组合理论(均方模型)(1)
- Python编程实战:寻找回文
- 酷狗音乐榜单歌曲获取解析教程
- c语言学生成绩及格率,c语言百分制输入学生的考试分数统计学生及格率
- java中set和get用法_java中 set 和 get
- python调用WinRAR暴力获取压缩密码 用网址做解压密码
- Uplift modeling for clinical trial data 论文阅读
- 读《An Adaptable and Extensible Geometry Kernel》