一种文本的相似度计算的方法和装置与流程

文档序号:12464625阅读:216来源:国知局
一种文本的相似度计算的方法和装置与流程

本发明涉及一种文本的相似度计算的方法和装置,尤其涉及一种利用深度学习算法进行文本相似度计算的方法和装置。



背景技术:

随着计算机和网络的日益普及,各类信息资源共享程度越来越高,给工作和生活带来极大的便利。人们每天都要获取和处理大量的信息,如何从海量数据中提取有价值的信息,已经成为信息技术领域的热门问题。

基于句子相似度的文本比对算法研究,就是在分析句子构成以及句子含义的基础上,通过某种算法,将目标文本和标准文本进行相似度计算,以得出对文本相似程度的判定,为将来进行文本比对和鉴定提供依据。

现有的文本的相似度计算的方法主要包括编辑距离算法、TF-IDF算法、隐语义向量空间模型算法。

TF-IDF算法认为对区别文档最有意义的词语应该是那些在文档中出现频率高,而在整个语料库中的其他文档中出现频率少的词语。其无法捕捉文档内部与文档间的统计特征,更不能解决同义词或多义词的问题,因此精确度不是很高。

编辑距离算法一般用在有很多相同的词语的文档中时,效果比较好,如果句子中出现同义不同形的词语,效果很差。

隐语义向量空间模型算法,首先将词语转换成向量空间的表示,然后再将句子中的词语的向量表示进行融合,比如相加或者连接。其不足之处在于,只考虑了上下文中词语的统计特性,没有考虑词语本身的语义特性,具有一定的局限性。



技术实现要素:

本发明提供一种文本的相似度计算的方法和装置,利用深度学习算法,能够得到比传统方法更优的计算结果。

本发明提供一种文本的相似度计算的方法,所述方法包括:a)对所述文本的句子进行分词,以得到各句子对应的词;b)对得到的词执行索引化,以得到各个词的索引;c)根据各个句子对应的词,生成各个句子的语法树,其中每个句子对应的词的数值信息作为相应语法树的末端节点,每个词的数值信息至少部分地基于所述词的索引;d)从每个句子的语法树的末端节点向顶端节点执行递归运算,以获得各个句子的数值表达;e)基于各句子的数值表达计算文本间句子的相似度;以及f)基于文本间句子的相似度计算文本间的相似度。

在一实施例中,所述方法还包括:提供词索引关系库,包括词到索引的映射关系;以及所述步骤b),进一步包括:对于每个词,将该词和所述词索引关系库中的词执行匹配度运算,将所述词索引关系库中与该词具有最高匹配度的词所对应的索引作为该词的索引。

在一实施例中,所述词的数值信息为所述词的索引。

在一实施例中,所述步骤e),进一步包括:计算各句子的数值表达的差值作为文本间句子的相似度。

在一实施例中,所述方法还包括:为每个词加入在语法树生成过程中得到的词性信息,其中,每个词的数值信息为由其索引和词性信息组成的向量。

在一实施例中,所述方法还包括:将各个词的索引进行扩维表示,以得到各个词的多维索引,其中,每个词的数值信息为由其多维索引组成的向量。

在一实施例中,所述方法还包括:为每个词加入在语法树生成过程中得到的词性信息;以及将各个词的索引进行扩维表示,以得到各个词的多维索引;其中,每个词的数值信息为由其词性信息和多维索引组成的向量。

在一实施例中,所述将各个词的索引进行扩维表示的步骤,进一步包括:运用Word Embedding算法或Word2vec算法对各个词进行扩维表示。

在一实施例中,各句子的数值表达为向量表达;以及所述步骤e)进一步包括:计算文本间句子的向量表达的余弦距离,作为文本间句子的相似度。

在一实施例中,所述方法还包括:对所述文本进行停用词过滤,所述分词是对经过停用词过滤的文本进行的。

在一实施例中,所述步骤f),进一步包括:计算文本间句子的相似度的平均值作为文本间的相似度。

在一实施例中,所述步骤d),进一步包括:利用自动编码器执行所述递归运算。

对应上述方法,本发明提供一种文本的相似度计算的装置,所述装置包括:分词模块,用于对所述文本的句子进行分词,以得到各句子对应的词;索引化模块,用于对得到的词执行索引化,以得到各个词的索引;语法树生成模块,用于根据各个句子对应的词,生成各个句子的语法树,其中每个句子对应的词的数值信息作为相应语法树的末端节点,每个词的数值信息至少部分地基于所述词的索引;运算模块,用于从每个句子的语法树的末端节点向顶端节点执行递归运算,以获得各个句子的数值表达;句子相似度计算模块,用于基于各句子的数值表达计算文本间句子的相似度;以及文本相似度计算模块,用于基于文本间句子的相似度计算文本间的相似度。

在一实施例中,所述索引化模块还包括:词索引关系库,包括词到索引的映射关系;以及匹配模块,用于将所述词和所述词索引关系库中的词执行匹配度运算,将与所述词具有最高匹配度的词索引关系库中的词所对应的索引作为所述词的索引。

在一实施例中,所述词的数值信息为所述词的索引。

在一实施例中,所述句子相似度计算模块,进一步用于:计算各句子的数值表达的差值作为文本间句子的相似度。

在一实施例中,所述装置还包括:词性添加模块,用于为每个词加入在语法树生成过程中得到的词性信息,其中,每个词的数值信息为由其索引和词性信息组成的向量。

在一实施例中,所述装置还包括:扩维模块,用于将各个词的索引进行扩维表示,以得到各个词的多维索引,其中,每个词的数值信息为其多维索引组成的向量。

在一实施例中,所述装置还包括:词性添加模块,用于为每个词加入在语法树生成过程中得到的词性信息;以及扩维模块,用于将各个词的索引进行扩维表示,以得到各个词的多维索引;其中,每个词的数值信息为其词性信息和多维索引组成的向量。

在一实施例中,所述扩维模块,进一步用于:运用Word Embedding算法或Word2vec算法对各个词进行扩维表示。

在一实施例中,各句子的数值表达为向量表达;以及所述句子相似度计算模块,进一步用于:计算文本间句子的向量表达的余弦距离,作为文本间句子的相似度。

在一实施例中,所述装置还包括:停用词过滤模块,用于对所述文本进行停用词过滤;以及所述分词模块,进一步用于对经过停用词过滤的文本进行分词。

在一实施例中,所述文本相似度计算模块,进一步用于计算文本间句子的相似度的平均值作为文本间的相似度。

在一实施例中,所述运算模块,进一步包括:自动编码器,用于执行所述递归运算。

本发明提供的文本的相似度计算的方法和装置,将文本进行分词,并根据文本的每个句子对应的词生成语法树。同时,将每个词进行数值表示,进而给运用深度学习算法提供基础。运用生成的语法树,并利用深度学习算法进行递归运算即可得到每个句子的数值表达。随后,计算句子间的数值表达的近似度,并根据句子的相似度得出文本的相似度。

本发明利用了深度学习算法来更加精确地表达句子的信息,进而使得文本相似度的计算精度更高。更进一步,本发明为词加入词性信息和索引的扩维表示,都是为了更加精确地表达词的信息,进而得到更加准确的句子的信息,从而得到更加精确的文本相似度。

附图说明

图1示出了本发明文本的相似度计算的方法一个方面的流程图;

图2示出了语法树生成例子的结构示意图;

图3示出了递归运算的示意图;

图4示出了自动编码器的示意图;

图5示出了本发明一种文本的关键词提取的装置一个方面的结构示意图。

具体实施方式

本发明提供的文本相似度的计算方法,对文本的词执行索引化,并针对文本的每个句子生成语法树,将索引化的句子对应的词作为语法树的末端节点,执行递归运算,进而得到语法树顶端的句子的数值表达。而后,通过对比文本间句子的相似度,得出文本的相似度。本发明通过深度学习算法得到了更加精确的句子信息表达,通过文本间句子信息的对比,进而得到更加精确的文本相似度。

请参看图1,图1示出了本发明文本的相似度计算的方法一个方面的流程图,所述方法包括:

101:对文本的句子进行分词,以得到各句子对应的词;

102:对得到的词执行索引化,以得到各个词的索引;

103:根据各个句子对应的词,生成各个句子的语法树,其中每个句子对应的词的数值信息作为相应语法树的末端节点,每个词的数值信息至少部分地基于词的索引;

104:从每个句子的语法树的末端节点向顶端节点执行递归运算,以获得各个句子的数值表达;

105:基于各句子的数值表达计算文本间句子的相似度;以及

106:基于文本间句子的相似度计算文本间的相似度。

词是文本组成的最基本单位,通过词的信息,进而能够得到句子的信息,通过文本间句子信息的相似程度,就能够得到文本的相似度。

首先,执行步骤101,对文本的句子进行分词,以得到各句子对应的词。现有技术包括多种分词方法,主要有最大匹配算法和Viterbi(维特比)。

最大匹配是指以词典为依据,取词典中最长单词为首次扫描串,在词典中进行扫描(为提升扫描效率,还可以根据字数多少设计多个字典,然后根据字数分别从不同字典中进行扫描)。例如:词典中最长词为“中华人民共和国”共7个汉字,则最大匹配起始字数为7个汉字。然后逐字递减,在对应的词典中进行查找。

按照扫描方向的不同,串匹配分词方法可以分为正向匹配和逆向匹配;按照不同长度优先匹配的情况,可以分为最大(最长)匹配和最小(最短)匹配;按照是否与词性标注过程相结合,又可以分为单纯分词方法和分词与标注相结合的一体化方法。常用的几种机械分词方法如下:

1)正向最大匹配法(由左到右的方向);

2)逆向最大匹配法(由右到左的方向);

3)最少切分(使每一句中切出的词数最小)。

还可以将上述各种方法相互组合,例如,可以将正向最大匹配方法和逆向最大匹配方法结合起来构成双向匹配法。

而Viterbi(维特比)算法解决的是HMM(隐马尔科夫模型)经典问题中最优状态序列的选择问题。词性标注问题映射到隐马尔科夫模型可以表述为:模型中状态(词性)的数目为词性符号的个数N;从每个状态可能输出的不同符号(单词)的数目为词汇的个数M。假设在统计意义上每个词性的概率分布只与上一个词的词性有关(即词性的二元语法),而每个单词的概率分布只与其词性相关。

步骤102对得到的词执行索引化,以得到各个词的索引。

由于神经网络的输入都必须是数值表达,为词执行索引化来使词对应数值表达,给运用神经网络模型进行关键词提取提供基础。

在一优选实施例中,提供词索引关系库,包括了词到索引的映射关系,索引化操作包括:将文本中的词和词索引关系库中的词进行匹配度运算,将匹配度最高的词索引关系库中的词对应的索引作为文本中的词的索引。

此处的索引化过程,为词添加了语义信息。语义信息的加入,使得词的信息表达更加完整,为后续句子语义信息的表达提供了基础,而句子语义信息的准确表达是文本相似度计算的关键点,为更加精确的相似度计算提供了基础。

通常词索引关系库可以选用例如搜狗词库之类的包含有几乎所有中文词的词库,可以首先随机索引化搜狗词库中的词,为每一个搜狗词库中的词分配一个索引数值,这样就完成了词索引关系库的构建。

随后,将文本中的词与词库中的词进行语义匹配度运算,将匹配度最高的词的索引作为文本中的词的索引。那么,文本中的相同的词都在词索引关系库中对应了同样的匹配度最高的词,进而拥有相同的索引数值。采用此方法可以使得相同的词拥有相同的索引数值,进而可以认为词的索引数值越接近则语义越接近。也就完成了从语言文字表达语义到数值表达语义的操作。

步骤103,根据各个句子对应的词,生成各个句子的语法树,其中每个句子对应的词的数值信息作为相应语法树的末端节点,每个词的数值信息至少部分地基于所述词的索引。

语法树是句子结构的图形表示,它代表了句子的推导结果,有利于理解句子语法结构的层次。简单说,语法树就是按照某一规则进行推导时所形成的树状结构。现有技术中已有众多算法能够生成语法树,例如PCFG算法等。

本发明中,根据各个句子对应的词,生成各个句子的语法树。以“小i机器人是智能专家”这句话为例,生成的语法树的结构请参见图2。

图2中,“小i机器人是智能专家”包含了“小i机器人”201、“是”202、“智能专家”203这三个词,以这三个词分别作为语法树的末端节点。然后最开始的两个相邻的词组合成为新的节点,其中“小i机器人”201与“是”202这两个词组合成新的节点211,“智能专家”203再与节点211组合成新的节点221。

若一个句子包含的词为其他的个数,生成语法树的原理与此例相同。

可以看到“小i机器人是智能专家”这个句子,在语法树最末端是由三个词对应的三个节点来表示,而在最顶端则为一个节点就能表示该句子。

利用前述的方法对“小i机器人”、“是”、“智能专家”这三个词执行索引化,例如在搜狗词库中分别找到“小i机器人”、“是”、“智能专家”三个词的索引分别为506、16、97,则能够表示“小i机器人是智能专家”的数值表达为三个独立的索引数值。

而由于文本中的大多数句子包含的词的个数并不相同,若要直接用每个词的数值表达来表示句子,则各个句子间的数值表达的个数不同,这样就不便于计算各个句子之间的相似度。

利用语法树的树状结构,即可解决上述问题,使得每个句子的数值表达的个数一致。

步骤101~103已经将每个句子生成了语法树,并将每个句子对应的词的数值信息作为相应语法树的末端节点。

随后执行步骤104,从每个句子的语法树的末端节点向顶端节点执行递归运算,以获得各个句子的数值表达。递归运算的示意图请参见图3。

从树的末端结点从左向右依次进行编码,最终就会得到这个句子的数值表达。具体来说,首先对“小i机器人”301进行编码,接着前述例子,“小i机器人”的索引为“506”,该“506”这个数值信息即为对“小i机器人”的编码结果302。

随后,利用生成好的语法树结构,将“506”这个数值信息与“是”对应的索引“16”这个数值信息303进行合并,并编码,得到“小i机器人是”的数值信息304。再引入“智能专家”305对应的索引“97”,将数值信息304与“97”进行合并,并编码,即可得到“小i机器人是智能专家”306这个句子的数值表达。

在一实施例中,可以同时为词加入词性信息。因为词性能够在某种程度上表达一个词的性质信息,加入词性信息能够从更多的维度,更加准确地去描述该词的本质信息,进而为后续得到更加准确的句子信息,句子的相似度计算和文本的相似度计算提供基础。

词性是指以词的特点为根据,来划分词类。现代汉语的词可以分为两类共12种词性。一类是实词:名词、动词、形容词、数词、量词和代词。一类是虚词:副词、介词、连词、助词、叹词和拟声词。

本发明中,给每个词性分别随机分配一个数值标记,例如将名词、动词、形容词、数词、量词、代词、副词、介词、连词、助词、叹词和拟声词分别分配1、2、3、4、5、6、7、8、9、10、11、12作为各自的数值标记,那么,本发明中词性数值为3的那些词的词性即为形容词,其他数值标记代表的词性以此类推。

语法树生成过程当中,已经得到了各个词的词性信息,只需将前述的词性数值标记与词的索引数值组合成向量,该向量即为加入词性信息后的词的数值信息。

也可以利用现有技术中的较为成熟的词性标注算法来为词加入词性信息,包括HanLP算法和Jieba(结巴)算法,以上两种算法都提供开源的软件包,实际使用中,直接进行调用即可。

在另一优选实施例中,将词的索引信息进行扩维表示,以得到词的多维索引表示,并将词的词性信息数值和多维索引信息组成的向量作为词的数值信息。

对词的索引信息进行扩维表示是为了能够用更多的维度来表现词的相关信息,词的信息也就更能够被描述清楚,而句子是由词构成的,本发明利用递归算法从词的信息得出句子的信息,有了更准确的词的信息,也就能够得到更准确的句子的信息。进而,可以更准确的判断句子间的相似度和文本间的相似度。

现有技术中的扩维技术包括Word Embedding(词嵌入)算法和Word2vector(词到向量)算法等。

关于Word Embedding算法,举一个例子,给出一个问句序列“A B C D E F G”,希望对文档中每个问句都得到一个对应的向量表示。比如,对于这样的“A B C D E F G”的一个序列,将每一个问句通过Word Embedding进行表示纬度的扩充,最后可以得到:A对应的向量为[0.1 0.6 -0.5],B对应的向量为[-0.2 0.9 0.7]等等。之所以希望把每个索引数值变成一个向量,目的还是为了方便计算,比如“求问句A的同义词”,就可以通过“求与问句A对应的多维向量在cos距离下最相似的向量”来做到。在一优选实施例中,将每个索引序列数值通过Word Embedding技术扩展到4维或者128维。

Word2vec算法的功能与Word Embedding算法相同,其是谷歌开源的一款将词表征为实数值向量的高效工具,其利用深度学习的思想,可以通过训练,把对文本内容的处理简化为多维向量空间中的向量运算,而向量空间上的相似度可以用来表示文本语义上的相似度。

目前看到,词的数值信息可以是单个的索引数字,也可以是词的索引数字、词的词性信息数值组成的向量,或者词的多维索引的向量,或者词的多维索引的向量和词的词性信息数值组合的向量。

在一实施例中,利用自动编码器实现步骤104中的递归运算,在上述的每一步编码操作中运用自动编码器。

自动编码器是一种尽可能复现输入信号的深度学习算法。为了实现这种复现,自动编码器试图捕捉可以代表输入数据的最重要的因素,找到可以代表原信息的主要成分,抽取文本句子的最优表达。

请参看图4,图4示出了自动编码器的示意图。自动编码器分为两个部分,编码器401和解码器402。编码器401用于对输入进行编码,解码器402用于将编码器输出的编码,进行解码重构还原成原来的输入。

解码重构的结果和原始输入之间会有一个误差,叫做重构误差。利用重构误差最小化可以保证编码器输出的编码是最接近原始输入的,也就是最优表达。

虽然此时将一个句子的词对应的多个数值表达表示成了一个数值表达,但是当词的数值信息为向量时,经过递归运算的句子的数值表达也是向量。

由于句子长度的不同,最终输出的句子数值表达的向量的长度是不同的。

对于这样的句子数值表达的输出,无法和其他算法融合对比。因此,可以在得到最终句子的向量表达之后,加入Mean Pooling算法,将输出的向量进行长度归一化,使之成为长度相同的向量表达。

Pooling(池化)技术将小邻域内的特征点整合得到新的特征。Pooling的结果是使得特征减少,参数减少,但Pooling的目的并不仅在于此。Pooling目的是为了保持某种不变性(旋转、平移、伸缩等),常用的有Mean Pooling(平均池化),Max Pooling和Stochastic Pooling(随机池化)三种。

Mean Pooling即对邻域内特征点只求平均,Max Pooling即对邻域内特征点取最大。根据相关理论,特征提取的误差主要来自两个方面:(1)邻域大小受限造成的估计值方差增大;(2)卷积层参数误差造成估计均值的偏移。一般来说,Mean Pooling能减小第一种误差,更多的保留图像的背景信息,Max Pooling能减小第二种误差,更多的保留纹理信息。Stochastic Pooling则介于两者之间,通过对像素点按照数值大小赋予概率,再按照概率进行亚采样,在平均意义上,与Mean Pooling近似,在局部意义上,则服从Max Pooling的准则。

有了各个句子的数值表达,即可进行步骤105,基于各句子的数值表达计算文本间句子的相似度。每个文本的每个句子都要跟另外的文本的每个句子计算相似度,例如一个文本包括A、B、C三个句子,另一个文本包括D、E、F、G四个句子,则句子A要和D、E、F、G计算相似度,句子B要和D、E、F、G计算相似度,句子C也要和D、E、F、G计算相似度。若一个文本有N个句子,另一个文本有M个句子,则最终得到的相似度的值有M*N个。

若最终各句子的数值表达为数字,则直接计算各句子的数值表达的差值作为文本间句子的相似度。

若最终各句子的数值表达为向量,则计算向量间的余弦距离,作为文本间句子的相似度。

文本是由句子组成,句子的相似度在很大程度上体现了两个文本的相似度。有了文本间句子的相似度,进行步骤106,基于各句子的数值表达计算文本间句子的相似度。在一实施例中,计算文本间句子的相似度的平均值作为文本间的相似度。

在另一实施例中,在分词之前,去除文本中的停用词。所谓停用词指文本中出现频率很高,但实际意义又不大的词,主要指副词、虚词、语气词等,如“是”、“而是”等。现有技术中已有诸多停词库可供使用,只需对照停词库将文本中的停用词去除即可。

对应前述一种文本的相似度计算的方法,本发明还提供一种文本的相似度计算的装置,请参看图5,图5示出了本发明一种文本的关键词提取的装置一个方面的结构示意图。

文本的相似度计算的装置50包括分词模块501、索引化模块502、语法树生成模块503、运算模块504、句子相似度计算模块505和文本相似度计算模块506。

其中,分词模块501用于对所述文本的句子进行分词,以得到各句子对应的词。

索引化模块502,用于对得到的词执行索引化,以得到各个词的索引。

利用语法树生成模块503,并根据各个句子对应的词,生成各个句子的语法树,其中每个句子对应的词的数值信息作为相应语法树的末端节点,每个词的数值信息至少部分地基于所述词的索引。

运算模块504,用于从每个句子的语法树的末端节点向顶端节点执行递归运算,以获得各个句子的数值表达。

在得到各个句子的数值表达之后,运用句子相似度计算模块505,基于各句子的数值表达计算文本间句子的相似度。

最后,运用文本相似度计算模块506,基于文本间句子的相似度计算文本间的相似度。

在一实施例中,索引化模块502还包括词索引关系库,包括词到索引的映射关系;以及匹配模块,用于将词和词索引关系库中的词执行匹配度运算,将与词具有最高匹配度的词索引关系库中的词所对应的索引作为词的索引。

在一实施例中,词的数值信息即为词的索引。

当词的数值信息为词的索引时,在一实施例中,句子相似度计算模块505,进一步用于,计算各句子的索引的差值作为文本间句子的相似度。

在一实施例中,装置50还可以包括词性添加模块,用于为每个词加入在语法树生成过程中得到的词性信息,其中,每个词的数值信息为由其索引和词性信息组成的向量。

在一实施例中,装置50还可以包括扩维模块,用于将各个词的索引进行扩维表示,以得到各个词的多维索引,其中,每个词的数值信息为其多维索引组成的向量。

在一实施例中,装置50同时包括词性添加模块和扩维模块,词性添加模块,用于为每个词加入在语法树生成过程中得到的词性信息;以及扩维模块,用于将各个词的索引进行扩维表示,以得到各个词的多维索引;其中,每个词的数值信息为其词性信息和多维索引组成的向量。

可以直接使用现有技术中的Word Embedding算法或Word2vector算法进行词的索引信息的扩维,对应的扩维模块,进一步包括:

Word Embedding模块,用于运用Word Embedding算法将词的索引信息进行扩维表示,以得到Word Embedding结果作为词的多维索引表示,或Word2vector模块,用于运用Word2vector算法将词的索引信息进行扩维表示,以得到Word2vector结果作为词的多维索引表示。

当句子的数值表达为向量时,句子相似度计算模块505,进一步用于计算文本间句子的向量表达的余弦距离,作为文本间句子的相似度。

在一实施例中,装置50还包括停用词过滤模块,用于对文本进行停用词过滤;以及分词模块501,进一步用于对经过停用词过滤的文本进行分词。

在一实施例中,文本相似度计算模块506,进一步用于计算文本间句子的相似度的平均值作为文本间的相似度。

在一实施例中,运算模块504,进一步包括:自动编码器,用于执行递归运算。

如上所述,本发明提供一种文本的相似度计算的方法和装置,利用词索引化来用数值表示词,进而运用深度学习算法得到准确的句子表达,有了精确的句子表达就可以更加精确地计算句子间相似度,进而得到更加精确的文本相似度。

更进一步,本发明还为词加入了词性索引信息,使得词的信息表达更加完整,进而得到更加完整的句子信息表达,从而句子的相似度和文本的相似度也更加精确。

更进一步,本发明的索引扩维表示也是为了更好地表达词和句子的信息,进而得到更加精确的文本相似度。

提供对本公开的先前描述是为使得本领域任何技术人员皆能够制作或使用本公开。对本公开的各种修改对本领域技术人员来说都将是显而易见的,且本文中所定义的普适原理可被应用到其他变体而不会脱离本公开的精神或范围。由此,本公开并非旨在被限定于本文中所描述的示例和设计,而是应被授予与本文中所公开的原理和新颖性特征相一致的最广范围。

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