背??景介绍从智能客服到机器翻译,从文本摘要生成到用户评论分析,从文本安全风控到产品描述建模,都使用了自然语言技术,作为人工智能的一个重要分支,如何让机器更好地理解人类语言,尤其是像汉字这样的强表意字符,是一个很大的挑战。词嵌入是一种使用无监督学习(无需人工数据标注)将词映射到语义向量空间的技术。例如:以前计算机都是用下标来表示词,比如“猫:2123”,“狗:142”,因为下标不同,机器只会认为是不同的词,而无法感知这个词就像他们之间的人类语义关系。词嵌入技术正好弥补了这一点,让机器能够理解底层的语义信息。事实上,现在很多自然语言处理算法都是以它作为输入,然后建立端到端的算法模型。因此,设计一种高质量的词向量生成算法是一个值得探讨的问题。经过几千年的发展和演变,汉语是一种强烈的表意语言。对我们来说,即使不认识一个词,我们或许能猜出它的意思,但机器很难理解。比如“蘒”这个词,我们可能不认识,但是里面有一个“艹”字头,在“和”的木旁边,那么它可能是某种植物,看起来像低等单词的右上角。我们希望通过词向量的方式,让机器能够理解汉字笔画与笔画之间的奥秘。然而,传统算法无法很好地利用汉语语言学的特点。在这篇文章中,我们将提出一种利用笔划信息来改进中文词向量的方法。词嵌入算法是自然语言处理领域的一种基本算法,在序列标注、问答系统、机器翻译等诸多任务中发挥了重要作用。词向量算法最早由谷歌于2013年提出,word2vec,在接下来的几年里,经历了不断的改进,但大多只适用于由拉丁字符组成的词(比如英文),结合词向量研究的中文语言特点比较小。相关工作:早在1954年,语言学家哈里斯就提出了“分布假设[1](distributedhypothesis)”:具有相似语义的词往往会出现在相似的语境中。这个假设为后来的各种词向量奠定了语言学基础,即用数学模型来描述词与其上下文之间的语义相似度。Bengio等人,2003年[2]提出NNLM(基于神经网络的语言模型),由于每次softmax的计算量较大(分母项的计算时间复杂度为O(|V|),V为全词表),许多快速逼近的计算策略相继出现。为了解决上述问题,Google提出了word2vec[3,4]算法,它包含两种策略,一种叫做负采样(negativesampling),另一种是分层softmax(hierarchicalsoftmax)。NegativeSampling的核心思想:每次softmax把所有的词都计算的太慢,然后随机选几个来计算。当然,训练语料中出现的词越多,就越容易被选中;而HierarchicalSoftmax,简单来说就是搭建一个树状结构,每次从根到叶节点从上到下计算,那么只有对数时间复杂度!如何建造这棵树,使树的高度尽可能小?霍夫曼树。词向量模型的核心是构建词与其上下文的相似度函数。word2vec工具包中有两种实现方式,分别是skipgram和cbow。图1SGNS算法示意图假设当前词w为“cat”,上下文词c为“sat”,算法的目标是给出w***c的出现概率(skipgram)。该算法将每个词视为一个整体,利用外部上下文结构信息来学习词向量。那么是否可以将词内部结构的(子词)信息充分结合起来,拆分成更细粒度的结构来增强词向量呢?英语中的每个单词都包含很多字符(字母),每个字母没有实际的语义表达能力。对于中文单词,中文单词可以拆解成字符(Chinesecharacters)。Chenetal.,2015[5]提出了CWE模型。思路是将一个汉字拆分成若干个汉字,然后将原字的向量表示和每个汉字的向量表示进行平均,然后作为新的词向量。图2CWE模型示例在该算法中,“智能”是一个上下文词,首先将其分解为两个汉字“知”和“能”,然后计算出新的词向量表示;同样,上下文词“come”也被重新计算。CWE不拆分当前单词,这里的“时代”保持不变。不难想到,将汉字拆成部首或许是个好办法。Sunetal.,2014[6]和Lietal.,2015[7]进行了相关研究。然而,部首只是汉字的一部分。Yuetal.,2017[8]提出了更详细的拆分。根据人工归纳的“字”,将汉字一一划分成小模块,将词、汉字、字符与软件联合学习:图3JWE算法示意图其中w、c、s代表词,中文字符和字符模块分别。通过仅利用部首信息的方法也实现了字符粒度拆分。另外,SuandLee,2017[9]提出了GWE模型,尝试使用卷积自编码器从汉字图片中提取特征:图4GWE卷积神经网络提取特征示意图从汉字图片中提取特征后,再进行学习具有上下文结构信息的中文词向量。遗憾的是,根据原文中的描述,这样得到的特性基本没有提升,但这确实是一个很有趣的尝试。问题与挑战:自然语言处理顶级会议ACL2017提出了未来四个研究方向。如何更好地利用“分词”信息就是其中之一。在中文词向量场景下,只有将中文词拆解成汉字粒度,才会在一定程度上提高中文词向量的质量。是否存在汉字粒度仍然无法描述的情况?图5拆解汉字粒度。可以看出“wood”和“forest”是两个语义相关的词,但是当我们拆解到汉字的粒度时,“wood”和“wood”“森”和“cai”这两个词的对比是不一样(一般用一个下标来存储一个词或者汉字),所以对于这个例子,汉字的粒度是不够的。我们希望得到的是:图6中更细粒度的subword信息可以分别拆解出“wood”和“wood”的结构(从“wood”的左半部分开始),拆解出“Sen”和“Lin”获得多个“木头”的相同结构。此外,汉字还可以进一步拆解成部首和字,对于上面的例子可以有效提取语义结构信息,但是我们还分析了:图7部首和字结构拆分的例子表明,“志”的部首”正好是“日”,而“日”不能表达“智慧”的语义信息。事实上,部首是为了方便查字典而设计的,所以结构简单、出现频率高成为首要原则,未必能准确表达汉字的语义信息。另外,将“之”拆分成字粒度,会得到“丢”、“口”、“日”三个字。遗憾的是,这三个字都不能表达汉字的语义。我们需要设计一种新的方法来重新定义词(或汉字)的语义结构:图8更细粒度的子词信息拆解示例这里,“知识”可以表达“智慧”模块的语义,如何获得这样的分词结构,并结合句子上下文设计模型的优化目标,生成更好的中文词向量,将是后面要探索的内容。cw2vec模型:单个英文字符(character)不具有语义,而汉字往往具有很强的语义信息。不同于以往的工作,我们提出了“n元笔画”的概念。所谓“n元笔画”,是指汉字(或汉字)的连续n笔画所构成的语义结构。图9.n-gram生成示例。如上图所示,n-gram的生成有四个步骤。比如“大人”这个词,可以拆解成“大”和“人”两个汉字,然后把这两个汉字分成笔画,然后把笔画映射成数字,再用滑动窗口生成n个元素笔画。其中,n为一个范围。在上面的例子中,我们设置n为3、4和5。在论文中,我们提出了一种新型的基于n元笔画的损失函数:图10算法过程的一个例子如上图所示如图所示,对于“治理雾霾迫在眉睫”这句话,假设此时的当前词恰好是“雾霾”,上下文词是“治理”和“紧急”。首先,我们将当前单词“haze”拆解成n元笔画映射成数字编码,然后画窗得到所有n元笔画,根据下式计算每个n元笔画与上下文词的相似度我们设计的损失函数,然后根据损失函数计算梯度,更新上下文词向量和n元笔划向量。为了验证我们提出的cw2vec算法的效果,我们在公开数据集上与几种业界领先的词向量算法进行了对比:图11实验结果上图包含了谷歌在2013年提出的word2vec[2,3]的skipgram和cbow两个模型,2014年斯坦福提出的GloVe算法[10],2015年清华大学提出的基于汉字的CWE模型[5],以及基于像素和字符的中文词向量算法[8],9],可以看出cw2vec在词相似度、词类比以及文本分类和命名实体识别任务上取得了一致的提升。同时,我们也展示了不同词向量维度下的实验结果:图12不同词向量维度下的实验结果上图是不同维度下词类比测试集上的实验结果,左边是3cosadd,和右边是3cosmul测试方法。可以看出,我们的算法在不同维度的设置下都取得了很好的效果。此外,我们还在小规模语料上进行了测试:图13小训练数据下的实验结果上图是仅选取20%的中文维基百科训练语料在词相似度下的测试结果。其中skipgram、cbow和GloVe算法由于没有使用中文特征信息进行增强,所以在小语料上表现较差,而其他四种算法都取得了不错的效果,我们的算法在两个数据集上都取得了最好的效果.图14案例分析结果为了更好地探究不同算法的实际效果,我们特地选取了两个词进行案例分析。第一个是与环境相关的“水污染”,然后根据词向量使用向量角余弦找到与其语义最接近的词。GWE发现了一些与“脏”相关的词,如“污泥”、“污点”和“污垢”,而JWE更强调后两个词“污染”GloVe发现了一些奇怪的相似词,如“循环”系统”、“神经系统”。CWE发现的相似词都包含“水”和“脏”的词。我们猜测是因为它利用汉字信息直接增强了词向量。此外,只有cw2vec找到了相关词“waterquality”,我们认为这是n元笔画和上下文信息对词向量的综合作用的结果。在第二个例子中,我们特地选择了“孙悟空”这个词。这个角色出现在中国著名小说《西游记》和日本著名动画《七龙珠》中。所有cw2vec查找到的都是相关的字符或书名。cw2vec作为基础研究成果,也已经在阿里的多个场景实现。已在智能客服、文字风控、推荐等实际场景中发挥作用。此外,不仅是中文词向量,其他语言如日文、韩文,我们也做了类似的尝试,申请了近20项相关发明专利。我们希望在基础研究上赶上学术界,有所建树。更重要的是,在具体的实际场景中,我们可以真正将人工智能技术赋能到产品中,为用户提供更好的服务。论文下载https://github.com/ShelsonCao/cw2vec/blob/master/cw2vec.pdf参考资料1.Harris,ZelligS.“分配结构”。字1954.2。Bengio、Yoshua等人。“神经概率语言模型。”JMLR2003.3。米科洛夫、托马斯等人。“向量空间中单词表示的有效估计。”arXiv预印本arXiv:1301.3781(2013).4。米科洛夫、托马斯等人。“单词和短语的分布式表示及其组合性。”NIPS2013.5。陈新雄等。“字符和词嵌入的联合学习。”IJCAI2015.6.孙亚明等。“部首增强型汉字嵌入。”中国知识产权网2014.7.李艳然等。“组件增强的汉字嵌入。”arXiv预印本arXiv:1508.06669(2015).8。于,金星,等。“中文单词、字符和细粒度子字符组件的联合嵌入”。自然语言处理2017.9.Su、Tzu-??Ray和Hung-Yi李。“从字符的字形中学习中文单词表示。”EMNLP2017.10.彭宁顿、杰弗里等人。“手套:用于单词表示的全局向量。”EMNLP2014.【本文为《阿里巴巴官方技术》专栏作者原创稿件,转载请联系原作者】点此阅读作者更多好文
