转自:https://cloud.tencent.com/developer/article/1091815

1. 分词(Word Cut)

英文:单词组成句子,单词之间由空格隔开

中文:字、词、句、段、篇

词:有意义的字组合

分词:将不同的词分隔开,将句子分解为词和标点符号

英文分词:根据空格 中文分词:三类算法

中文分词难点:歧义识别、未登录词 中文分词的好坏:歧义词识别和未登录词的识别准确率

分词工具:Jieba,SnowNLP,NlPIR,LTP,NLTK。

2. 词性标注(POS Tag)

词性也称为词类或词汇类别。用于特定任务的标记的集合被称为一个标记集

词性:词类,词汇性质,词汇的语义功能,词汇的所属类别

词性取决于:1.选定的词的类别体系 2.词汇本身在语句中上下文的语法语义功能 一个词汇有多个不同的词性,词性兼类现象

词性唯一:单性词 词性多于2个:兼类词

词性标注:将单词按它们的词性分类并进行相应地标注的过程,称为词语性质标注、词性标注或简称标注。

词性标注器:一个标注器能够正确识别一个句子的上下文中的这些词的标记 词性标注方法:三类

2.1 NLTK常用词性:

  1. CC Coordinating conjunction 连接词
  2. CD Cardinal number 基数词
  3. 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.
  4. EX Existential there 存在句
  5. FW Foreign word 外来词
  6. IN Preposition or subordinating conjunction 介词或从属连词
  7. JJ Adjective 形容词或序数词
  8. JJR Adjective, comparative 形容词比较级
  9. JJS Adjective, superlative 形容词最高级
  10. LS List item marker 列表标示
  11. MD Modal 情态助动词
  12. NN Noun, singular or mass 常用名词 单数形式
  13. NNS Noun, plural 常用名词 复数形式
  14. NNP Proper noun, singular 专有名词,单数形式
  15. NNPS Proper noun, plural 专有名词,复数形式
  16. PDT Predeterminer 前位限定词
  17. POS Possessive ending 所有格结束词
  18. PRP Personal pronoun 人称代词
  19. PRP$ Possessive pronoun 所有格代名词
  20. RB Adverb 副词
  21. RBR Adverb, comparative 副词比较级
  22. RBS Adverb, superlative 副词最高级
  23. RP Particle 小品词
  24. SYM Symbol 符号
  25. TO to 作为介词或不定式格式
  26. UH Interjection 感叹词
  27. VB Verb, base form 动词基本形式
  28. VBD Verb, past tense 动词过去式
  29. VBG Verb, gerund or present participle 动名词和现在分词
  30. VBN Verb, past participle 过去分词
  31. VBP Verb, non-3rd person singular present 动词非第三人称单数
  32. VBZ Verb, 3rd person singular present 动词第三人称单数
  33. WDT Wh-determiner 限定词(如关系限定词:whose,which.疑问限定词:what,which,whose.)
  34. WP Wh-pronoun 代词(who whose which)
  35. WP$ Possessive wh-pronoun 所有格代词
  36. 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等学习【转载】的更多相关文章

  1. 第四期coding_group笔记_用CRF实现分词-词性标注

    一.背景知识 1.1 什么是分词? NLP的基础任务分为三个部分,词法分析.句法分析和语义分析,其中词法分析中有一种方法叫Tokenization,对汉字以字为单位进行处理叫做分词. Example ...

  2. Java多线程学习(转载)

    Java多线程学习(转载) 时间:2015-03-14 13:53:14      阅读:137413      评论:4      收藏:3      [点我收藏+] 转载 :http://blog ...

  3. 常用中文分词工具分词&词性标注简单应用(jieba、pyhanlp、pkuseg、foolnltk、thulac、snownlp、nlpir)

    1.jieba分词&词性标注 import jieba import jieba.posseg as posseg txt1 =''' 文本一: 人民网华盛顿3月28日电(记者郑琪)据美国约翰 ...

  4. Windows Services 学习(转载)

    转载:http://blog.csdn.net/fakine/article/details/42107571 一.学习点滴 1.本机服务查看:services.msc /s2.服务手动安装(使用sc ...

  5. OpenGL入门学习(转载)

    说起编程作图,大概还有很多人想起TC的#include <graphics.h>吧? 但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜的640*480分辨率.16色 ...

  6. 【学习转载】MyBatis源码解析——日志记录

    声明:转载自前辈:开心的鱼a1 一 .概述 MyBatis没有提供日志的实现类,需要接入第三方的日志组件,但第三方日志组件都有各自的Log级别,且各不相同,但MyBatis统一提供了trace.deb ...

  7. JVM的相关知识整理和学习--(转载)

    JVM是虚拟机,也是一种规范,他遵循着冯·诺依曼体系结构的设计原理.冯·诺依曼体系结构中,指出计算机处理的数据和指令都是二进制数,采用存储程序方式不加区分的存储在同一个存储器里,并且顺序执行,指令由操 ...

  8. [分词] C#SegList分词辅助类,帮助类 (转载)

    点击下载 SegList.rar 主要功能如下最新的SegList分词辅助类,帮助类看下面代码吧 /// <summary> /// 类说明:SegList /// 编 码 人:苏飞 // ...

  9. Jqgrid学习(转载)

    jqGrid API 全   JQGrid是一个在jquery基础上做的一个表格控件,以ajax的方式和服务器端通信. JQGrid Demo 是一个在线的演示项目.在这里,可以知道jqgrid可以做 ...

随机推荐

  1. Phoenix系列:二级索引(1)

    Phoenix使用HBase作为后端存储,对于HBase来说,我们通常使用字典序的RowKey来快速访问数据,除此之外,也可以使用自定义的Filter来搜索数据,但是它是基于全表扫描的.而Phoeni ...

  2. angular ng-repeat中DOM的重新渲染机制(项目中遇到问题)

    昨天在项目中遇到一个问题:文本框中输入值只要变化就要请求接口获取数据赋值给couponData,这样性能不好.所以和服务器端沟通改成了服务器端一次性返回所有数据,这样前端只要获取一次数据然后保存在对象 ...

  3. 使用python爬虫爬取股票数据

    前言: 编写一个爬虫脚本,用于爬取东方财富网的上海股票代码,并通过爬取百度股票的单个股票数据,将所有上海股票数据爬取下来并保存到本地文件中 系统环境: 64位win10系统,64位python3.6, ...

  4. Django----认证系统和auth模块

    COOKIE 与 SESSION 概念 cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要“保持状态”,因此cookie就是在这样一个场景下诞生. cookie ...

  5. 关于SQL SERVER中的FLOAT转换为VARCHAR

    关于SQL SERVER中的FLOAT转换为VARCHAR 一个FLOAT型的字段,要转换为VARCHAR,可是小数点后面的都自动被删去了...后查得可以通过如下转换获得: SELECT CAST(C ...

  6. robot framework教程-------虫师

    http://www.testclass.net/2017/09/28/happy-holidays/

  7. /etc/apt/sources.list" E212: Can't open file for writing解决方案

    :w !sudo tee % > /dev/null 解决.

  8. python3实现字符串的全排列的方法(无重复字符)

    https://www.jb51.net/article/143357.htm 抛出问题 求任意一个字符串的全排列组合,例如a='123',输出 123,132,213,231,312,321.(暂时 ...

  9. 分布式任务队列Celery入门与进阶

    一.简介 Celery是由Python开发.简单.灵活.可靠的分布式任务队列,其本质是生产者消费者模型,生产者发送任务到消息队列,消费者负责处理任务.Celery侧重于实时操作,但对调度支持也很好,其 ...

  10. RSA 理论

    一.同余 给定一个正整数m,如果两个整数a和b满足(a-b)能够被m整除,即(a-b)/m得到一个整数,那么就称整数a与b对模m同余,记作a≡b(mod m) 二.欧拉定理 任意给定正整数n,请问在小 ...