分词和词性标注是自然语言处理领域的重要组成部分,尤其对于中文而言,作为整条自然语言处理pipeline的源头,分词和词性标注更是起到了关键的作用。我整理这篇文章,主要来源于这几个问题:
一、理解中文词性是否有意义?
问题:前几天跟几个刚认识的朋友谈自然语言处理的相关问题时,遇到一问题让我觉得很有意思,这位朋友说,中文没有词性可言,因为中文的词性兼类太过于严重,动副兼类,名动兼类等等,理解中文词性没有任何意义。当然,这位朋友知识从一个汉语本身的特点来说出的这个结论,但说理解中文词性没有任何意义,这个不太赞同。中文的词性与中文的语言构成和语言使用具有严格上的对应关系,而且词性作为概念的抽象,对于语言的泛化具有重要意义。
二、搞自然语言处理的是否要懂词性标记体系?
作为课题组的自然语言处理面试官,我出了一道开放性的问题,很简单,面试题为:介绍一下开源中文自然语言处理工具包的常见词性、依存关系标记及其对应的含义。但至今为止,没有人答上来过,这让我感到有点失望。做自然语言处理,在深度学习大行其道之时,都不注意语言本身的基础知识,这很有可能会导致“不懂你研究的对象还偏要去研究它”的悖论。理解中文的词性和语义依存关系是自然语言处理的一项基本功,大家一定要引起注意。
因此,本文将总结中文词性和依存关系,结合其具体含义以及相关的开源标记展开论述。
一、中文的词性
词是语义完整的最小语言单位,中文的词语包括有实词和虚词两个大类,实词指能够独立充当语法成分并且有实际意义的词,包括名词、动词、形容词、数词、量词、代词共6个小类。虚词指的是不能独立充当语法成分的词,主要有副词、介词、连词、助词、语气词、拟声词、感叹词6类,两者相加,一共组成12类词性。下图主要列举了中文实词和虚词的分类、意义、对应的NLP任务以及完成的任务几个信息。
图1-实词分类及信息
图2-虚词分类及信息
二、开源工具中的词性标注体系
不同的开源工具会采用不同的词性标注体系,但就词性标注的类比而言,差异不大。Jieba分词是目前自然语言处理词性标注的主流词性标注工具,下面主要列举了该工具的词性标注规范。
三、词性标记在自然语言处理中的应用
标记最大的好处在于对词语成分进行了标记,这种标记信息起到了一个分类和指引的作用,由于我们整个人类社会都是基于标签体系在运作的,所以基于词性标签进行信息的筛选和过滤往往能够带来不错的效果。笔者在实际的工作和学习过程中总结到了词性标注主要有以下几种应用。
1、停用词的选择
去除停用词是目前自然语言处理中的常用手段,在进行特征提取、无关信息过滤上,去除无用词扮演着重要作用。从方法上来说,去除停用词包括基于词表的停用词去除和基于词性的停用词去除两种方法,其中基于词表的停用词去除往往需要人工定义出大量的停用词,如“是”、“这”之类的词语。后者则可以根据词性本身的特性进行去除,例如连词、助词、介词等词性,也可以将无用词进行移除。当然,两种方法都各有利弊,前者往往需要人工去构造停用词表,而且不同领域的文本其实用到的停用词是不同的,这在进行跨领域文本处理的时候,往往需要花费大量人力,但这种人力是值得的,可以做到不同领域文本的适配。后者的优势在于简单和快速,无需穷举,缺点就是无法做大领域自适应。因此,为了互补,往往会选择两种方式结合的去停用词方式,即停用词表与停用词性的停用词去除方法。
2、关键信息提取过滤
通常关键词或高频词提取是我们在进行文本信息提取是的常用方法,这种方法本质上是从词的角度对文本中的代表性信息进行形式化。从技术角度上来说,可以基于统计概率的方法极性提取,如常用TF求高频词,常用的TFID方法获取关键词,常用的LDA方法获取主题词等。但这种基于概率的方法对于词性本身而言是不敏感的,为了使得结果漂亮一些,往往需要再加上一层词性过滤,如通常提取名词性成分和动词性成分,如名词性成分中的人名、地名、机构名等,动词性成分中的动词、习语等。
四、总结
词性标注是自然语言处理中的重要内容,本质上分成词性和标注两个部分,词性部分是对中文语言的抽象分类,标注完成的是人对词语的认知过程。作为自然语言处理的研究或开发人员,应该对自己所处理的对象有个认识,知彼知己,才能百战百胜,一味地投入深度学习网络参数模型之中,有种舍本逐末的感觉。中文的词性标注足够有趣,足够有用,且足够具有挑战性。本文提出了目前大家对中文词性的忽视和误解,从实词和虚词两个角度出发,分析了中文词性体系,词性的对应任务和意义,并在最后就词性在中文自然语言处理中的应用进行了简单的介绍。