01 语言结构是自然语言的固有属性
自然语言是非线性的,有其内在结构的。如中文是“SVO”型语言,可以形成“主语+谓语+宾语”的句子结构,可以有多种短语结构,如:
“花猫逮住了一只耗子” (主谓结构)
“他吃得越来越胖” (述补结构)
不同的句式结构:
“把衣服都洗干净了”(“把”字句)
“把小偷打了一顿” (“把”字句)
“我请他作报告” (兼语句)
“先别告诉他比较好” (形容词谓语句)
不同的句间结构:
“营业员手一扳,转过柜台,竹壳热水瓶摆到绍兴酒坛旁边,漏斗插进瓶口” (流水句,一个小句接一个小句,每个句子都是独立的,共享一个主语。)
嵌套的语言结构。如下例是形容词谓语句,主语是动宾结构。
“先别告诉他比较好” (形容词谓语句)
不同语言间语言结构也有较大差异。如中文经常使用多个小句串在一起构成复杂句,而同样的表达,英文中可以对应为介词短语结构,也可对应为“to +动词“结构。
“经济增长连续四年达到或略高于10%,没有出现明显通货膨胀。 ”
“For four years in a row, economic growth has reached or slightly exceeded 10% without significant inflation. ”
“抓紧制定并实施国家知识产权战略,切实加强知识产权保护。”
“We will move quickly to formulate and implement a national strategy for intellectual property rights to strengthen protection for them.”
不同语言间结构的差异,对机器翻译技术有较大影响。
02 深度学习技术对语言结构处理的局限性
对语言结构的重视程度,在NLP各个发展阶段不尽相同。在“理性主义”盛行的时代(1960-1980年左右),语言结构作为研究核心,研究和讨论的最多,在形式语言理论框架下建立不同的形式化模型,如转换生成语法、词汇功能语法、广义短语结构语法、中心词驱动的短语结构语法、依存语法、范畴语法、组合范畴语法等。在“经验主义”统计机器学习的时代(1990-2010年左右),研究重点是语言结构的概率化,出现了基于统计的形式化机制,如HMM(隐马尔科夫模型)、PCFG(概率上下文无关语法)等。当前,基于联结的“经验主义”研究,如 CNN(卷积神经网络)、RNN(循环神经网络)、LSTM(长短时记忆模型)、BERT模型等,则较少涉及语言结构,更多的是神经网络的层级和参数量。记得在读研的时候(1995年左右),NLP研究生都要求选修语言学课程,大家讨论的多是“这个动词短语怎么处理”、“这个结构中文和英文有什么差异”。而现在没人讨论语言结构了,讨论的是“模型有几亿个参数,训练了几百层,涵盖了多少种语言”,希望一个模型搞定所有结构,所有语种。
毫无疑问,深度学习已成为NLP技术的重要技术。深度学习对语言的处理,基本是在向量化的基础上,将语言串转换为线性化的sequence,然后利用相似度等计算,求解sequence的最优解。向量化使用的语言特征,是简单的浅层特征,如词频、TF/IDF权值、位置等,在Attention、LSTM等算法模型中,用到了距离、分层等特征。但就总体而言,深度学习尚无法有效地表示和处理复杂的语言结构,如述补结构、兼语句等。
甚至在学术界,如何对待语言结构,目前尚没有达成共识。深度学习大牛Yan LeCun将“结构”称为“必要的恶”,主张使用简单而强大的神经架构执行复杂任务,不需大量针对特定任务的特征工程。而斯坦福教授Chris Manning则将“结构”(structure)称为“必要的善”,积极推动将更多的语言结构融入深度学习。蒙特利尔大学教授Yoshua Bengio认为目前NLP面临最大的问题是“基础语言学习,即共同学习世界模型以及如何用自然语言处理中引用模型”,“在深度学习框架内融合语言理解和推理”。
03 泰岳语义工厂的语言结构处理能力
神州泰岳人工智能研究院,与国内著名高校北京师范大学合作,将符号化语义表示与深度学习技术进行结合,形成了自主知识产权的智慧语义认知技术。智慧语义认知技术,能有效地识别多种语言结构,实现同一意思、不同结构的归一化处理;同时对语言结构的递归嵌套处理,也表现优异。
1 语言结构的识别
中文的“把字句”、“被字句”等句式结构,本质上是“把、被”这样的介词(或功能词)对句子中词语顺序的一种改变。如“他打碎了花瓶”,我们可以说成“我把花瓶打碎了”,或“花瓶被我打碎了”,而句子的意思基本保持不变。由于“把、被”这样的功能词使用的灵活性,一个句子中经常会有多个功能词出现,对NLP的处理造成了极大的混淆。对带功能词的语言结构的识别能力,是NLP的基本能力。
智慧语义认知技术可以有效地处理带功能词的语言结构,目前我们已经可以有效识别包含5个以上功能词的复杂句子。如下面的句子,其中包含有“由、把、在、中、上”5个功能词,我们可以识别出如图所示结构,图1表示出了每个功能词的层级关系和对句子结构的影响。
“一种由特殊紫外线激活的粘合剂把传感器壳体固定在中支架上。”
图1 一个典型的“把字句”的语言结构识别结果
2 语言结构的归一化
自然语言中,经常选择不同的词语或使用不同的词语顺序,来表达同样的语义。如下面一组句子,词语的选择和顺序上有较大不同,但表达的是同样的意思。对这样的一组句子,我们希望NLP能识别出同一个语言结构,这称之为语言结构的归一化。
“泰国队大败中国队”
“中国队大败于泰国队”
“泰国队大胜中国队”
“中国队惜败泰国队”
“中国队惜败于泰国队”
“中国队被泰国队干掉了”
“泰国队把中国队干掉了”
智慧语义认知技术,对这组不同的句子,不管其选择的词汇是“大败”,还是“大胜”,也不管句子中是否使用了“把、被”这样的功能词,都可以给实体“泰国队”输出语义角色标注“RB1”,给实体“中国队”输出语义角色标注“RB2”,如图2所示。
图2 一组典型句子的语言结构归一化
3 语言结构的递归处理
语言结构是可以递归嵌套的,在不同的语言中,嵌套的手段各不相同。在英文中,是用“which、that、where”等从句来引出嵌套。但在中文,却没有这样明显的标记,处理起来也更为困难。
“可根据由偏航角速度传感器15 输出的信号测得的偏航角对各个被监测对象的实际空间位置(X(k)、Y(k)、Z(k))的偏航角进行修正。”
例子中,包含3层语言结构嵌套关系
第一层:
可...对各个被监测对象...的偏航角进行修正
第二层: 在“对”前的“根据...”这个条件语块中
由...信号测得的偏航角
第三层: 在“由...信号”这个语块中
偏航角速度传感器15 输出的信号
这种复杂的语言结构嵌套,在书面语中很普遍,特别是在有专业背景的业务场景中,如公安、司法、专利、医疗等场景。
智慧语义认知技术,对这种具有复杂结构的句子,除了利用词语组合、概率统计等表层特征和方法,还加入了远距离的语义约束计算,以及句子序列的切分和层级处理。目前我们已经可以识别出3层以上语言结构的递归嵌套。这一点目前只有智慧语义认知技术能做到。相对来说,目前的深度学习技术,把句子当做一个序列来处理,基本不涉及序列的递归处理,因此,对语言结构的递归处理能力较弱。
04 语言结构的处理是NLP的核心能力
语言结构的处理,是对语言固有属性的认识与挖掘,也理应是NLP的核心能力。对语言结构的有效处理,不仅可以提升NLP在归一化、递归处理等方面的能力,而且可以把包含在复杂语言现象下的语言特征,像剥洋葱一样,一层层打开,这将大大增强NLP的可解释性。
复杂语言结构的处理能力,作为智慧语义认知技术的核心能力,已经成功应用到了公安、金融、司法等多个实际场景中,其处理结果的可解释性,得到了业务用户的普遍认可。智慧语义认知技术在NLP的可解释性上已经有了很好的基础,日前推出的泰岳语义工厂SAAS服务平台,将把这种核心处理能力,与我们在16个行业领域积累的算法、模型开放出来,赋能更多的行业合作伙伴。
作者:晋耀红博士,神州泰岳首席科学家,人工智能研究院院长,北京师范大学教授,博士生导师。