分词、词性标注POS等学习【转载】
转自:https://cloud.tencent.com/developer/article/1091815
1. 分词(Word Cut)
英文:单词组成句子,单词之间由空格隔开
中文:字、词、句、段、篇
词:有意义的字组合
分词:将不同的词分隔开,将句子分解为词和标点符号
英文分词:根据空格 中文分词:三类算法
中文分词难点:歧义识别、未登录词 中文分词的好坏:歧义词识别和未登录词的识别准确率
分词工具:Jieba,SnowNLP,NlPIR,LTP,NLTK。
2. 词性标注(POS Tag)
词性也称为词类或词汇类别。用于特定任务的标记的集合被称为一个标记集
词性:词类,词汇性质,词汇的语义功能,词汇的所属类别
词性取决于:1.选定的词的类别体系 2.词汇本身在语句中上下文的语法语义功能 一个词汇有多个不同的词性,词性兼类现象
词性唯一:单性词 词性多于2个:兼类词
词性标注:将单词按它们的词性分类并进行相应地标注的过程,称为词语性质标注、词性标注或简称标注。
词性标注器:一个标注器能够正确识别一个句子的上下文中的这些词的标记 词性标注方法:三类
2.1 NLTK常用词性:
- CC Coordinating conjunction 连接词
- CD Cardinal number 基数词
- DT Determiner 限定词(如this,that,these,those,such,不定限定词:no,some,any,each,every,enough,either,neither,all,both,half,several,many,much,(a) few,(a) little,other,another.
- EX Existential there 存在句
- FW Foreign word 外来词
- IN Preposition or subordinating conjunction 介词或从属连词
- JJ Adjective 形容词或序数词
- JJR Adjective, comparative 形容词比较级
- JJS Adjective, superlative 形容词最高级
- LS List item marker 列表标示
- MD Modal 情态助动词
- NN Noun, singular or mass 常用名词 单数形式
- NNS Noun, plural 常用名词 复数形式
- NNP Proper noun, singular 专有名词,单数形式
- NNPS Proper noun, plural 专有名词,复数形式
- PDT Predeterminer 前位限定词
- POS Possessive ending 所有格结束词
- PRP Personal pronoun 人称代词
- PRP$ Possessive pronoun 所有格代名词
- RB Adverb 副词
- RBR Adverb, comparative 副词比较级
- RBS Adverb, superlative 副词最高级
- RP Particle 小品词
- SYM Symbol 符号
- TO to 作为介词或不定式格式
- UH Interjection 感叹词
- VB Verb, base form 动词基本形式
- VBD Verb, past tense 动词过去式
- VBG Verb, gerund or present participle 动名词和现在分词
- VBN Verb, past participle 过去分词
- VBP Verb, non-3rd person singular present 动词非第三人称单数
- VBZ Verb, 3rd person singular present 动词第三人称单数
- WDT Wh-determiner 限定词(如关系限定词:whose,which.疑问限定词:what,which,whose.)
- WP Wh-pronoun 代词(who whose which)
- WP$ Possessive wh-pronoun 所有格代词
- WRB Wh-adverb 疑问代词(how where when)
通用词性标记集
标记 含义 英文示例
ADJ 形容词 new, good, high, special, big, local
ADP 介词 on, of, at, with, by, into, under
ADV 副词 really, already, still, early, now
CONJ 连词 and, or, but, if, while, although
DET 限定词,冠词 the, a, some, most, every, no, which
NOUN 名词 year, home, costs, time, Africa
NUM 数词 twenty-four, fourth, 1991, 14:24
PRT 小品词 at, on, out, over per, that, up, with
PRON 代词 he, their, her, its, my, I, us
VERB 动词 is, say, told, given, playing, would . 标点符号 . , ; !
X 其它 ersatz, esprit, dunno, gr8, univeristy
- NLTK读取已经标注的语料库:一个已标注的词符使用一个由词符和标记组成的元组来表示。str2tuple()
- 一旦我们开始做词性标注,我们将会创建分配一个标记给一个词的程序,标记是在给定上下文中最可能的标记。我们可以认为这个过程是从词到标记的映射。在Python中最自然的方式存储映射是使用所谓的字典数据类型(在其他的编程语言又称为关联数组或哈希数组)
- NLTK标记形式:(word,tag)和字典
- 将字典转换成列表:list(),sorted()
- 按值排序一个字典的习惯用法,sorted()的第一个参数是要排序的项目,它是由一个词性标记和一个频率组成的元组的列表。第二个参数使用函数itemgetter()指定排序的键。在一般情况下,itemgetter(n)返回一个函数,这个函数可以在一些其他序列对象上被调用获得这个序列的第n个元素。 from operator import itemgetter sorted(counts.items(), key=itemgetter(1), reverse=True)
- 一个词的标记依赖于这个词和它在句子中的上下文
3.自动标注
3.1默认标注器
1.最简单的标注器是为每个词符分配同样的标记。这似乎是一个相当平庸的一步,但它建立了标注器性能的一个重要的底线。为了得到最好的效果,我们用最有可能的标记标注每个词。让我们找出哪个标记是最有可能的:
2.创建一个将所有词都标注成NN的标注器
raw = 'I do not like green eggs and ham, I do not like them Sam I am!'
tokens = word_tokenize(raw) default_tagger = nltk.DefaultTagger('NN') default_tagger.tag(tokens)
[('I', 'NN'), ('do', 'NN'), ('not', 'NN'), ('like', 'NN'), ('green', 'NN'), ('eggs', 'NN'), ('and', 'NN'), ('ham', 'NN'), (',', 'NN'), ('I', 'NN'), ('do', 'NN'), ('not', 'NN'), ('like', 'NN'), ('them', 'NN'), ('Sam', 'NN'), ('I', 'NN'), ('am', 'NN'), ('!', 'NN')]
不出所料,这种方法的表现相当不好。在一个典型的语料库中,它只标注正确了八分之一的标识符,正如我们在这里看到的:
default_tagger.evaluate(brown_tagged_sents)
Out[13]: 0.13089484257215028
默认的标注器给每一个单独的词分配标记,即使是之前从未遇到过的词。碰巧的是,一旦我们处理了几千词的英文文本之后,大多数新词都将是名词。正如我们将看到的,这意味着,默认标注器可以帮助我们提高语言处理系统的稳定性。
3.2正则表达式标注器
正则表达式标注器基于匹配模式分配标记给词符。例如,我们可能会猜测任一以ed结尾的词都是动词过去分词,任一以's结尾的词都是名词所有格。可以用一个正则表达式的列表表示这些:
patterns = [
... (r'.ing$', 'VBG'), # gerunds
... (r'.ed$', 'VBD'), # simple past
... (r'.es$', 'VBZ'), # 3rd singular present
... (r'.ould$', 'MD'), # modals
... (r'.'s$', 'NN$'), # possessive nouns
... (r'.s$', 'NNS'), # plural nouns
... (r'^-?[0-9]+(.[0-9]+)?$', 'CD'), # cardinal numbers
... (r'.*', 'NN') # nouns (default)
... ]
请注意,这些是顺序处理的,第一个匹配上的会被使用。
现在我们可以建立一个标注器,并用它来标记一个句子。做完这一步会有约五分之一是正确的。
regexp_tagger.evaluate(brown_tagged_sents)
Out[21]: 0.20326391789486245
3.3查询标注器
3.4N-gram标注
- 一元标注器基于一个简单的统计算法:对每个标识符分配这个独特的标识符最有可能的标记。例如,它将分配标记<tt class="doctest">JJ</tt>给词frequent的所有出现,因为frequent用作一个形容词(例如a frequent word)比用作一个动词(例如I frequent this cafe)更常见。一个一元标注器的行为就像一个查找标注器(4),除了有一个更方便的建立它的技术,称为训练。
- 一个n-gram tagger标注器是一个一元标注器的一般化,它的上下文是当前词和它前面n-1个标识符的词性标记
//一元是只和当前词有关系。

- 1-gram标注器是一元标注器另一个名称:即用于标注一个词符的上下文的只是词符本身。2-gram标注器也称为二元标注器,3-gram标注器也称为三元标注器。
分词、词性标注POS等学习【转载】的更多相关文章
- 第四期coding_group笔记_用CRF实现分词-词性标注
一.背景知识 1.1 什么是分词? NLP的基础任务分为三个部分,词法分析.句法分析和语义分析,其中词法分析中有一种方法叫Tokenization,对汉字以字为单位进行处理叫做分词. Example ...
- Java多线程学习(转载)
Java多线程学习(转载) 时间:2015-03-14 13:53:14 阅读:137413 评论:4 收藏:3 [点我收藏+] 转载 :http://blog ...
- 常用中文分词工具分词&词性标注简单应用(jieba、pyhanlp、pkuseg、foolnltk、thulac、snownlp、nlpir)
1.jieba分词&词性标注 import jieba import jieba.posseg as posseg txt1 =''' 文本一: 人民网华盛顿3月28日电(记者郑琪)据美国约翰 ...
- Windows Services 学习(转载)
转载:http://blog.csdn.net/fakine/article/details/42107571 一.学习点滴 1.本机服务查看:services.msc /s2.服务手动安装(使用sc ...
- OpenGL入门学习(转载)
说起编程作图,大概还有很多人想起TC的#include <graphics.h>吧? 但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜的640*480分辨率.16色 ...
- 【学习转载】MyBatis源码解析——日志记录
声明:转载自前辈:开心的鱼a1 一 .概述 MyBatis没有提供日志的实现类,需要接入第三方的日志组件,但第三方日志组件都有各自的Log级别,且各不相同,但MyBatis统一提供了trace.deb ...
- JVM的相关知识整理和学习--(转载)
JVM是虚拟机,也是一种规范,他遵循着冯·诺依曼体系结构的设计原理.冯·诺依曼体系结构中,指出计算机处理的数据和指令都是二进制数,采用存储程序方式不加区分的存储在同一个存储器里,并且顺序执行,指令由操 ...
- [分词] C#SegList分词辅助类,帮助类 (转载)
点击下载 SegList.rar 主要功能如下最新的SegList分词辅助类,帮助类看下面代码吧 /// <summary> /// 类说明:SegList /// 编 码 人:苏飞 // ...
- Jqgrid学习(转载)
jqGrid API 全 JQGrid是一个在jquery基础上做的一个表格控件,以ajax的方式和服务器端通信. JQGrid Demo 是一个在线的演示项目.在这里,可以知道jqgrid可以做 ...
随机推荐
- C#模拟登录后请求查询
需求是这样子的,想开发一个外挂程序,能够抓取别的系统的数据,从而实现数据验证. 比如这样一个界面: 使用Chrome浏览器分析http请求和响应过程以及页面的html代码,发现这是一个ajax请求,于 ...
- 高斯混合模型 GMM
本文将涉及到用 EM 算法来求解 GMM 模型,文中会涉及几个统计学的概念,这里先罗列出来: 方差:用来描述数据的离散或波动程度. \[var(X) = \frac{\sum_{i=1}^N( X_ ...
- 6.13 py网络编程
tcp的十种状态 python使用原始套接字才可以做黑客攻击!!!!!伪造数据包!!!!!直接越过底层!socket这个东西是经过linux过滤过得! TTL 每经过一个路由器就减1 谁先调clos ...
- easyui---combogrid
选择一个数据表格某行记录 依赖panel 和datagrid combogrid:<select id="cc" name="dept" style=&q ...
- CentOs安装和使用
● 去掉图形界面 http://blog.csdn.net/op_zoro/article/details/44993881 ● centos 7覆盖windows vi /boot/grub2/gr ...
- MVC 二级联动
后台代码,获取数据如下: /// <summary> /// 获取省份 /// </summary> public JsonResult GetProvincelist() { ...
- Steeltoe之Config客户端篇
Steeltoe是一款开源项目,其目标是选取源自Netflix及其它公司的工具,使它们能够运用于.NET社区.它不仅可以在.NET Core上,也可以在.NET Framework 4.X以上使用.此 ...
- JS BOM DOM对象 select联动 计时器 时间 css操作 节点(标签 ) 查找标签 {前端基础之BOM和DOM}
前端基础之BOM和DOM 前戏 到目前为止,我们已经学过了JavaScript的一些简单的语法.但是这些简单的语法,并没有和浏览器有任何交互. 也就是我们还不能制作一些我们经常看到的网页的一些交互,我 ...
- [No0000108]Git1/9-Git简介与入门
Git是什么? Git是目前世界上最先进的分布式版本控制系统(没有之一). Git有什么特点?简单来说就是:高端大气上档次! 那什么是版本控制系统? 如果你用Microsoft Word写过长篇大论, ...
- kafka集群扩容后的topic分区迁移
https://www.cnblogs.com/honeybee/p/5691921.html kafka集群扩容后,新的broker上面不会数据进入这些节点,也就是说,这些节点是空闲的:它只有在创建 ...