卢美华 王巧玲
摘 要 本文首先简要介绍了基于人工智能和大数据的“深度学习”,重点论述了Word2Vec算法及其在自然语言处理的应用。运用现有“深度学习”工具计算词和句子的语义相似度,以及一些现实应用。
关键词 人工智能 深度学习 Word2Vec 语义相似度
人工智能是计算机科学或智能科学的一个分支,涉及研究、设计及应用智能机器,中国2017年3月已将人工智能纳入国家战略。
其诞生于上个世纪30年代,经历了不同的发展阶段,致力于研究开发用于模拟、延伸和扩展人类智能的理论、技术及应用系统,希望探究人类收集信息、反应决策和实施行为的本质,并生产出与人类处理问题相似的智能机器。
人工智能经历了如下个历史阶段:(1)孕育奠基期(20世纪30年代到1956年);(2)形成发展期(1956年到20世纪60年代末);(3)低谷瓶颈期(20世纪70年代到80年代初期);(4)专家系统推广阶段(20世纪80年代至90年代);(5)深度学习引领发展阶段(21世纪至今)。随着互联网的全球覆盖为其提供海量的数据基础,算法的进步使得机器的深度学习成为可能,硬件制造水平的提高提升了计算机的数据处理能力,大数据和实时决策时代的到来,让人工智能在各领域的研究成果层出不穷。为了充分利用大数据,数据挖掘、神经网络等各种学科应运而生。把神经网络运用到NLP(自然语言处理)产生了深度学习算法。计算语义相似度是深度学习算法在自然语言处理中的一个非常重要的应用。
1语义距离相似度
刘群、李素建以基于实例的机器翻译为背景,认为语义相似度就是两个词语在不同的上下文中可以互相替换使用而不改变文本的句法语义结构的程度。两个词语,如果在不同的上下文中可以互相替换且不改变文本的句法语义结构的可能性越大,二者的相似度就越高,否则相似度就越低。
词语的语义相似度计算主要有两种方法 :一类是通过语义词典,把有关词语的概念组织在一个树形的结构中来计算;另一类主要是通过词语上下文的信息,运用统计的方法进行求解。
2词语语义相似度的计算方法
词语距离有两类常见的计算方法,一种是根据某种世界知识或分类体系来计算,一种利用大规模的语料库进行统计。
2.1根据分类体系计算词语语义距离的方法
该方法又称基于树的语义相似度研究方法,基于树的语义相似度计算的算法大体上分为两种:一是基于距离的语义相似性测度;二是基于信息内容的语义相似性测度。英语语义分析网上资源有WordNet、FrameNet和VerbNet,中文的语义词典有《同义词林》。语义词典都是将所有的词组织在一棵或几棵树状的层次结构中。在一棵树状图中,任何两个结点之间有且只有一条路径。于是,这条路径的长度就可以作为这两个词语概念间语义距离的一种度量;而且随着概念所处结点越深,其所包含的语义信息越丰富,越能准确地决定概念的性质,它们对语义相似度起着决定作用。
通过查阅Wordne,boy和girl之间的最短路径是boy—male—person—female—girl,最小路径长度为4。而instructor和boy之间的最小路径是instructor—educator—professional person—adult—person—boy,最小路径长度为6。因此,girl比teacher在语义上更接近于boy。该测度算法在基于Wordnet的语义网中获得了较好的计算结果。
2.2利用大规模的语料库进行统计
语料库语言学是近年来国内外语言学及外语教学界讨论最多的热门课题之一。
基于语料库的词语相似度研究大都采用了上下文语境的统计描述方法,即认同这样一个论断:同义词、近义词的上下文也相同,上下文可以为词语定义提供足够信息。Word2Vec即是在实际的大规模语料中以该词在上下文中出现的频率来度量,于是对于每一个词都可以得到一个相关性的特征词向量,然后利用这些向量之间的相似度作为这两个词的相似度。
2.3两类主要语义相似度计算方法的比較分为客观计算和经验法两种
客观计算的前提条件是:两个词汇具有一定的语义相关性,当且仅当它们在概念的结构中有且仅有一条路径;而经验法的前提条件是:词语的上下文可以为词语定义提供足够信息,两个词语语义相似当且仅当它们处于相似的上下文环境中。所用的工具不同,前者用语义词典,后者用大规模语料库。前者的理论依据是树图和图论,后者是向量空间。优点比较:前者直观而且简单有效,可以字面上不相似的词汇间的相似度;后者能够客观地反映词语的形态、句法、语义等特点。缺点也是明显的:前者受人的主观影响比较大,有时不能反映客观现实性能;后者依赖于语料库的优劣,存在数据稀疏的问题,也有噪声干扰。
2.4词向量
Word2Vec也叫word embeddings,中文名“词向量”,作用就是将自然语言中的字词转为计算机可以理解的稠密向量(Dense Vector)。在Word2Vec出现之前,自然语言处理经常把字词转为离散的单独的符号,也就是One-Hot Encoder。
例:杭州 [,0,0,0,0,1,0,……,0] 上海 [0,1,0,0,0,0,……,0]
宁波 [1,0,0,0,0,0,……,0] 北京 [0,0,0,0,0,0,……,1]
比如上面的这个例子,在语料库中,杭州、上海、宁波、北京各对应一个向量,向量中只有一个值为1,其余都为0。但是使用One-Hot Encoder有以下问题。一方面,城市编码是随机的,向量之间相互独立,看不出城市之间可能存在的关联关系。其次,向量维度的大小取决于语料库中字词的多少。如果将世界所有城市名称对应的向量合为一个矩阵的话,那这个矩阵过于稀疏,并且会造成维度灾难。
使用Vector Representations可以有效解决这个问题。Word2Vec可以将One-Hot Encoder转化为低维度的连续值,也就是稠密向量,并且其中意思相近的词将被映射到向量空间中相近的位置。
如果将embed后的城市向量通过PCA降维后可视化展示出来,那就是这个样子。
我们可以发现,华盛顿和纽约聚集在一起,北京上海聚集在一起,且北京到上海的距离与华盛顿到纽约的距离相近。也就是说模型学习到了城市的地理位置,也学习到了城市地位的关系。
Word2Vec主要分为CBOW(Continuous Bag of Words)和Skip-Gram两种模式。CBOW是从原始语句推测目标字词;而Skip-Gram正好相反,是从目标字词推测出原始语句。CBOW对小型数据库比较合适,而Skip-Gram在大型语料中表现更好。
对同样一个句子:Hangzhou is a nice city。我们要构造一个语境与目标词汇的映射关系,其实就是input与label的关系。
这里假设滑窗尺寸为1,CBOW可以制造的映射关系为:[Hangzhou,a]—>is,[is,nice]—>a,[a,city]—>nice;Skip-Gram可以制造的映射关系为(is,Hangzhou),(is,a),(a,is), (a,nice),(nice,a),(nice,city)。
你可能会注意到,这个训练过程的参数规模非常巨大。假设语料库中有30000个不同的单词,hidden layer取128,Word2Vec两个权值矩阵维度都是[30000,128],在使用SGD对庞大的神经网络进行学习时,将是十分缓慢的。而且,你需要大量的训练数据来调整许多权重,避免过度拟合。数以百万计的重量数十亿倍的训练样本意味着训练这个模型将是一个野兽。一般来说,可以通过Hierarchical Softmax、Negative Sampling等方式来解决。
2.5 Word2Vec的应用举例
腾讯词向量是现成的Word2Vec深度学习工具。以下是利用腾讯词向量,制作的单词游戏:
(1)词类比(Word Analogy):
机场-飞机+火车=高铁站Windows-microsoft+google=android 老婆-老公+丈夫=妻子
(2)两个词的加减:
中国+力量=中国强大 AI+NLP=机器学习CEO+微软=纳德拉
(3)中文和“自然语言处理”语义相似的短语有:自然语言理解,计算机视觉,深度学习,机器学习,图像识别,语义理解,自然语言识别,知识图谱,自然语言,自然语音处理。
(4)中文和“NLP”语义相似的短语有:神经语言,机器学习理论,时间线疗法,神经科学,统计学习,统计机器学习,nlp应用,知识表示,强化学习,机器学习研究。
3句子语义相似度的计算
如何定义句子的similarity其实是比较困难的,往往和具体应用也比较相关,到底需求是topic上的相关,还是说semantic上的相关,例如:
I like this laptop.
I do not like this laptop.
A man is playing a harp.
A man is playing a keyboard.
通过判断,两句话之间“非常不相似”,尽管它们的句法结构相同,并且其中的词嵌入也类似。
如果用不同的similarity定义方法,得出的结果也是不同的。这个和paraphrase的研究其实也有些关系,现在大多数工作感觉都是从similarity的角度去做,但其实按照严格定义应该是看双向的entailment。
我们首先对句子进行分词,然后对分好的每一个词获取其对应的 Vector,然后将所有 Vector 相加并求平均,这样就可得到 Sentence Vector 了,然后再计算其夹角余弦值即可。
示例如下:
句子: '你在干嘛' 与 '你正做什么'的相似度计算结果如下:0.6701133967824016
如下句子“你在干什么”,“你在干啥子”,“你在做什么”,“你好啊”,“我喜歡吃香蕉”与句子“你在干啥”的相似度结果分别是:你在干什么 0.8785495016487204 你在干啥子 0.9789649689827049 你在做什么 0.8781992402695274 你好啊 0.5174225914249863 我喜欢吃香蕉 0.582990841450621。
可以看到相近的语句相似度都能到 0.8 以上,而不同的句子相似度都不足 0.6,这个区分度就非常大了,可以说有了 Word2Vec 我们可以结合一些语义信息来进行一些判断,效果明显也好很多。所以总体来说,Word2Vec 计算的方式是非常好的。
4总结
自然语言处理(NLP)还是一个不断发展的学科,深度学习正在发挥越来越大的作用,取得了长足的进步,AlphaGo战胜世界围棋冠军即是例证。但是,人工智能的缺陷在于缺乏抽象思维能力和综合认知能力。它们缺少常识,缺少对这个世界真正的认知,它们没有固定的世界模型,也就没有办法把语言和一个世界模型相对照,而这个常识系统我们人类是最强大的。人工智能不能真正理解很多语境。深度学习很难理解篇章。随着计算机技术、人工智能的逐步发展,特别是机器学习、深度学习的进步,人类解放大脑的时候为期不远。计算机在语言教学和语言研究发面将发挥越来越大的作用。
参考文献
[1] 卢美华,王巧玲.基于英汉平行语料库语义分析的翻译教学系统设计与应用[J].教师,2015(08):36.
[2] 卢美华.《实用英语语料库》的建立与英语教学[J].北京农业职业学院学报,2007(01):72-73.
[3] 卢美华,王巧玲.网络环境下英语听力、口语知识建构[J].外语教学,2011(32):168-169.