2.2.1 语法类任务
语法类任务是自然语言处理的经典任务,主要包括词法、句法和篇章分析三个部分。
1.词法分析
词法分析主要是中文分词、词性标注和命名实体识别任务,此外还包括词形态学任务,即对词根、词干和前缀、中缀、后缀进行拼写校正、词干提取以及词形还原,以提升词汇识别泛化能力。这里我们主要介绍中文分词、词性标注和命名实体识别三个经典任务。
(1)中文分词
中文分词,简单来说就是将句子中词语的边界划分出来。英文单词由于本身已经使用空格分开,因此无须讨论。在存在生词或歧义词的情况下,需要寻找一条最合理的词组划分路线。举一个例子来说明,假如待分词文本为“自然语言理解与行业知识图谱”,那么分词任务就是将上述文本分为“自然语言理解”与“行业知识图谱”。
从20世纪80年代开始,中文分词的发展可以大致分为三个阶段。
第一个阶段为二十世纪八九十年代,这一时期的中文分词主要以基于词典和人工规则的方法为主,即利用词表来分词。根据词表对句子中的各个组成词从前到后逐字检索,建立字和后续字之间的边,形成一条条分词路径。但这里面只有一条路径是最合理的,怎样获得最佳分词路径呢?典型的方法是最大匹配算法,即将待分词文本中的几个连续字符从左至右与词表进行匹配,如果匹配,则切分出一个词。但这存在一个问题,最佳路径并不是一次匹配就能够成功切分,关键是要做到最大匹配。有两种匹配策略:简单匹配和复杂匹配。简单匹配的分词策略是从左到右尽量匹配词典中的最长词。我们用上面的例子来举例:
待分词文本:{“自”,“然”,“语”,“言”,“理”,“解”,“与”,“行”,“业”,“知”,“识”,“图”,“谱”,“。”}
词表={“自然”,“自然语言”,“自然语言理解”}
字符位置编号用[]表示,具体的算法流程如下:
①从文本第一个字符位置[1]开始,当扫描到[2]时,匹配词表发现“自然”已经在词表中,此时不切分,继续扫描看词语是否可以匹配更长的词。
②继续扫描到[3],发现“自然语”不在词表中。但此时我们还不能确定前面找到的“自然”是否是最长的词。因为“自然语”是词表中词的前缀。扫描到[4],发现“自然语言”是词表中的词,继续扫描发现“自然语言理解”。
③继续扫描到[7]的时候,发现“自然语言理解与”并不是词表中的词,也不是任何词的前缀,此时输出最大匹配词——“自然语言理解”。
由此可见,最大匹配词必须保证下一个扫描不是词表中的词或词的前缀才可以结束。这种机械匹配法缺乏歧义切分处理,而且强烈依赖于词表容量,实际应用中会有很多分词遗漏。
另一种是复杂匹配。简单匹配每次只考虑一个词,而复杂匹配需同时考虑三个词,每个词是以一个词开始的N个词,根据这N个词确定起始位置,继续递归三次得到多组词,再通过词长、词频、语素自由度等规则消解获得分词结果。由于计算复杂度高,后来引入了改进的分词方法。
第二个阶段为20世纪90年代,这一时期基于语料库的统计学习方法大为流行,基于词典全切分加上最大概率路径计算的统计方法是这一时期中文分词的主流。它的基本思想是:首先获取文本序列的所有可能分词路径,构成有向无环图。由于语料库规模较大,在大数定律的指导下,可以近似认为通过统计语料库中词汇、词频以及词汇跳转频率等,从而获得真实文本分词总体分布的近似估计,再计算其中概率最大的分词路径,如图2-1中加粗的路线为分词结果。但在复杂场景和长尾分布词汇大量存在的情况下,这种分词方法难以得到更高的准确率。
图2-1 文本序列所有可能的分词路径构成有向无环图,加粗的路线为分词结果
第三个阶段为21世纪以来至今,中文分词的思路逐渐由词向字转变。其基本思想是基于大规模语料库对语料文本中的每一个字进行标注,而分词被看作是对一个字序列进行标注的过程。标记状态通常分为4种,词首(B)、词中(M)、词尾(E)和单独成词(S)。然后结合机器学习方法训练分词模型,分词过程就是找到一个最优的符合标准的分词结果。最典型的文本序列标注方法将在第3章进行详细介绍。基于字的分词方法可以有效提高发现新词的能力。随着深度学习的兴起,也出现了基于神经网络的分词器,进一步提高分词模型的泛化能力。
目前中文分词的难点主要在三个方面。
①分词标准:需要根据不同的需求制定不同的分词标准。
②歧义:一个待切分文本序列存在多个分词结果,彼此可能都合理但会引起歧义。
③新词问题:尽管基于字的分词方法提高了新词的识别能力,然而由于新词普遍存在长尾分布的现象,很多统计特征不能被模型充分学习。
(2)词性标注
词性标注是指在文本中判定每个词最合适的词性标记,即在分词完成后添加名词(n)、动词(v)等词性标签。常见的词性有名词(n)、动词(v)、数词(m)、量词(q)、不可数名词(n)、动名词(vn)、不及物动词(vi)、形容词(a)等。举一个例子来说明:
分词结果:一|种|机器|学习|的|虚拟|现实|算法
词性标注结果:一/m 种/q 机器/n 学习/v 的/u 虚拟/v 现实/n 算法/n
词性标注的正确与否将直接影响后续的句法分析、语义分析任务。目前常用的词性标注方法包括基于规则和统计模型的方法。
基于规则的词性标注方法。早期的词性标注规则一般由人工构建,基本思想是根据词搭配关系和上下文语境,构建标注规则。随着文本复杂度的提高,设计人工标注规则的方法对专家经验依赖过多,泛化能力差。
基于统计模型的词性标注方法。随着语料库的规模增大,逐渐将词性标注看作序列标注问题,如中文分词任务一样。常用的序列标注体系有两种,即BIOES和BIO体系。BIOES分别是Begin、Inside、Outside、End和Single的大写首字母,与某个词词性的开头、内部、外部、结束和单个词性一一对应。与BIOES标注体系类似,BIO分别代表词性的Begin、Inside和Outside。许多文献报告表明,由于BIOES可以提供更详细的位置信息,其性能明显优于BIO。通过机器学习模型(将在第3章进行介绍),如隐马尔可夫模型(Hidden Markov Model, HMM)、条件随机场(Conditional Random Field, CRF)以及深度学习模型,对有正确词性标注的标记语料序列进行训练,输出词性预测概率,结合解码算法从而给出最可能的词性标签预测。进一步,还可以尝试结合规则和统计模型的词性标注方法,尽可能发挥两者的长处。
目前词性标注任务的困难主要在以下几个方面:
①词形缺陷。以汉语为例,由于缺乏词的形态变化,不能直接从词的形态变化判别词的类别。
②常用兼类词现象严重。兼类词是指一个词多种词性共存的现象,需要结合上下文和具体场景来进行消歧,造成标注任务困难重重。
③认知差异可能给语料标注带来错误的标注结果,造成模型处理的困难。
(3)命名实体识别
中文分词任务的目的是挑选出稳定、通用的基本词汇元素,然而随着大数据时代的到来,出现大量未识别的命名新词,被统称为未登录词或命名实体(Named Entity)。命名实体中专有名词、新词或术语占据了绝大部分内容,需要对它们进行有效识别。
命名实体识别(Named Entity Recognition, NER)任务是从非结构化文本中抽取出具有特定类别的实体,比如专利文本中的产品(PRODOCT)/属性(PROPERTY)/组件(COMPONENT)名称等,具体实例如下所示。
样例一:
一种基于IBN的物联网卫星系统及其路由方法
!!!PROPERTY: IBN PRODUCT:物联网卫星系统
样例二:
一种井盖,包括井盖本体,其特征在于:所述井盖本体上开有直壁盲
!!!PRODUCT:井盖,COMPONENT:井盖本体
命名实体短语或词组可跨越多个字符,因此命名实体的标签由位置指示符和实体类别两部分构成。位置指示符即标注当前字符在命名实体中位置的信息,比如实体的开头、结尾。实体类别用来区分命名实体的类别,常采用缩写形式来区分,如PER代表人名类,LOC代表地名,ORG代表组织结构。以BIOES标签体系为例,包含人名、地名、组织机构三类实体的标签集合内共有9种标签,标签类别及标签说明如表2-2所示。
表2-2 BIOES标签体系实例
自1996年MUC-6会议上命名实体识别这一术语被正式提出以来,这一信息抽取任务被越来越多的学者追踪及关注,得到了快速发展。与词性标注任务一样,命名实体识别也以文本序列标注问题来进行建模处理。输入文本形式化表示为S=c1, c2, c3, ..., cn,其中ci代表文本序列中的第i个字。经过建模分析处理,输出一一对应的序列标注结果Y=y1, y2, y3, ..., yn,其中标签yi归属于给定的标签集,从而实现序列标注。模型学习的是标注映射方法,这里形式化表示为f:S→Y。
根据模型的输入,命名实体识别模型大致分为基于字符的方法和基于词的方法两大类。中文命名实体识别相较于英文命名实体识别起步晚且发展不充分,目前仍然面临许多挑战,主要表现在:
①中文文本表示没有明显的词边界标识。词与词之间没有明显的边界标识。目前多数中文命名实体识别模型依赖于中文分词的结果,实体的边界识别往往受到中文分词的影响。
②中文实体没有词型变换特征。在英文领域中,命名实体通常具有首字母大写、斜体表示等词型变换特征,但中文文本不具有这些特征,给中文命名实体识别带来一定的困难。
③中文命名实体结构较为复杂。常见的情形有:人名、地名、机构名中可能存在别名、简称等,机构名中常见嵌套实体等。
④中文命名实体存在一词多义现象。随着互联网技术的飞速发展以及国家开放程度的不断提高,新词、热词不断涌现,一部分实体开始被赋予新的含义,比如阿里巴巴指互联网公司并非童话人物,这些新词的出现给识别带来一定的困难。
⑤相较于英文识别,中文命名实体识别发展较晚,用于实体识别研究的标注语料较少,语料较为单一,一定程度限制了中文命名实体识别的发展。
2.句法分析
句法分析是对输入的文本序列进行语法构成判断,研究词间依存关系或短语结构关系。如图2-2所示,句法分析主要细分为两个任务:句法结构分析和依存句法分析。其中,句法结构分析又称成分结构分析或短语结构分析,以分层的方式从句子中提取短语,消除句子中词法和结构方面的歧义,确定短语的语法特征之后组合成为一个完整的句子;依存句法分析又称为依存关系分析或依存结构分析,仅关注词对之间的关系,分析句子的内部结构,如成分构成、上下文关系等。
图2-2 句法分析任务
在句法结构分析中以获取整个句子的句法结构为目的的分析称为完全句法分析。句法结构通常使用树状数据结构来表示。目前,句法结构分析主要基于统计学习的方法,其中基于概率的上下文无关文法(Probabilistic Context Free Grammar,PCFG)分析是最具代表性的语法驱动句法分析方法。以句子“本实用新型公开了一种激光切割机自动定位装置,包括定位支架和控制面板,定位支架的上表面安装有底盘。”为例,输出的短语结构树如图2-3所示。
图2-3 短语结构树示例
基于PCFG的句法分析模型需满足以下三个条件。
①位置不变性:子树的概率不依赖于该子树所管辖的单词在句子中的位置。
②上下文无关性:子树的概率不依赖于子树控制范围以外的单词。
③祖先无关性:子树的概率不依赖于推导出子树的父节点。
由于PCFG缺乏词汇建模,于是人们提出了词汇化的短语结构分析器,有效地提升了基于PCFG的句法分析器的效能。自然语言文本生成每个非终结符的概率往往与上下文结构有关系,因此有人提出了一种带有隐含标记的上下文无关文法(PCFG with Latent Annotation,PCFG-LA),该方法可以标注每个非终结符父节点的句法标记信息,使得非终结符的细化过程可以自动进行,并生成语法结构树[1]。
这些方法提升了基于PCFG的句法分析器的效能。另一种浅层语法分析方法只要求识别句子中某些结构相对简单的独立成分,如短语结构和递归结构,这些结构被称为语块(chunk)。该方法针对两个主要子任务:语块识别(也被称为语块边界分析)和语块关系分析。其中语块识别为主要任务。语块的一个重要类别是基本名词短语(Base Noun Phrase, baseNP),它是指简单的、非嵌套的名词短语。如果一个句子的成分可简单地分为baseNP和非baseNP两类,那么baseNP识别问题就可以通过文本分类方法解决。
依存句法分析是句法分析的重要内容。有时我们并不需要知道整个句子的短语结构树,只是希望获得词与词之间的依存关系。用词与词间的依存关系来描述语言结构框架的结构语法称为依存语法,它是以谓语中的动词为中心,建立词与词之间的从属关系,因此依存语法也被称为从属关系语法。
常用的依存结构包括三种:有向图、依存分析树和依存投射树。一个依存关系连接两个词,核心词和修饰词。在依存分析树中,一条依存边连接两个节点,核心词对应父节点,修饰词对应子节点。两个词之间的依存关系可细分为十几种类型,如主谓关系(Subject-verb, SBV)、后附加关系(Right Adjunct, RAD)、定中关系(Attribute, ATT)、核心关系(Head, HED)等。举一个例子,假如输入文本为标注完分词、词性的一个句子,依存句法分析后的结果如下所示:
样例:[“一”,“种”,“机器”,“学习”,“的”,“虚拟”,“现实”,“算法”]
依存句法分析输出结果:
ATT(一,种)
ATT(种,算法)
SBV(机器,学习)
ATT(学习,算法)
RAD(的,学习)
ATT(虚拟,算法)
ATT(现实,算法)
HED(算法,Root)
注意:括号内第一个词为修饰词,第二个词为核心词
在算法层面,依存句法分析通常用概率图模型为词序列生成有向图,由于每个词必须依存于其他词,所以图中的边和节点个数相等。基于概率图模型的方法主要有两类:一种是生成式方法,即通过联合概率模型计算生成一系列依存分析树并赋予其概率分值,然后找到概率分值最高的分析树作为最后的输出。由于采用全局搜索,这种算法准确率较高,但复杂度也高,效率较低。另一种是判别式方法,采用条件概率模型寻找使目标函数(训练样本生成概率)最大的模型参数θ。常见的基于转移-决策的统计学习方法,考虑当前句中的词、词性、词间关系、关系指向等特征。对N个关系类型,构造(2N+1)个类别的多分类任务,实现依存句法分析。有关概率图模型的相关算法,第3章还会进行详细介绍。
3.篇章分析
篇章分析是词法、句法分析之上的高阶语言处理,需要考虑的语言现象多变且复杂,目前成熟通用的分析方法较少。篇章分析任务包括篇章结构分析、语用文体学等。
篇章结构分析主要关注衔接性分析和连贯性分析两个方面。篇章的衔接性分析目前主要集中在句间形式关联上,本书不做过多介绍。连贯性分析指获得句子层面的意义关联,但存在如何界定句子基本单元的难题。比如以小句或以标点句为基本单元,涉及复句切分的问题,且句子和句群关系分析也很麻烦。
语用文体学主要是研究人们如何运用语言达成某种目的,以及如何根据话语进行行为理解等。前述篇章的连贯性、衔接性分析是从语法和语义的角度获得篇章上下文结构,而语用文体学是从意图角度分析话语行为(Speech Act)。在分析言语行为或意图时,需要结合整个语篇的上下文连贯意图和话语行为进行分析。
篇章分析中存在的难点主要包括如下几个方面:
①在对篇章进行复句切分时,由于衔接手段出现频繁,尤其是指代和省略,给统计学习和规则制定带来很大的困难。
②针对转折、并列和因果等复句,如何判断句子语义的核心位置。
③汉语中的“言外之意”以及经常省略主要句法成分,都是篇章分析中的难点。