一种基于词语多原型向量表示的句子相似度计算方法
2018-05-23郭鸿奇李国佳
郭鸿奇 李国佳
摘 要: 针对词语向量化表示的问题,根据词语词向量表示的思想以及借助多义词词典,在K-means聚类多义词语上下文表示的基础上,获得词语的多原型向量表示。对句子中的多义词语,通过计算词语多原型向量表示与词语上下文表示的相似度来进行词义消歧,根据2个句子集中共有词语和差异词语的词义相似度,给出一种基于词语多原型向量表示的句子相似度計算方法,实验结果显示了该方法的有效性。
关键词: 词语多原型向量表示;词义消歧;句子相似度
Abstract:In view of vectorized representation of word according to the idea of Word Embedding as well as the use of external polysemy dictionary on the basis of polysemous words context representation based on K-means clustering algorithm,the paper presents a method for obtaining a word's multi-prototype vector representation. Word sense disambiguation is performed on polysemous words in sentences by calculating the similarity between the word multi-prototype vector representation and the words context representation. According to the semantic similarity of the common words and the difference words in the two sentence sets a sentence similarity computation method based on multi-prototype vector representation is given. The experimental results show the effectiveness of the method.
Key words: multi-prototype vector representation;word sense disambiguation;sentence similarity
引言
词语是语言的基本组成单元,词语的向量表示在自然语言处理任务中有着广泛的应用。词语词向量表示(Word Embedding或Word Representation)是基于大语料库利用词语的上下文为每一个词语构建一个向量表示,通常能够保留词语的语义和句法的信息。这种词向量表示能够作为一个特征或输入用在信息检索、文本分类、自动文本摘要等自然语言处理的研究中。
大多数的词向量表示方法都使用一个向量表示一个词语(单向量表示),单向量表示无法有效地传达多义词语的不同词义。针对这个问题,Reisinger等人于2010年[1]提出了一个多原型向量空间模型,其中每个词语的上下文首先将会聚类为簇,通过对聚类簇内词语所有的上下文向量表示进行平均生成词语不同的原型向量。Huang等人则在2012年[2]遵循这一思想,基于神经网络语言模型,结合词语全局语义信息利用K-means算法聚类每个词语的上下文表示,并在语料库中将每个词语的出现情况标记为其所关联的聚类类别,再训练获得词语的多个词向量表示。Guo等人又在2014年[3]利用双语平行语料库学习生成词语特定语义的词向量表示,基于源语言中具有不同意义的同一词语在外语中应有不同翻译这一原理,通过聚类词语翻译,并映射回原语言语料库中对应的词语,训练获得一个词语的情境语义表示。这些基于聚类的模型通过聚类词语上下文来开展无监督的词义归纳,对原文词语的上下文直接进行聚类或者利用跨语言知识进行语义映射后聚类,再训练获得词语在不同语境中具体词义对应的词向量表示。
同一时期,Chen等人也在2014年[4]提出了联合词义表示和消歧的统一模型,根据WordNet知识库对词语的注释说明生成词语的语义向量,对多义词语进行词义消歧,修改Skip-gram模型训练目标来联合学习词语的词向量和语义向量。继而,Niu等人更在2017年[5]结合知网将词语词义的义原信息融入到词语表示学习模型中,提升了词向量的表示能力。这类方法借助外部知识库(WordNet或HowNet)对词语不同语义的解释或描述,来辨析识别多义词语具体的语义。
为此,本文研究给出了一种基于词语多原型表示的句子相似度计算方法。根据词语词向量表示的思想以及借助多义词词典,基于K-means算法聚类多义词语上下文表示,训练获得词语多原型向量表示。结合词语多原型向量表示与词语上下文表示的相似度来进行语义消歧,获得句子中每个词语特定语义的词向量表示,然后根据2个句子集中的共有词语和差异词语相似度来综合计算句子相似度。
1 词语多原型向量表示
1.1 词语词向量表示
one-hot representation是一种简单的词语词向量表示。这是把每一个词语表示为一个长向量,向量的维度等于词语表的规模,向量只有一个元素的值为1,这个维度代表当前的词语。已有研究指出该方法的缺点是向量维数等于所有词语的数目,存在维数灾难问题,也不能刻画词语和词语之间的语义联系。
词语的词向量表示(word Embedding或word representation)是一种分布式的表示,把每个词语表示为一个固定长度的低维实数向量,通常基于神经网络训练语言模型训练海量文本语料集得到词语词向量表示,特点是能够捕捉词语及其上下文之间的语义关系,相似或者相关的词语在向量空间距离上也将更为接近。一些经典的训练获得词向量的神经网络语言模型有:Bengio 的神经网络语言模型(NNLM)[6]、Collobert等人的SENNA模型(C&W;)[7]、Mnih等人的hierarchical log-bilinear模型(HLBL)[8]、Mikolov 的循环神经网络的语言模型(RNNLM)[9],以及广泛付诸使用的Google公司开发的CBOW 模型和Skip-gram 模型、斯坦福大学的GloVe模型。本文采用Skip-gram模型训练获得词语词向量表示。
1.2 词语多原型向量表示
在语言现象中,同一个词语符号在不同的上下文语境中可以反映不同的语义,每个词语只对应一个词向量不能有效地表示和识别多义词语。词语的不同词义即需对应着不同的词向量表示,词语的多原型向量表示对于多义词语的每个词义都将对应一个词向量,故而能提高词语表示的精確性。
本文根据多原型向量空间模型的思想以及借助外部知识库,基于神经网络语言模型训练获得词语的多原型向量表示,研究过程可分为3个步骤,具体如下:
(1)利用外部知识库(例如《现代汉语多义词词典》、《HowNet》)统计多义词语及获得其词义的个数;
(2)在海量文本语料集中基于K-means算法来聚类多义词语的上下文窗口表示,并将其关联的聚类类别标记为原始文本语料集;
(3)在标记的文本语料集上基于神经网络语言模型训练获得词语的多原型向量表示。
1.3 基于K-means聚类词语上下文表示
《现代汉语多义词词典》共收录了现代汉语多义词8 100条,《HowNet》是一个在应用上较为知名的中文语义资源平台,对多义词语有多个概念及义原关系的描述,每个概念表示一种词义,可以统计获得每个多义词的词义个数。
多义词语的上下文窗口,是指多义词语的上下文中前面和后面k个词语,k为窗口大小。词语的上下文窗口表示由词语上下文中词语的词向量进行平均求得,可得其计算公式为:
在时下的各类文本聚类算法中,K-means算法获得了广泛使用。对文本语料集中的所有多义词语,基于K-means算法对多义词语在原始文本语料集中所有样本的上下文窗口表示进行聚类,得到K个聚类簇。在文本语料集中按照K个类别对多义词语添加标记,不同的聚类类别代表多义词语的不同词义。在标记的文本语料集上基于神经网络语言模型训练词语词向量,得到词语在不同上下文中表达不同词义的多原型向量表示。
假设多义词语Wp的词义个数为K,基于K-means算法聚类词语上下文窗口表示的步骤流程可简述如下:
利用外部知识库统计获得的多义词语的词义个数,可以作为K-means聚类算法K的初始值,聚类结果数值K即为多义词语的词义个数,不需要事先指定聚类数目,符合词语在不同文本上下文中具有多种词义表示的数目不能确定的实际情况。
词语上下文窗口聚类簇中样本的个数可以表示词语一个词义在统计学中出现的次数,能够说明实际中最常使用的是哪个特定的词义。在文本语料集中,按照K个聚类簇中的样本对多义词语进行标记。例如多义词语“算账”一般包含2个词义,对文本语料集中词语“算账”的所有样本的上下文窗口表示设计展开K-means聚类,然后在文本语料集中对词语“算账”根据聚类样本的类别分别标记为“算账1”、“算账2”,最后在标记的文本语料集训练得到“算账1”、“算账2”两个词义的多原型向量表示。
2 词义消歧
[JP4]高质量的词语词义表示(word sense representation,WSR)能捕获丰富的语义和句法信息,有助于实现词义消歧。高质量的词义消歧能提供可靠的消歧语料,可以更好地学习词语词义的表示。对语句中的多义词语,通过词义消歧获得词语在上下文中特定语义,因而能提升句子的表示效率。研究中,词义消歧过程可解析分述为3个步骤,内容如下:
(1)识别句子中多义的词语;
(2)计算多义词语的上下文窗口表示;
(3)获得多义词语在上下文中特定语义的词向量表示。
基于词语的语义由其上下文决定的思想,多义词语在上下文中特定语义,可以通过计算多义词语的上下文窗口表示和多义词语的各个词向量表示间的相似度来获得,将最大相似度值所对应的词向量表示作为多义词语在上下文中特定语义的词向量表示,研究可得计算方法的数学公式为:
3 句子相似度
3.1 词语相似度计算
本文通过2个词语词向量的夹角余弦值来度量词语的相似性,词语相似度的数学公式可表述为:
3.2 句子相似度计算
根据2个句子集中的共有词语和差异词语的词义相似度,给出一种基于词语多原型向量表示的句子相似度计算方法,计算过程主要可研究分解为如下3个步骤:
(1)对句子进行分词预处理得到词语序列;
(2)识别词语序列中的多义词语并获得每个词语特定语义的词向量表示;
(3)由给定的句子相似度计算方法进行相似度度量。
4 实验结果及分析
4.1 实验数据
词语多原型向量表示实验中,原始数据集为Wiki中文语料(20171103,2.7 G)以及搜狗实验室2012年搜狐新闻语料(648 M)。对原始语料实现预处理,将繁体转化为简体,利用自定义词典对文本语料集中的常用英文缩写替换为中文词语,去除非中文字符和数字外的其它字符,清洗后得到约15亿字。采用jieba分词进行分词处理,训练词语词向量的神经网络语言模型采用word2vec的Skip-gram 模型[10],词向量维度设定为150维,其他参数默认设置。多义词词典根据《现代汉语多义词词典》统计获得常用的各多义词及其词义个数。词语的上下文窗口大小为5。
句子相似度计算实验,采用400对句子作为测试集,测试句子集来源于北京大学中国语言学中心CCL语料库。从CCL语料库中分别检索多义词语“压力”和“苹果”,在结果中人工选取包含关键词“压力”和“苹果”句子各200句,句子长度为包含关键词及前后至少10个词语的完整句子。含有词语“压力”的句子集按照词义分为3类,含有词语“苹果”的句子集按照词义分为2类。每个词语的词义类别经过人工聚类,按照相似程度共得到27个小类别。每个小类别中选取任意一个句子作为基准句子,该类别中其它句子,记为N句,和同一词语的句子集合中其它小类别的句子一起作为噪音句。
4.2 实验结果及分析
在实验数据集上基于Skip-Gram模型分别训练获得词语词向量表示和词语多原型向量表示。表1给出一些词语及其具体词义上最相近的词语,最相近词语相似度由公式(3)来指定计算,无标签的词语对应词语词向量的表示,词语特定的词义对应词语多原型向量表示,例如,“苹果2”是词语“苹果”的第二个词义。实验结果显示词语的多原型向量表示能够捕捉词语的语义信息。
从表1中可以观察到词语多原型向量表示的一些区分词义的结果:对于多义词而言,多原型向量表示对应其不同的语义含义。例如,“苹果1”的词向量表示与其作为IT公司相对应,“苹果2”则表示其作为一种水果的意义。
在句子相似度计算实验中,对每个小类别的句子,按照本文相似度计算方法,计算基准句子和各噪音句子的相似度值,同时依据顺序记录相似度值最大的前N个句子,计算召回率R(前N个句子与基准句子属于同一小类的句子个数的平均值)。句子相似度计算方法则需关注本文3.2节公式(4),由此可得基于词语词向量与基于词语多原型向量表示的句子相似度计算结果可见表2。
从表2中可以看出,基于词语多原型向量表示句子相似度计算结果在整体上要优于词语词向量方法的运算求解。由于多原型向量表示在一定程度上区分词语在上下文中不同词义,能够更加集中优质地保留词义信息。根据词语的多原型向量表示对句子中多义词语进行消歧,提高了词语在上下文中词义表示的精确性,句子相似度计算结果也将更加有效。
5 结束语
本文通过探讨词语词向量表示的思想以及借助多义词词典,同时结合K-means聚类算法,并基于Skip-gram模型来研究获得了词语多原型向量表示,其中每个词语的词义对应一个向量表示。对句子中的多义词语进行词义消歧,获得多义词语在上下文中特定语义,最后根据句子集中的共有词语和差异词语的词义相似度,来综合衡量句子相似度。实验结果表明,词语多原型向量表示能够捕捉词语的语义信息,基于词语多原型向量表示在句子相似度计算上性能要优于词语单一的词向量表示。试下,依然存在亟待进一步研究的问题主要有:语料库的规模和领域影响词向量表示的精度,基于词典统计多义词词义的数量未能臻至准确,融合句子其它特征综合计算句子相似度。
参考文献
[1] REISINGER J MOONEY R J. Multi-prototype vector-space models of word meaning[C]// Proceedings of the 11th Annual Conference of the North American Chapter of the Association for Computational Linguistics (NAACL-2010). Los Angeles:ACL 2010:109-117.
[2] HUANG E H SOCHER R MANNING C D et al. Improving word representations via global context and multiple word prototypes[C]//Meeting of the Association for Computational Linguistics. Jeju Island:ACM,2012:873-882.
[3] GUO Jiang CHE Wanxiang WANG Haifeng et al. Learning sense-specific word embeddings by exploiting bilingual resources[C]//Proceedings of COLING. Dublin:ACL,2014:497-507.
[4] CHEN Xinxiong LIU Zhiyuan SUN Maosong. A unified model for word sense representation and disambiguation[C]//Conference on Empirical Methods in Natural Language Processing. Doha:ACL 2014:1025-1035.
[5] NIU Yilin XIE Ruobing LIU Zhiyuan et al. Improved word representation learning with sememes[C]//Meeting of the Association for Computational Linguistics. Vancouver:ACL,2017:2049-2058.
[6] BENGIO Y DUCHARME R VINCENT P et al. A neural probabilistic language model[J]. Journal of Machine Learning Research,2003,3(6) :1137-1155.
[7] COLLOBERT R WESTON J BOTTOU L et al. Natural language processing (almost) from scratch[J]. Journal of Machine Learning Research 2011(12):2493-2537.
[8] MNIH A HINTON G E. A scalable hierarchical distributed language model[C] // Proceedings of NIPS. Vancouver:NIPS,2008:1081-1088.
[9] MIKOLOV T KARAFIT M BURGET L et al. Recurrent neural network based language model[C] // Interspeech 2010. Makuhari:ISCA 2010:1045-1048.
[10]曾琦,周剛,兰明敬,等. 一种多义词词向量计算方法[J]. 小型微型计算机系统,2016,37(7):1417-1421.