基于组合距离的语义相似度计算方法与流程

文档序号:20841000发布日期:2020-05-22 17:30阅读:297来源:国知局
基于组合距离的语义相似度计算方法与流程

本发明涉及于组合距离的语义相似度计算技术领域,具体为一种基于组合距离的语义相似度计算方法。



背景技术:

自然语言处理(nlp),是指用计算机技术对人类自然语言形式的形、音、义等信息进行自动化处理加工的过程。自然语言处理技术就是对字、词、句、篇章等形式输入信息,进行识别、分析、理解、转换、生成等的操作和加工的计算机领域的科学技术。自然语言处理与图像识别、语音识别并列为当前人工智能领域三大最热门技术,是人工智能研究的重要组成部分。

自然语言处理所涉及的研究领域包括:机器翻译、文本摘要、文本分类、文本校对、语义分析、信息抽取、信息检索、文本翻译、语音合成和语音识别等。语义分析(semanticanalysis)是指运用各种机器学习方法,学习与理解一段文本所表示的语义内容。一段文本通常由词、句子、篇章构成,根据理解对象的语言单位不同,语义分析又可以进一步分成:词汇级语义分析,句子级语义分析和篇章级语义分析。一般来说:词汇级语义分析以单词或词组为单位,它关注的是如何获取和区别单词或词组之间的语义,句子级语义分析则以句子为单位,试图分析和理解整个句子所表达的含义,而篇章语义分析则面向段落甚至整篇文本,旨在通过分析自然语言内在结构,来实现对文本单元间内在结构的理解。词汇级的语义分析主要包含两个方面的内容:

1)语义消歧:研究的是如何根据上下文环境来准确判断单词或词组的含义。这是由于在自然语言中,一词多义的现象非常普遍,例如:(1)她的脸红得像苹果。(2)最近几个月苹果营收出现下滑。在第1个句子中“苹果”是指水果,而第2个句子里“苹果”这是指美国一家科技公司。

2)相似度计算:研究的是如何表示并学习一个词的语义,以及采取什么算法来有效判断识别两个词语之间的语义相似度的问题。

本发明聚焦于语义分析中的词汇级别的语义相似度计算这方面,研究如何表示一个词或词组的语义,以及如何计算两个词语(或词组)之间的语义相似度这个核心问题。

语义相似度是用来刻画两个词语之间语义相似程度的一个指标,取值范围一般设定为[0,1],0表示语义完全没有关系,1表示语义完全相同。

词语的语义表示方法大体上来说主要有两大类:

基于世界知识(ontology)或分类体系(taxonomy)的表示方法:

这种表示方法是将某个词的词义表示为该词在语义词典(语义词典是将所有的词组织在一棵或几颗树状的层次结构中)中出现的位置到该网络根节点之间的路径信息。

著名的:同义词林、worldnet,hownet基本上都是采用这种词语义表示方式。

基于大规模语料的机器学习表示方法:

就是将文档中的每个词看作一个n维的特征向量,通过特征向量之间的相似度计算(通常采用余弦距离),来度量词语之间的语义相似性。根据词特征向量的表示方法不同,可分为:one-hot语义表示和词嵌入语义表示。one-hot就是把所有词表示为长度为字典长度的n维(例如:1万维)向量,在这个n维向量中,除了某一维度为1外,其余所有维度均为0;词嵌入表示,就是用一个维数远小于n的m维(比如:128维)来向量来表示某个单词。

采用词嵌入(wordemmbedding)的词语语义表示方法是目前语义表示的主流方法,本发明中也采用这种特征表示方式。

对于基于词嵌入方法的语义相似度计算来说,其基本原理是:通过机器学习训练将某种语言中的每一个词映射成一个固定维数的向量,将所有这些向量放在一起则形成了一个词向量空间,而每一词向量则可视为该空间中的一个点,在这个空间上引入“距离”,则可以根据词之间的距离来判断它们之间的(词法、语义上的)相似性。

语义相似度计算的业务应用场景主要可分为以下几类:

(1)信息检索方面:通过语义相似度计算对用户输入信息进行概念对齐和标准化处理,以支持提高信息检索命中率。

例如:在用户使用搜索引擎的过程中,由于地区文化、认识水平等差异,当用户所输入的查询关键字很多时候和与候选资料中的描述不一致时,为了提高信息检索的命中率,搜索引擎需要采用语义相似度计算对用户的输入做同义词识别、纠错、归一化等操作。

(2)关键信息抽取方面:当采用信息抽取技术从文本中抽取关键信息时(例如:时间、地点、人员、组织名称、专有名词等类别信息),采用语义相似度计算可以有效合并重复冗余信息,实现概念对齐和归一化处理。

例如:在从证券新闻文本中抽取概念主题时,某一新闻中谈及的“光伏发电”通过同义词计算被映射为“太阳能”这一标准主题名称,从而提高了概念识别的查全率。

知识对齐方面:在依靠大规模互联网数据构建知识图谱系统过程中,语义相似度计算的功能也不可或缺,采用语义相似度计算方法,能方便地实现将异构多源的源数据统一到相同的概念、实体名称下。

但是市场上的组合距离的语义相似度计算方法存在以下不足:

1、构建层次知识体系的工作量非常大:层次知识体系的构建难度主要体现在结构复杂、专业性要求强,所有工作本上采用手工方式来完成,难以实现自动化。我们从知网语义结构表示可以看到,对知网来说需要设计10个属性大类,1500多个基本义原,8种复杂的位置关系还有若干知识描述语言符号才能完成一个复杂的知识体系层次系统的构建,因此没有非常专业的知识和能力很难构建或扩展这样的知识体系,而且中文中涉及的概念名称非常多,耗费大量的人力、时间所能覆盖的范围也是非常有限,这个问题对于同样属于知识分类体系的其他表示方法例如:同义词词林、wordnet也同样存在。

2、适用性和灵活性不高,难以快速应用于不同的专业领域:技术一中基于知网的语义相似度计算仅适用于知网层次知识体系所能覆盖范围内的部分常识性概念间的语义比较,无法快速扩展到要求更加专业的知识领域(例如:金融证券领域),即使掌握了扩展知网知识层次结构的技术能力,做到穷尽覆盖专业领域内的概念名称也人们不得不面临的巨大的难题和挑战。

3、同义词相似度计算公式中存在太多的人为设定因素,通用性不强。例如公式中的各类调节参数均是人为主观设定,后续能否适用于不同实际场景难以保证。

4、技术实现方案中有关“语义相似的词汇在二名词短语中有相似的搭配词”这个前提假设条件太强,往往与实际情况不符,例如:长江和金沙江是同义词,但金沙江这种特殊称谓很少出现在与长江搭配的二词中,例如:长江三角洲,长江经济带,长江黄河,长江三峡等。因此采用这个假设条件来计算相似度值与实际情况之间可能会存在较大偏差风险。

5、计算量非常大,计算复杂度高,算法执行效率低:技术二中需要针对每个词来计算本词与其它词构成的左右搭配词对的tf-idf值,假设在10万篇语料中,经过分词处理后共计有:1万个不同的词(对于汉语来说,这种词汇量已经是非常少的情况),那么这1万个词之间的采取任意组合方式的方式,形成的二词词对共计有:10000*9999=9999万种,而要在10万篇语料中计算9999万条二词组合的tf-idf值,其算法复杂度为o(100000*99990000),在普通的计算设备条件下,这几乎是一项不可能完成的任务。因此由于与词汇语义无关的大量噪声词汇的客观存在,采用这种对排列组合的穷举方法,会极大地增加计算工作量,在实际是不可行的。

6、以tf-idf值作为二词向量的元素值,来计算词汇间的语义相似度,存在较大的问题。首先tf-idf计算方法本身是用来计算度量一个词在句子或文章中的重要性的指标值,而技术二中将它用作向量维度元素的特征表示,在使用方式上存在张冠李戴的问题。其次如果采用全体二词组合来构建向量,由于二词组合的数量非常多,因此会导致向量维度过高和维度稀疏的问题。



技术实现要素:

发明目的:

(1)采用数据驱动而不是规则驱动的方法来解决现有技术中存在的层次知识体系构建难度大,通用性和灵活性不强,人为设计参数干预因素过多的问题。具体来说,就是采取机器学习的方式,让计算机在海量的自然语言文本语料,从词汇与词汇之间的位置、共现频率等大量重复出现的数据里,来学的识别语义相似度的能力,这种学习本质上说是一种数据驱动模式下的后验学习,不需要事先设计复杂的知识表示规则、逻辑和元素等。

(2)采用低维的词嵌入向量+深度学习的技术来解决现有技术中存在的向量维度过高,计算复杂度过高的问题。

(3)采用不预先假设数据分布条件的方式来避免现有技术中存在的前提假设性过强而与实际情况存在较多不同的问题。

(4)解决语义相似度计算灵活适用不同的业务领域和应用场景,在不依赖于现有的知识词典的前提下,同时保证识别的稳定效果。

为实现上述目的,本发明提供如下技术方案:一种基于组合距离的语义相似度计算方法,其特征在于,包括以下步骤:

步骤s10:inputlayer输出层:是上下文单词的one-hot形式的词向量;

步骤s20:隐藏层的神经元数量设为,权值共享矩阵为的大小为,并且初始化;

步骤s30:在中间层进行数据计算;

步骤s40:hiddenlayer的输出数据的结果;

步骤s50:hiddenlayer与作乘积计算后得到的输出结果;

步骤s60:损失函数和反向传播优化计算。

优选的,s10步骤中,假设单词向量空间的维度为v,即整个训练语料词典大小为v,上下文单词窗口的大小为c。

优选的,s30步骤中,大小的向量分别跟同一个大小的权值共享矩阵相乘,得到的是大小的隐层hiddenlayer。

优选的,s40步骤中,将大小的hiddenlayer取平均,得到一个大小的向量,即hiddenlayer的输出结果,outputlayer输出层的神经元数量设为,则hiddenlayer到输出层的权重连接矩阵为,则的大小为

优选的,s50步骤中,hiddenlayer与作乘积计算后得到的输出结果为的向量,采用softmax函数可以获得模型预测输出的结果:

优选的,s60步骤中,损失函数和反向传播优化计算采用negativesampling算法实现,其基本原理是:

其中:表示词上下文窗口中各向量之和,表示预测结果不是真实值即负样本的情况,为sigmod函数,即:

与现有技术相比,本发明的有益效果是:

(1)针对现有技术存在的构建层次知识体系的工作量非常大的问题,采用本发明完全不需要事先构建一个层次知识体系的词典,这样就极大地降低了语义相似度的计算、使用门槛,使一般用户也能够轻松使用。原因是本发明完全采用数据驱动的无监督机器学习方式来实现,计算机系统是通过对大量领域内的文本资料的自动化学习来获得词语蕴含的语义信息的。

(2)针对现有技术适用性和灵活性不高,难以快速应用于不同的专业领域的问题,本发明采用训练语料自动化学习的方式来解决。当本发明软件应用于不同的业务场景下时,只需要采用该领域内的足够的专业训练文本语料对词向量模型进行重新训练,就可以快速适用于该领域的语义相似性计算方面,从而大大地降低了模型移植的人力和时间成本。

(3)针对现有技术中同义词相似度计算公式中存在太多的人为设定因素,通用性不强这个问题,本发明的词向量模型在训练过程中除了考虑几个基本训练参数之外,不需要设定其它人工参数;语义相似度计算模块人工设定参数也主要集中在距离组合和平滑公式里,减少了很多人为干扰。

(4)针对现有技术里“语义相似的词汇在二名词短语中有相似的搭配词”这个前提假设性太强的问题,本发明中将词向量计算的窗口大小设为5,且人为设定相似词长度的限制,这样就消除了这个前提假设。

(5)针对现有技术里“计算量非常大,算法执行效率低”的问题,本发明中采用128维的低维向量来代替现有技术中的高维向量,并且词向量计算过程中采用word2vec模型中的nativesampling搜索优化算法,极大地提升了算法的执行效率,减少了算法复杂度。

(6)针对现有技术中仅采用cosine余弦距离公式来计算相似度的问题,本发明中同时采用余弦距离+levenshtein一种编辑距离这两种组合距离计算的方法来计算语义相似度,这样在首先考虑语义距离的时候,同时兼顾考虑编辑距离,使相似性结果根据准确。

附图说明

图1为语义相似度计算模块,系统总体结构和处理流程示意图;

图2为连续词袋模式(continuousbag-of-words)原理示意图;

图3为连续跳词模式(continuousskip-gram)原理示意图;

图4为神经网络实现原理示意图;

图5为余弦距离(cosinedistance)的原理图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明提供了一种基于组合距离的语义相似度计算方法,其特征在于,包括以下步骤:

步骤s10:inputlayer输出层:是上下文单词的one-hot形式的词向量;

步骤s20:隐藏层的神经元数量设为,权值共享矩阵为的大小为,并且初始化;

步骤s30:在中间层进行数据计算;

步骤s40:hiddenlayer的输出数据的结果;

步骤s50:hiddenlayer与作乘积计算后得到的输出结果;

步骤s60:损失函数和反向传播优化计算。

进一步的,s10步骤中,假设单词向量空间的维度为v,即整个训练语料词典大小为v,上下文单词窗口的大小为c。

进一步的,s30步骤中,大小的向量分别跟同一个大小的权值共享矩阵相乘,得到的是大小的隐层hiddenlayer。

进一步的,s40步骤中,将大小的hiddenlayer取平均,得到一个大小的向量,即hiddenlayer的输出结果,outputlayer输出层的神经元数量设为,则hiddenlayer到输出层的权重连接矩阵为,则的大小为

进一步的,s50步骤中,hiddenlayer与作乘积计算后得到的输出结果为的向量,采用softmax函数可以获得模型预测输出的结果:

进一步的,s60步骤中,损失函数和反向传播优化计算采用negativesampling算法实现,其基本原理是:

其中:表示词上下文窗口中各向量之和,表示预测结果不是真实值即负样本的情况,为sigmod函数,即:

最大化g(w)的过程就是最大化正样本概率和最小化负样本概率的过程,在反向传播计算中一般采用通常的随机梯度下降算法来进行迭代求解,最后可得到θ和w的最优估计,而θ即为词w所对应的词向量。

相较于传统nlp的高维、稀疏的表示法(one-hotrepresentation),word2vec训练出的词向量是低维、稠密的。word2vec利用了词的上下文信息,训练获得的语义信息更加丰富,并且这种学习方式属于无监督学习方式,在训练前不需要大量的人工标注的语料标签,只需要获取足够的文本资料即可,极大地降低了训练数据的准备工作量,目前常应用于:

1)使用训练出的词向量作为输入特征,以提升现有分类模型的准确率,如应用在情感分析、词性标注、语言翻译等典型的分类识别业务场景中。

2)直接从语言学的角度对词向量进行应用,如使用向量的距离计算值来表示词语相似度、query相关性等。

组合距离计算原理和实现说明

本发明中采用了组合距离的方式来解决语义相似度的计算问题,这种组合距离的实际效果要好于其中一种单一距离,前提条件是要使用能够蕴涵丰富语义信息的词向量(例如本发明中采用word2vec生成的词向量信息)作为输入。以下就本发明中组合距离所涉及的两种距离的原理,组合方式,使用技巧等方面做详细说明:

余弦距离(cosinedistance)的原理和实际实现说明:

余弦距离是一种非常有效的度量文本相似度的计算方法,与普通的欧式距离在计算中还需要考虑向量长度不同,余弦距离值只与两个向量之间的夹角大小有关,因此余弦距离更加注重的是考察两个向量在方向上的差异,而非长短的差异,它的这种特性使之非常适合于语义相似度的计算方面。

两个向量的余弦值,可根据欧几里德点积公式获得:

因此向量间的余弦相似度为:

余弦相似度与余弦距离值成正比关系,即越大,相似度越大。

其中:为相同维数的n维向量,是a,b之间的夹角,是向量的l2模,即:

levenshtein距离的原理和实现说明:

levenshteindistance(莱文斯坦距离)也通常称作编辑距离(目前还有一些不同类型的编辑距离,例如:damerau-levenshtein、lcs(最长公共子序列)、jaro距离、汉明距离等),它是由俄罗斯科学家vladimirlevenshtein在1965年提出,也因此而得名levenshteindistance。在自然语言处理领域,levenshtein距离是用来度量两个文本序列在字面上相似程度的指标。简单说,levenshtein距离指的是在两个单词(或两个单词构成的序列)之间,由其中一个单词转换为另一个单词所需要的最少单字符编辑操作次数。

levenshtein距离的算法原理和描述如下:

两个字符串的levenshtein距离表示为,其中分别对应表示的长度,那么可表示为:

1)定义表示中前个字符,中前个字符之间的距离。即可以表示子串的长度,字符串的索引从1开始,则最后levenshtein距离则是:,即:

2)当时,表示中有一个值为0,则表示串中有一个是空串,则转换到则需要进行次单字符操作即可,则

3)当时,则为如下三种情况的最小值:

表示替换是一个指示函数表示当时取1,时取0。

双距离组合算法的实现说明:

双距离组合算法的思路是:在通过word2vec模型计算获得词向后,为了避免单纯使用余弦距离计算相似度而容易出现的那种因为训练语料不够充分而产生对词语形式相似的近似词汇在语义上判断不准的问题,例如:对“轿车”和“汽车”这两个值,其余弦近似值cosine_sim=0.5976,而levenshtein近似值levenshtein_sim=0.905,采用levenstein距离来计算词语的形式相似程度,可以有效地弥补语义判断不准造成的问题。当两词语间的levenstein距离较大时(即词语形式相似程度较小时),通过增加余弦距离值在组合距离中所占的比重,加大语义识别的成分,从而保证在形式不同但语义相似的情况下的判断准确率。

尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1