实施例1
图1示出根据本发明一实施例的查询目标匹配方法的流程图。如图1所示,该方法主要包括:
步骤S101,获取针对相同查询目标的关联查询词;
步骤S102,对所述关联查询词进行分词操作,以获得词;
步骤S103,计算各所述词的词向量;
步骤S104,根据所述词向量,确定当前查询词中各词的词向量,以及与待匹配的查询目标相对应的文本中包含的词的词向量;
步骤S105,根据当前查询词中各词的词向量以及与待匹配的查询目标相对应的文本中包含的词的词向量,确定当前查询词与所述文本的语义相似度;
步骤S106,根据所确定的语义相似度,从所述待匹配的查询目标中确定与所述当前查询词相匹配的查询目标。
根据该实施例的方法,通过对获取的针对相同查询目标的关联查询词进行分词操作以获得词,并计算各所述词的词向量,再根据所确定的词向量来确定当前查询词中各词的词向量以及待匹配的查询目标相应的文本中包含的词的词向量,并确定当前查询词与所述文本的语义相似度,进而从所述待匹配的查询目标中确定与所述当前查询词相匹配的查询目标。根据本实施例,使得词向量的确定考虑到了针对相同查询目标的查询词之间的关联性,能够使得到的当前查询词和与待匹配的查询目标相对应的文本的语义相似度的准确性更高,便于更准确地将与所述当前查询词相匹配的查询目标推荐给用户,提高匹配度,从而提高用户的查询效率。
以下结合一些具体示例,来对本实施例的各种可能的具体实现方式进行说明,这些示例是示例性和说明性的,并非意在限制本发明。
在一个示例中,获取针对相同查询目标的关联查询词可以包括:获取相同用户连续输入的查询词,作为所述关联查询词。具体来说,相同用户在针对某一查询目标使用搜索引擎进行搜索的情况下,通常可能会包括不止一次的搜索行为,尤其是在用户对搜索结果不满意的情况下,用户可能会通过改变查询词来查找想要得到的内容,而这种相同用户连续输入不同查询词的搜索行为实际上是人为建立了不同查询词之间的关联关系。例如,某一用户希望得到歌曲《是否》的相关视频,第一次通过输入“是否”来进行搜索,但是对于搜索引擎的推荐,用户并没有得到满意的结果,该用户第二次通过输入“电影插曲是否”来进行再次搜索,且得到了满意的结果。基于该用户的上述行为,可以建立“是否”与“电影插曲是否”之间的关联关系,“是否电影插曲是否”可以作为关联查询词。在一个示例中,可统计用户输入第一个查询词之后的预定时间(例如5到10分钟)内输入的查询词,作为用户连续输入的查询词,并由此形成关联查询词。
在一个示例中,获取针对相同查询目标的关联查询词还可以包括:获取不同用户针对相同的查询目标输入的查询词,作为所述关联查询词。具体来说,通常,不同用户可能会针对相同的查询目标采用相同或者不同的查询词进行搜索,进而来查找想要得到的内容,也可以将不同用户针对相同的查询目标采用不同的查询词进行搜索的搜索行为视为人为建立了不同查询词之间的关联关系。例如,用户A和用户B的查询目标都是歌曲《是否》的相关视频,用户A采用“电影插曲是否”来进行搜索,得到了满意的结果,用户B采用“搭错车插曲是否”来进行搜索,同样得到了满意的结果。基于用户A的上述行为,以及用户B的上述行为,可以建立“电影插曲是否”与“搭错车插曲是否”之间的关联关系,“电影插曲是否搭错车插曲是否”可以作为关联查询词。在一个示例中,可以统计用户输入的查询词以及用户最终点击的查询目标之间的关联关系,从而确定关联查询词。
举例来说,可以利用搜索引擎的查询日志来确定关联查询词,本领域技术人员还可以通过其他途径,例如网页内容、新闻报道、视频标题等来获取针对相同查询目标的关联查询词,本发明对此不作限制。
在一个示例中,可以将每条关联查询词作为一条语料存入语料库,以便对关联查询词进行后续处理。其中,可以针对每个查询目标建立单独的语料库。
在一个示例中,可以通过例如语料库来记录一段时间内(例如一年)统计得到的上述关联查询词,以供后续处理。
在一个示例中,可以对获得的关联查询词进行分词操作,以获得词。可以采用本领域技术人员已知的分词方法来实现分词操作。举例来说,可以采用前述方法获取针对歌曲《是否》的相关视频的关联查询词,关联查询词例如是“是否电影插曲是否电影搭错车”等,可以采用本领域技术人员已知的分词方法对“是否电影插曲是否电影搭错车”进行分词操作,获得“是否、电影、插曲、是否、电影、搭错车”等词。以便于后续计算词的词向量,并根据相关的词向量确定当前查询词与文本的语义相似度,进而确定与当前查询词相匹配的查询目标。后文将详细进行描述。
在一个示例中,还可以记录获得的关联查询词经分词操作后每个词出现的次数。仍以上一示例中的例子为例,可以对关联查询词“是否电影插曲是否电影搭错车”进行分词操作,并记录“是否”出现的次数为2,“电影”出现的次数为2,“插曲”出现的次数为1,“搭错车”出现的次数为1。
词向量的计算可以采用本领域技术人员已知的任何方法来实现,例如,在一个示例中,可以根据word2vec模型计算关联查询词经分词操作后获得的词的词向量。word2vec模型一种是通过神经网络机器学习算法来训练N-gram语言,并在训练过程中计算词所对应的向量的方法。基于前述关联查询词及分词操作后获得的词,利用word2vec模型可以通过计算得到各所述词的词向量。
本实施例是针对“关联查询词”进行分词并计算词向量,因此,所计算的词向量能够体现针对相同查询目标的查询词之间的关联性,后续再基于这些词向量来进行语义相似度的确定,就能使得所确定的语义相似度准确性更高,提高查询词与查询目标之间的匹配度。
在一个示例中,可以根据通过上述关联查询词确定的词向量,确定当前查询词中各词的词向量,以及与待匹配的查询目标相对应的文本中包含的词的词向量。例如,如果当前查询词为“是否”,查询目标(例如《是否》这首歌的MV)的标题(即文本)为“电影插曲是否”,可以将前文得到的关联查询词“是否电影插曲是否电影搭错车”中相应的词“是否“的词向量,作为当前查询词“是否”的词向量,将“电影”、“插曲”、“是否”的词向量,作为文本“电影插曲是否”分词后得到的词“电影”、“插曲”、“是否”的词向量,以用于语义相似度的计算。举例来说,当用户输入当前查询词“是否”时,可以通过例如文本匹配的手段将其匹配到包含该当前查询词中的词的语料库,再根据该语料库中的关联查询词中各词的词向量,确定该当前查询词的各词的词向量。而文本中各词的词向量,可以事先根据各个语料库中关联查询词中各词的词向量进行确定。
在一个示例中,步骤S105的一种示例性的具体实现方式如下:在文本中,选择当前查询词中的各词以及位于该当前查询词中各词附近的词,根据当前查询词中各词的词向量,以及文本中所选择的词的词向量,确定当前查询词与文本的语义相似度。
在一个示例中,在文本中,选择所述当前查询词中的各词以及位于该当前查询词中各词附近的词可以采用如下方式进行选择,例如,查询词为Q=<a,f>,文本为S=<a,b,d,e,f,c,h,i,j,d>,在文本S中选择查询词Q中的各词以及位于查询词Q中各词附近的词,可以是选择a和f以及a和f附近的词,比如a,b,e,f,c,如图2所示。再例如,查询词为Q=<b,f>,文本为S=<a,b,d,e,f,c,h,i,j,d>,则在文本S中所选择的词可以是a,b,d,e,f,c。其中,“附近”可以是根据需要选择的附近预定数量的词(例如左右各1-3个),本发明对此不做限制。
通过选择文本中当前查询词中的各词以及位于该当前查询词中各词附近的词,相当于只选择了文本中与当前查询词关联性最高的词,排除了文本中与当前查询词关联性不高的一部分词,由此可以减少后续语义相似度计算的计算量,提高计算效率,有利于针对较长文本的计算,同时也能够排除不相关词的干扰,提高计算精度,真正反映当前查询词和文本之间在语义上的相似度。
在一个示例中,可以计算当前查询词中包含的全部词的词向量的加权和,作为第一加权向量;计算文本中所选择的词的词向量的加权和,作为第二加权向量;计算第一加权向量和第二加权向量的夹角的余弦值,作为当前查询词与文本的语义相似度。
举例来说,针对某一查询目标,当前查询词为Q=<q1,q2,…qi,…qm>,与待匹配的查询目标(例如多个待匹配的视频中的一个)相对应的文本(例如视频的标题、简要描述等)为S=<s1,s2,…sj,…sn>,其中,Q为当前查询词;qi为查询词经分词操作后获得的第i个词,m为当前查询词Q中词的总个数;S为与待匹配的查询目标相对应的文本;sj为所述文本经分词操作后获得的第j个词,n为文本S中词的总个数,i和j为词的序数,文本中的词可以包括查询词中的所有词或者一部分词。可计算Q中包含的全部词q1,q2,…qi,…qm的词向量的加权和,作为第一加权和vec(Q),计算S中如上文所选择的词的词向量的加权和,作为第二加权和vec(S),计算第一加权向量和第二加权向量的夹角的余弦值,作为当前查询词与所述文本的语义相似度。
本领域技术人员可以根据需要或者统计经验来确定上述求加权和中使用的加权系数,以下给出一种确定加权系数的示例性方式。
在一个示例中,可以根据以下公式(1),确定针对当前查询词Q中的词qi的加权系数:
其中,idf(qi)为当前查询词Q中的词qi的加权系数;DOC_NUM为文本的总数量;为词qi在所述关联查询词中出现的次数。
根据以下公式(2),确定所述第一加权向量vec(Q):
也就是对qi进行加权求和,其中idf(qi)已利用公式(1)计算获得,qi为前述计算得到的词qi的词向量。
根据以下公式(3),确定针对文本S中所选择的词sj的加权系数:
其中,idf(sj)为文本S中所选择的词sj的加权系数;DOC_NUM为所述文本的总数量,为词sj在关联查询词中出现的次数。
根据以下公式(4),确定所述第二加权向量vec(S):
也就是对sj进行加权求和,其中idf(sj)已利用公式(3)计算获得,sj为前述计算得到的词sj的词向量。k为文本S中所选择的词的总个数。
本领域技术人员可以根据需要来设置文本的总数量DOC_NUM的统计范围。举例来说,文本的总数量DOC_NUM可取决于相对应的待匹配的查询目标的总数量,待匹配的查询目标可以从服务器中存储的全部内容中选取,也可以从预先通过人工或机器筛选出的待匹配的查询目标的集合中选取,本发明对此不做限制。的统计范围也可以根据需要进行设置,举例来说,可以在针对同一查询目标的关联查询词范围内统计词qi出现的次数,比如说,如上文所述,当用户输入当前查询词时,可以通过例如文本匹配的手段将其匹配到包含该当前查询词中的词的语料库,再在该语料库中统计和
可以根据已计算获得的所述第一加权向量和所述第二加权向量,通过如下计算二者的夹角的余弦值的方式来确定当前查询词Q与所述文本S的语义相似度,即
similarity(Q,S)=cos(vec(Q),vec(S))
其中,similarity(表示当前查询词Q与文本S的语义相似度,cos(vec(Q),vec(S))表示第一加权向量和第二加权向量的夹角的余弦值。
本领域技术人员还可以采用其他已知的可以计算得到当前查询词与所述文本之间的语义相似度的方法来计算二者之间的语义相似度,例如通过计算第一加权向量和第二加权向量之间的欧式距离来确定语义相似度等,本发明对此不作限制。
在一个示例中,可以根据已确定的语义相似度,从所述待匹配的查询目标中确定与所述当前查询词相匹配的查询目标。具体地,可以根据已确定的语义相似度,从待匹配的查询目标中确定语义相似度最高的一个或多个查询目标推荐给用户。
实施例2
图3示出根据本发明另一实施例的查询目标匹配装置的结构图。该装置可用于实现实施例1中方法各步骤的操作,与实施例1相对应的示例的描述可参见实施例1,这里不再重复描述。如图3所示,该查询目标匹配装置300主要包括:
获取模块301,用于获取针对相同查询目标的关联查询词;
分词模块302,用于对所述关联查询词进行分词操作,以获得词;
计算模块303,用于计算各所述词的词向量;
词向量确定模块304,用于根据所述词向量,确定当前查询词中各词的词向量,以及与待匹配的查询目标相对应的文本中包含的词的词向量;
相似度确定模块305,用于根据当前查询词中各词的词向量以及与待匹配的查询目标相对应的文本中包含的词的词向量,确定当前查询词与所述文本的语义相似度;
匹配查询目标确定模块306,根据所确定的语义相似度,从所述待匹配的查询目标中确定与所述当前查询词相匹配的查询目标。
在一个示例中,所述获取模块可以包括:第一获取子模块,用于获取相同用户连续输入的查询词,作为所述关联查询词。
在一个示例中,所述获取模块可以包括:第二获取子模块,用于获取不同用户针对相同的查询目标输入的查询词,作为所述关联查询词。
在一个示例中,所述相似度确定模块可以包括:选择单元,用于在所述文本中,选择所述当前查询词中的各词以及位于所述当前查询词中各词附近的词;确定单元,用于根据当前查询词中各词的词向量,以及所述文本中所选择的词的词向量,确定当前查询词与所述文本的语义相似度。
在一个示例中,所述确定单元可以包括:第一加权向量计算单元,用于计算所述当前查询词中包含的全部词的词向量的加权和,作为第一加权向量,第二加权向量计算单元,用于计算所述文本中所选择的词的词向量的加权和,作为第二加权向量;相似度计算单元,用于计算所述第一加权向量和所述第二加权向量的夹角的余弦值,作为当前查询词与所述文本的语义相似度。
在一个示例中,所述第一加权向量计算单元可以用于:
根据以下公式(1),确定针对当前查询词Q中的词qi的加权系数:
其中,idf(qi)为当前查询词Q中的词qi的加权系数;DOC_NUM为所述文本的总数量,为词qi在所述关联查询词中出现的次数;
根据以下公式(2),确定所述第一加权向量vec(Q):
m为当前查询词Q中词的总个数;
所述第二加权向量计算单元可以用于:
根据以下公式(3),确定针对所述文本S中所选择的词sj的加权系数:
其中,idf(sj)为所述文本S中所选择的词sj的加权系数;DOC_NUM为所述文本的总数量,为词sj在所述关联查询词中出现的次数;
根据以下公式(4)确定所述第二加权向量vec(S):
k为所述文本S中所选择的词的总个数。