专栏首页人工智能头条一起来看看词性标注

一起来看看词性标注

本文根据自己的学习过程以及查阅相关资料的理解,对自然语言基础技术之词性标注进行了相对全面的简绍,包括定义、目前的难点以及常见方法,还推荐了一大波 Python 实战利器,并且包括工具的用法。

01

词性定义

维基百科上对词性的定义为:In traditional grammar, a part of speech (abbreviated form: PoS or POS) is a category of words (or, more generally, of lexical items) which have similar grammatical properties.

词性指以词的特点作为划分词类的根据。词类是一个语言学术语,是一种语言中词的语法分类,是以语法特征(包括句法功能和形态变化)为主要依据、兼顾词汇意义对词进行划分的结果。

从组合和聚合关系来说,一个词类是指:在一个语言中,众多具有相同句法功能、能在同样的组合位置中出现的词,聚合在一起形成的范畴。词类是最普遍的语法的聚合。词类划分具有层次性。如汉语中,词可以分成实词和虚词,实词中又包括体词、谓词等,体词中又可以分出名词和代词等。

词性标注就是在给定句子中判定每个词的语法范畴,确定其词性并加以标注的过程,这也是自然语言处理中一项非常重要的基础性工作,所有对于词性标注的研究已经有较长的时间,在研究者长期的研究总结中,发现汉语词性标注中面临了许多棘手的问题。

02

中文词性标注的难点

汉语是一种缺乏词形态变化的语言,词的类别不能像印欧语那样,直接从词的形态变化上来判别。

常用词兼类现象严重。《现代汉语八百词》收取的常用词中,兼类词所占的比例高达22.5%,而且发现越是常用的词,不同的用法越多。由于兼类使用程度高,兼类现象涉及汉语中大部分词类,因而造成在汉语文本中词类歧义排除的任务量巨大。

研究者主观原因造成的困难。语言学界在词性划分的目的、标准等问题上还存在分歧。目前还没有一个统的被广泛认可汉语词类划分标准,词类划分的粒度和标记符号都不统一。词类划分标准和标记符号集的差异,以及分词规范的含混性,给中文信息处理带来了极大的困难。

03

词性标注常见方法

关于词性标注的研究比较多,这里介绍一波常见的几类方法,包括基于规则的词性标注方法、基于统计模型的词性标注方法、基于统计方法与规则方法相结合的词性标注方法、基于深度学习的词性标注方法等。

基于规则的词性标注方法

基于规则的词性标注方法是人们提出较早的一种词性标注方法,其基本思想是按兼类词搭配关系和上下文语境建造词类消歧规则。早期的词类标注规则一般由人工构建。

随着标注语料库规模的增大,可利用的资源也变得越来越多,这时候以人工提取规则的方法显然变得不现实,于是乎,人们提出了基于机器学习的规则自动提出方法。

基于统计模型的词性标注方法

统计方法将词性标注看作是一个序列标注问题。其基本思想是:给定带有各自标注的词的序列,我们可以确定下一个词最可能的词性。

现在已经有隐马尔可夫模型(HMM)、条件随机域(CRF)等统计模型了,这些模型可以使用有标记数据的大型语料库进行训练,而有标记的数据则是指其中每一个词都分配了正确的词性标注的文本。

基于统计方法与规则方法相结合的词性标注方法

理性主义方法与经验主义相结合的处理策略一直是自然语言处理领域的专家们不断研究和探索的问题,对于词性标注问题当然也不例外。

这类方法的主要特点在于对统计标注结果的筛选,只对那些被认为可疑的标注结果,才采用规则方法进行歧义消解,而不是对所有情况都既使用统计方法又使用规则方法。

基于深度学习的词性标注方法

可以当作序列标注的任务来做,目前深度学习解决序列标注任务常用方法包括LSTM+CRF、BiLSTM+CRF 等。

值得一提的是,这一类方法近年来文章非常多,想深入了解这一块的朋友们可以看这里:

https://github.com/sebastianruder/NLP-progress/blob/master/english/part-of-speech_tagging.md

最后再放一个词性标注任务数据集(人民日报 1998 词性标注数据集):

https://pan.baidu.com/s/1fW908EQmyMv0XB5i0DhVyQ

04

词性标注工具推荐

1. Jieba

“结巴”中文分词:做最好的 Python 中文分词组件,可以进行词性标注。

Github 地址:

https://github.com/fxsjy/jieba

2. SnowNLP

SnowNLP 是一个 python 写的类库,可以方便的处理中文文本内容。

Github 地址:

https://github.com/isnowfy/snownlp

3. THULAC

THULAC(THU Lexical Analyzer for Chinese)由清华大学自然语言处理与社会人文计算实验室研制推出的一套中文词法分析工具包,具有中文分词和词性标注功能。

Github 地址:

https://github.com/thunlp/THULAC

4. StanfordCoreNLP

斯坦福 NLP 组的开源,支持 python 接口。

Github 地址:

https://github.com/Lynten/stanford-corenlp

5. HanLP

HanLP 是一系列模型与算法组成的 NLP 工具包,由大快搜索主导并完全开源,目标是普及自然语言处理在生产环境中的应用。

Github 地址:

https://github.com/hankcs/pyhanlp

6. NLTK

NLTK是一个高效的 Python 构建的平台,用来处理人类自然语言数据。

Github 地址:

https://github.com/nltk/nltk

官网:http://www.nltk.org/

7. SpaCy

工业级的自然语言处理工具,遗憾的是不支持中文。

Gihub 地址:https://github.com/explosion/spaCy

官网:https://spacy.io/

作者简介

乐雨泉 (yuquanle),湖南大学在读硕士,研究方向机器学习与自然语言处理。曾在IJCAI、TASLP等会议/期刊发表文章多篇。欢迎志同道合的朋友和我在公众号"AI小白入门"一起交流学习,探讨成长。

本文分享自微信公众号 - 人工智能头条(AI_Thinker),作者:乐雨泉

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-03-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 我猜,你还不知道数据标注公司在做什么吧?(2)

    《我猜,你还不知道数据标注公司在做什么吧?》中我们提到的资源,也就是数据标注公司要面对的甲方:AI公司、AI企业、AI研究所。那么问题来了,人工智能公司、人工智...

    用户1737318
  • 我猜,你还不知道数据标注公司在做什么吧?

    大多数AI实验室、初创型AI公司在发展初期如果雇佣大量的人力进行数据标注,就不得不面临下面两种处境:

    用户1737318
  • CCAI 2017 | 日本理化学研究所先进智能研究中心主任杉山将:弱监督机器学习的研究进展

    用户1737318
  • 快速掌握Python基础语法(上)

    这个《快速掌握Python基础语法》会更新两期,主要记录一些 Python 常用语法,方便你快速上手。会了这些语法之后,大部分的 Python 代码你应该都可以...

    SuperFeng
  • Python3基本数据类型之set

    集合对象是一组无序排列的可哈希的值,集合成员可以做字典中的键。集合支持用in和not in操作符检查成员,由len()内建函数得到集合的基数(大小), 用 fo...

    py3study
  • react native

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    sofu456
  • Android中AsyncTask的使用

    https://blog.csdn.net/liuhe688/article/details/6532519

    杨奉武
  • 提升用户体验,微信小程序“授权失败”场景的优雅处理

    微信小程序中提供了相关API 让开发者能获取到微信用户的相关信息,在首次去获取的时候会展示一个用户是否同意授权的对话框。Jeff 发现有不少线上的小程序都没有处...

    Jeff
  • cssjshtml jquery向动态生成的元素添加事件

    delegate() 方法为指定的元素(属于被选元素的子元素)添加一个或多个事件处理程序,并规定当这些事件发生时运行的函数。

    葫芦
  • 1005. 继续(3n+1)猜想 (25)

    卡拉兹(Callatz)猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。

    指点

扫码关注云+社区

领取腾讯云代金券