APP下载

基于混合方法的含动词名词短语识别研究

2019-02-16方芳王石王亚符建辉曹存根

关键词:分词命名短语

方芳,王石,王亚,符建辉,曹存根*

(1.中国科学院计算技术研究所,智能信息处理重点实验室,北京 100190;2.中国科学院大学,北京 100049)

0 引言

名词短语(Noun Phrase,简称NP)识别是自然语言处理和文本挖掘领域的基础问题之一,在句法分析、主干提取、语义分析、知识获取、信息检索等众多领域都有重要的意义,是完成这些任务的基础工作。已有的名词短语识别更多着眼于命名实体的识别,目标是正确识别人名、机构名、地名短语(有时包含时间、数量词),范围较窄且不能完全解决含动词名词短语。而在所有名词短语中,含有动词的名称短语识别尤为困难,往往存在很多歧义。

本文的目标是识别含动词的名词短语,并帮助FSTD[1]进行知识抽取,通过对问题和语料的考察,发现包含动词的名词短语识别中主要包含了以下难点。

1)分词错误

目前的分词工具经常会产生一些错误,包括分词和词性标注的错误,尤其是含动词名词短语中的动词,常会被标记为动词。而这些会对含动词名词短语识别带来很大影响。

2)边界确定

确定名词短语的左右边界是名词短语识别的关键。有些名词短语会伴随搭配信息一起出现,而这一方法对本文的研究目标含动词名词短语同样适用。例如“在/p 后期/n 维护/v 方面/n”, 其中“在/p”和“方面/n”是名词短语左右边界。

3)VN和NV结构的名词短语

含动词名词短语中,有一类特殊的结构V+N和N+V。这两种情况很难确定其动词V是短语的一部分还是句子中的谓语动词。例如,“运行/v 内存/n”可能是指偏正结构的名词短语, 或者“运行”与“内存”构成动宾结构的动词短语。同理,“机器/n 学习/v”可能表示名词短语,指一种算法,或者“学习”与“机器”构成主谓结构。

4)标记数据少

目前公开的已标记名词短语数据集只有少量用于命名实体识别的数据,并没有适合本文工作的数据,因此如何在很少的训练数据下完成含动词名词短语识别也是一个难题。

含动词名词短语识别与命名实体识别、术语识别有相似的地方。识别方法可以分为4类,分别是语言学方法、统计方法、神经网络方法和混合方法。

1)基于语言学的方法

基于句法进行名词短语识别的主要思想是将短语当作满足特定句法的一种形式[2],利用句法结构确定可能的名词单元。Petasis等[3]采用句法分析树辨别上下文环境的方法,从而获取实体的名称。另外一种方法是使用词汇的模式来识别名词短语,Justeson等[4]将介名短语、形名短语和名名短语作为候选术语。Shih-Hung[5]利用词汇的内部结构来建立中文本体分类关系的系统,并提出一些模板,如:A+Na, Na+Nb, A+Nc, Na+Nc 等。

2)基于统计的方法

Hanks等[6]利用互信息度量词组频繁共现的程度,抽取词语的固定组合和搭配。Bender等[7]提出信息熵模型进行实体名称识别。Collier等[8]提出了一种基于隐马尔科夫模型识别的新方法,识别生物医学领域的概念。刘群[9]提出一种层叠的隐马尔科夫模型,将汉语分词、词性标注、切分排歧和未登录词识别集成到一个理论框架中。向晓雯[10]在条件随机场模型(CRF)中利用改进的标准集对命名实体进行识别。Zhou等[11]提出了一种利用条件随机场CRFs模型进行字一级分词和词一级命名实体识别的两阶段识别方法。

3)基于神经网络的方法

随着深度学习和人工智能的发展,基于神经网络的命名实体识别也取得了较好的成果。目前存在很多基于神经网络的命名实体识别方法。Collobert等[12]使用长短时记忆模型(LSTM)进行了命名实体识别的研究。Chiu等[13]在英文环境中使用双向LSTM提取文本全局特征,再使用 CNNs 提取单词的特征来进行命名实体的识别。Kuru等[14]使用Stacked bidirectional LSTMs 提取文本全局特征进行命名实体识别。

4)混合的方法

Frantzi[15]提出了一种结合语言学和统计学知识进行术语抽取的方法。常卫丽[16]在CRFs模型中加入领域本体。陈万礼[17]结合同义词词典、百科资源等产生初始候选实体集合,利用Ranking SVM对候选集进行排序,从而得到目标实体。另外还存在神经网络与统计相结合的方式,其中包含了LSTM与CRF[18]以及双向LSTM与CRF相结合的方式[19],这两种结合方式在LSTM层后接入CRF层来做句子级别的标签预测,使得标注不再是对各个词语独立分类。Ma等人[20-22]提出了深度学习与其他方法相融合的方式。

为了解决以上难题并完成对含动词名词短语的识别工作,本文采用神经网络、规则、统计融合的方法。首先,对语料进行预处理,其中包括词性、助词、时间、数量词等内容的纠正或合并;其次,根据已有的命名实体数据集使用双向LSTM与条件随机场的方法进行含动词命名实体识别;然后根据百度词条对含动词名词短语进行识别;接着,基于固定搭配、语义分类和描述框架中(Framework of Semantic Taxonomy and Description, 简称FSTD)的文法[1]对含动词名词短语进行识别;最后对提出的方法进行实验和分析。

1 语料预处理

因为中文句子并不像英文存在天然的空格边界,中文语句在计算机处理之前需要进行分词和词性标注。而分词和词性标注存在很多问题,因此在含动词名词短语识别之前对语料进行预处理,其中包括了符号的处理,词性的修正,时间、英文、数字、成语等识别合并。

1.1 词性修改

分词和词性标注错误会影响含动词名词短语的识别,因此预处理时会进行简单词性修正。

1) 助词、助动词的词性修正

助词,是附着在其他词汇、词组或是句子上作辅助之用。协助主要动词构成谓语的词叫助动词。使用助词和助动词词表对助词和助动词进行词性修正,并标记为u和vu。

2) 根据词性处理规则进行词性修改

通过观察发现分词后语句会包含很多不符合语言学的情况,例如“还是”、“只有”是连续的连词,而分词会将其拆分开。因此根据语言学特点设计词性处理规则。

规则库的格式如下:

原句需满足的规则串 → 操作名称(参数)

目前已存在的部分规则如下。

符号解释:以下表达式的词类和规则中存在特殊的符号,解释如下: *:表示任意字符 ?:表示单个字符 |:表示或词类:!有前面的副词词类 = 只|还|已|既|又 !是前面的副词词类 = 于|但|只|而|可|还|若|是!称呼词类 = 女士|先生|小姐|男士|夫人|太太|同志|教授|博士|园长|经理|老师|总裁|工程师…规则:几乎/d+是/v+*/v -> 替代(几乎是/d,几乎/d 是/v) 自主/v + */v -> 替代(自主/vd,自主/v)!是前面的副词词类+是/v -> 拼接(,/c) 准备/v + */v -> 替代(准备/vd,准备/v)!有前面的副词词类+有/v -> 拼接(,/d) ?/v+!称呼词类 -> 拼接(,/n)直/d+到/v -> 拼接(<直,到>,/c) 慎/*+*/v -> 拼接(<慎,*>,/v) 易/*+*/v -> 拼接(<易,*>,/v)

3) 其他词性修正

除了以上的词性修正,还有一些特殊词的词性,包括符号、英文以及形容词。具体的修正方式如下:如果待判定词为符号类型,词性标注不是w,词性修改为w。如果待判定词含有英文字符,则词性改为nx。将“的”字后动词的词性更改为形容词词性a。

1.2 成对符号合并

中文语句在分词以后,成对符号中的内容常常会被分开,而内容被分开会影响语义解析,因此首先将成对符号里的内容进行合并。

其中成对符号包括《》,“”, "", (), (), 【】, [], ‘’,", 「」, <>等。

1.3 语素词、成语、叠词合并

语素词是常见的被过度细分的一类词语,成语和叠词在分词的时候也往往会被分开。本文设计了合并方法,解决这三种问题。

1) 语素词合并

根据语素词表,判定合并带语素词的词,如“加强/v 版/g”,将其合并成一个词,并将其词性进行修改。

2) 成语、叠词合并

成语和叠词是中文中很特殊的两类词,目前的分词系统常会将其分割开,因此要对分割的成语和叠词进行合并。通过考察和收集,已形成成语词典和叠词词典。遍历句子中的所有词,如果存在成语和叠词则进行合并。

1.4 数量词、时间、数字英文串识别

数量词即数量形容词,是表示数、量或程度的形容词。时间则是表示时间的短语。而在中文语句中,一些型号或者名称中常包含字母和数字的字符串,或包含英文单词,而这些在分词时经常会被分隔开,为了后续的含动词名词短语识别,需将其进行合并。

对三种类型的识别,采用基于规则的方式,其中wi表示句子中的词,/表示词性。

w1/m+w2/m→w1 w2/mw1/m+w2/q(量词词典中存在w2)→ w1w2/mqw1/mq + 特殊字符w2 + w3/q→ w1w2 w3/mqw1/m + w2/*(w2是时间量词)→ w1w2/tw1/m + w2/t→w1 w2/tw1/t + w2/t + … + wn/t→w1 w2…wn/tw1/nx + w2/m(w2不含中文) w1 w2/nw1/nx + w2/w→ w1 w2/nw1/m(w1不含中文) + w2/nx→w1 w2/nw1/nx + w2/nx + … + wn/nx→w1 w2…wn/n

2 基于神经网络的含动词命名实体识别

虽然含动词名词短语的识别与命名实体识别(Named Entity Recognition,简称NER)目标不相同,但是命名实体识别可以帮助处理命名实体中包含动词的情况,还可以帮助后面对其他含动词名词短语的识别。本文使用基于字的BiLSTM-CRF方法进行含动词命名实体识别,使用公开的命名实体mrsa数据进行训练。

mrsa数据使用BIO标注方法,即B-PER、I-PER代表人名首字、人名非首字,B-LOC、I-LOC代表地名首字、地名非首字,B-ORG、I-ORG代表组织机构名首字、组织机构名非首字,O代表该字不属于命名实体的一部分。

以句子为单位,将含有n个字的句子(字的序列)记作矩阵x,其中xi表示句子中字的字向量。

x=(x1,x2,…,xn) .

模型的第一层是embedding层,将句子中的每个字由one-hot向量映射为低维的向量Xi∈d,其中d为embedding的维度。设置dropout以防止过拟合。

(h1,h2,…,hn)∈n×m.

因为设置了dropout,此时接入一个线性层,将隐状态向量从m维映射到k维,k为标注集的标签数,从而得到自动提取的句子特征,记作矩阵p=(p1,p2,…,pn)∈n×k.其中pi∈k的每一维pij可以看作将第i个字分类到第j个标签的概率。

模型的第三层是CRF层,进行句子级的序列标注。CRF层的参数是一个(k+2)×(k+2)的矩阵A,Aij表示的是从第i个标签到第j个标签的转移概率,此时对一个位置进行标注利用此前已经标注过的标签,加2是因为句子首部和尾部分别添加一个起始状态和一个终止状态。如果记一个长度等于句子长度的标签序列y=(y1,y2,…,yn),由此句子x的标签y的概率为

(1)

因此整个序列的分值等于每个字的分值之和,而每个位置的分值由两部分得到,一部分是由LSTM输出的pi决定,另一部分则由CRF的转移矩阵A决定。利用Softmax归一化后的概率是:

(2)

模型训练时最大化对数似然函数,下式(3)给出了对一个训练样本(x,yx)的对数似然:

(3)

模型在预测时使用动态规划的Viterbi算法来求解最优路径,即

y*=arg maxy′score(x,y′) .

(4)

整个模型的结构如图1所示。

Fig.1 Named Entity Recognition Model of BiLSTM+CRF图1 BiLSTM+CRF命名实体识别模型

3 基于百度词条的含动词名词短语识别

百度百科是百度公司推出的内容开放的网络百科全书,而百科词条是对整个百科内容的定义。本文从百度百科获取了超过五百万词条,利用百度词条可以帮助对含动词名词短语进行识别。

3.1 动词验证

识别含动词名词短语过程中,首先需要对动词进行验证,确定当前待判定动词是谓语动词还是名词短语的一部分以及待判定动词是否具有名词性。

3.1.1 可更改动词验证

该验证主要是判定动词是否是名词短语的一部分,具体的验证方式如下。

1) 形式动词判断

形式动词指不具有实在意义而只能用动名词或以动名词为中心语的偏正短语作宾语的动词。因此如果句子中存在形式动词和另一个动词,两个动词都不需要再进行识别。

2) 句宾动词判断

中文中存在一些动词后接完整的句子作为宾语,该类语句理应存在多个动词,因此如果语句中存在句宾动词,则不再对其动词进行识别。例如“墙机/n 业务/n 也/d 受益于/v 环保/j 压力/n 销量/n 快速/d 增长/v”语句中,“受益于”后跟的宾语成分是一个完整语句。

3) 兼语连动判断

兼语句是由兼语短语充当谓语或独立成句的句子。它的谓语是由动宾短语套接主谓短语构成的,动宾短语的宾语兼做主谓短语的主语。而连动句,两个动词短语互不作成分,共同作谓语,但在语义上有目的和方式、原因和结果等关系,位置顺序不能相互颠倒。

因此兼语和连动句理应存在多个动词,如果语句是兼语连动句,则不再识别两类句子中的含动词名词短语。

3.1.2 动词的名词性验证

判断动词是否具有名词性是含动词名词短语识别中很重要的一步,因为所有含动词的名词短语识别工作都要保证动词具有名词性。假设待判定的动词为v。

1) 根据计算所词表判断

计算所词表由中科院计算所设计,该词表包含常见词可能的词性。利用该词表,如果当前v在词表中同时具有名词和动词的词性,则认为v具有名词性。

2) 根据名词语义特性判断

根据名词语义特性判断v是否具有名词特性。

① 统计语料中所有符合“v'+mq+[n|a]+v(结尾)”结构的句子,当超过一定次数,则认为v具有名词性;

② 统计语料中所有符合“在+[a|n]+v+上|方面”结构的句子,当超过一定次数,则认为v具有名词性。

3.2 识别过程

当动词通过验证则使用百度词条进行含动词名词短语的识别,具体过程如下:

① 定义当前待验证的词为W

W=wi…wj,i=1…L;j=i+1…L,

(5)

其中,wi是句子中第i个词,wj是句子中的第j个词,W是从第i个到第j个连续词形成的一个词;L是句子中词的总数。

② 通过百度词典验证合并

如果百度词条中存在W,则W作为可合并候选项;如果W不在百度词条中,则统计以W为结尾或开头的百度词条,当大于阈值,则W作为可合并候选项。

如果W是候选项,继续移位j,形成W’,验证W’,如果W’也成为候选项,则使用最长优先匹配和最多优先匹配的原则,放弃W。

对可合并候选项进行边界验证和NP验证(验证方法参见4.2和4.3),如果通过验证,则合并W’并修改词性为NP。

定义1.最长优先匹配原则。当W1与W2同时满足条件,如果W1包含W2且W1的长度大于W2的长度,则优先选择W1。

定义2.最多优先匹配原则。当W1与W2同时满足条件,如果W1出现次数大于W2,则优先选择W1。

4 基于汉语固定搭配和FSTD语义文法含动词名词短语识别

通过对语料的观察以及总结的名词短语出现特点,发现很多名词短语会出现在特定词语之间,这些特定词语可以认为是名词短语的语义边界。因此语义边界是一种识别名词短语很好的一种方式,这样也同样可以用来识别含动词名词短语,且使用边界会是一种很好的识别方式。

4.1 识别过程

中文语句中,存在很多固定搭配,这些固定搭配可以作为含动词名词短语的自然语义边界,因此可以通过这些固定搭配识别含动词名词短语。表1给出部分固定搭配。

表1 部分固定搭配边界信息

在FSTD中,文法槽定义了适用于某动词的语义文法,而文法中也定义了很多搭配,同样这些搭配可以被用作识别含动词名词短语的边界,该边界称为FSTD边界。表2列出了FSTD文法中的部分含动词名词短语边界实例,表中的非终结符“”都表示一类词语,例如安装中心词类包括装置、安设、安装、装配、安置等词。

表2 部分FSTD边界信息

使用固定搭配边界以及FSTD边界识别含动词名词短语仍需要考虑其名词短语中含有动词的难点,因此识别过程中要进行验证才能保证含动词名词短语识别的准确性。其中验证包括对边界进行边界验证,从而确定边界是否合理,同时还要验证通过边界获取的含动词名词短语是否合理,即名词短语再验证。

4.2 边界验证

验证边界是否合适,主要是验证边界前后两个词的粘着性,如果两个词的粘着性较强,则认为两个词不可被分割,即边界不成立。具体验证方法如下

1) 根据边界结果,分别抽取左右边界的前后两个词,组成两个词对;

2) 通过二元组资源(该资源是从1.5T的已分词语句中得到,该资源统计了所有两个词同时出现的次数),找出上述两个词对的数目;

3) 如果其中一对的数目超过阈值,则放弃根据该边界识别得到的含动词名词短语结果;

4) 如果两个词对都不超过阈值,继续利用统计验证,如果存在一个词对通过验证,则放弃根据该边界识别得到的含动词名词短语结果;

5) 对识别得到的含动词名词短语进行短语再验证,如果无法通过验证,放弃识别结果;

6) 如果除了边界以及边界内的内容,不再存在其他动词,则放弃该识别结果。

4.3 名词短语再验证

当识别出含动词名词短语后,需要再次判断是否可以将含动词名词短语中的动词进行词性修改或该含动词名词短语是否合适。

1) 如果当前含动词名词短语中的动词是形式动词,则放弃该含动词名词短语;

2) 如果当前含动词名词短语中的动词后面跟“着、了、过、完”等词,则该动词为谓语动词,放弃该含动词名词短语;

3) 如果当前含动词名词短语中的动词前接“来、去、到”等词,则放弃该短语;

4) 如果当前含动词名词短语中的动词前有副词修饰,则该动词为谓语动词,放弃该含动词名词短语。

5 实验与分析

5.1 数据集与度量标准

5.1.1 数据集

本文使用的数据皆来源于web,包含了新闻、产品描述以及电影等数据。随机抽取125个包含多个动词的语句进行测试,超过60%的句子的总词数超过10。首先对句子进行分词,而后对句子使用人工手工标注的方式,将词性标注为动词但与前词或后词构成为名词短语的情况定义为含动词名词短语。

因为本文的方法中包括使用神经网络对含动词的命名实体进行识别,因此选择公开的msra数据库进行训练。

5.1.2 度量标准

本文使用基本的度量标准,包括准确率、召回率以及F1值,具体的公式如下所示

(6)

(7)

(8)

其中,VNPcorrect表示识别正确的含动词名词短语,VNPrecognition表示识别出的所有含动词名词短语,VNPactual表示句子中实际包含的含动词名词短语。

5.2 实验结果与分析

5.2.1 实验结果

本文的目标是对含动词的名词短语进行识别,尤其是为了语义解析和知识抽取这一终极目标,需要消除名词短语中的动词对谓语动词的影响。

本文使用基于神经网络的方法,该方法需要使用已标记的训练数据进行训练,目前并没有已标记的中文含动词名词短语数据,因此使用公开的已标记命名实体识别数据识别含动词的命名实体识别。

但即使没有基于神经网络的命名识别,本文的方法依然可以达到一个很好的结果。本文进行两组实验来说明即使没有已标记的先验数据,本文提出的方法依然可以得到一个很好的结果。一组实验包含基于神经网络的含动词命名实体识别,第二组则不包含,最后一组则是单纯使用LSTM+CRF的方法在NER的公开数据上训练。通过实验得到的实验结果如表3所示。在测试的125句中,通过人工标注得到包含动词的名词短语有152个,不添加使用LSTM+CRF进行NER的情况,抽取到136个含动词名词短语,其中正确的是120个,而添加LSTM+CRF进行NER操作增加了2个抽取正确的含动词名词短语,而单纯使用LSTM+CRF的方法,因为更多的是对命名实体的识别,因此结果中只抽取了正确的15个含动词的名词短语。

表3 实验结果

通过实验,可以看出本文提出方法的有效性,而对比实验说明即使没有已标记的训练数据,本文方法也可以达到一个不错的效果,而加入命名实体识别可以帮助提高准确率。图2给出两条通过LSTM+CRF方法进行NER带来帮助的事例,黑色加粗表示因为加入LSTM+CRF而识别正确的名词短语。

Fig.2 An Example of Improving the Accuracy by NER by LSTM+CRF图2 LSTM+CRF进行NER提高精度的事例

5.2.2 实验结果分析

通过实验可以看出,本文提出的方法并不依赖于大量已标记的含动词名词短语数据,只是依靠外部资源以及公开的命名实体数据就可以达到较好的效果。如果有标记的含动词名词短语数据则可以达到更好的结果。当然本文的方法还存在问题,主要的原因有以下几个方面。

1) 分词问题

虽然本文提出的方法已经就此问题进行了处理,但是依然还有未能解决的问题,而这个问题会对含动词名词短语的识别结果带来很大的影响;

2) 中间结果传递错误

本文提出的方法有些使用了中间结果,这些结果并没有做到100%正确,而且同一个结果在不同的语句会存在不同结果的情况,因此错误率也会传递到名词短语识别的结果中。

3) 连续多动词问题

含动词名词短语中,有些短语包含连续多个动词,这种情况的短语识别难度更大,如果该类型短语与谓语动词相连,在判定动词属于名词短语还是谓语动词时会带来更大困难。

6 结论

在使用FSTD进行语义解析和知识抽取之前需要对句子进行含动词名词短语识别。已有的名词短语识别更多着眼于命名实体的识别,而本文的目标是识别含动词名词短语,主要包含了分词和词性标注问题、边界确定、标记数据少等难点。

为了解决以上难题,本文采用神经网络与规则、统计相结合的方法。首先对数据进行包括词性、助词、时间、数量词等内容的纠正或合并;而后使用双向LSTM与条件随机场融合的方法对语句进行含动词命名实体识别;接着使用百度词条、固定搭配、FSTD文法对含动词名词短语进行识别;最后对提出的方法实验并分析。最终实验表明我们的方法具有89%的准确率以及80%的召回率。

猜你喜欢

分词命名短语
命名——助力有机化学的学习
分词在英语教学中的妙用
结巴分词在词云中的应用
结巴分词在词云中的应用
有一种男人以“暖”命名
为一条河命名——在白河源
《健民短语》一则
河鲀命名小考
聚焦现在完成进行时