搜索引擎算法之Query Similarity (query relevance、查询的相似性或相关性)

本文探讨了多种Query相似性计算方法,从简单的编辑距离到基于点击数据、协同过滤、商品向量表示、深度语义网络DSSM及图计算等高级技术。详细介绍了每种方法的优缺点及应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

介绍:

      一、计算相似性的方法很多,最简单是是根据字面的编辑距离来计算相似性。例如:

      二、更近一步,很自然想到搜索点击的结果来计算两个Query的相似性。

      三、当然我们也可以借助协同过滤的方法,把query和点击item作为一个评分矩阵,按照协同过滤的方法来计算相关性。

      四、由于点击数据受到搜索结果的影响,由于排序质量的问题,点击的位置bias,有很多办法来纠正;以及部分Query的点击比较稀疏,商品的点击比较稀疏。

     五、第二种方法是用商品向量来表示Query,也有一些方法借鉴了simrank和向量的思想,用词向量来表示Query和Title。

      六、如今深度学习大行其道,Query相关性也可以用深度语义网络DSSM (cikm 2013)  https://www.cnblogs.com/baiting/p/7195998.html  。

     七、我们在推荐算法中看到,一个用户在一个session中点击的商品序列可以用来做embedding ,得到商品id到embedding vector。

      八、目前图计算有很多方法。


目录

介绍:

        一、计算相似性的方法很多,最简单是是根据字面的编辑距离来计算相似性。例如:

         二、更近一步,很自然想到搜索点击的结果来计算两个Query的相似性。

        三、当然我们也可以借助协同过滤的方法,把query和点击item作为一个评分矩阵,按照协同过滤的方法来计算相关性。

        四、由于点击数据受到搜索结果的影响,由于排序质量的问题,点击的位置bias,有很多办法来纠正;以及部分Query的点击比较稀疏,商品的点击比较稀疏。

        五、第二种方法是用商品向量来表示Query,也有一些方法借鉴了simrank和向量的思想,用词向量来表示Query和Title。

        六、如今深度学习大行其道,Query相关性也可以用深度语义网络DSSM (cikm 2013)  https://www.cnblogs.com/baiting/p/7195998.html  。

      7、我们在推荐算法中看到,一个用户在一个session中点击的商品序列可以用来做embedding ,得到商品id到embedding vector。

    8、目前图计算有很多方法。


   

介绍:

       关键词是用户使用搜索引擎的常见输入条件,但是用户在搜索的时候不仅仅是用关键词。当你在淘宝上面搜索的时候,可能通过男装、女装类目去搜索。话说当年yahoo 起家的时候就是通过类目导航,但是yahoo小看了关键词搜索,错过了成为第一大搜索引擎的机会。接着说用户在淘宝用关键词搜索之后,还可以点击各种属性、价格区间来搜索。一个完整的Query包括几个部分:关键词、类目、属性(可以有多个)、价格区间、地域限制等。如果要推荐相关Query,我们应该对整个Query去找相关Query。


      一、计算相似性的方法很多,最简单是是根据字面的编辑距离来计算相似性。例如:

           sim(QA,QB) = 编辑距离(QA->QB) / length(AB) ,显然这种计算相似性的方法误差很大。所以我们可以考虑同义词、单复数、词形还原考虑一部分同义词。但是对于精确的计算两个Query的相似性就无能为力了。

      二、更近一步,很自然想到搜索点击的结果来计算两个Query的相似性。

              例如QA有一个点击的商品集合,QB有两个点击的商品集合,用点击数量或者点击率作为商品的权重来设计一个向量,这样两个Query就可以通过cosin(vector(QA),vector(QB)) 来计算相关性。还有比较简单的方法是计算两个Query(x和y)在session 中的互信息,PMI(x,y)=p(x,y)/(p(x)*p(y))

      三、当然我们也可以借助协同过滤的方法,把query和点击item作为一个评分矩阵,按照协同过滤的方法来计算相关性。

           由于协同过滤没有考虑点击的次数信息,因此推荐词的点击次数和原始词的搜索次数、长度可能不够匹配,还需要很多方法来纠正。

      四、由于点击数据受到搜索结果的影响,由于排序质量的问题,点击的位置bias,有很多办法来纠正;以及部分Query的点击比较稀疏,商品的点击比较稀疏。

         例如simrank,simrank++(http://www.vldb.org/pvldb/1/1453903.pdf)等算法。

         前阿里妈妈的yangxudong 文章里面有mapreduce 的实现:https://blog.youkuaiyun.com/yangxudong/article/details/24788137 。主要是基于分块矩阵的计算。实现中利用二次排序,做了不少优化。

      另外git hub 上面有两个代码:

(1)https://github.com/thunderain-project/examples  其部分代码无法通过编译。

(2)https://blog.youkuaiyun.com/dengxing1234/article/details/78933187  编译通过,少量数据可以通过编译,大量数据还无法跑得结果。

 

      五、第二种方法是用商品向量来表示Query,也有一些方法借鉴了simrank和向量的思想,用词向量来表示Query和Title。

       例如yahoo研究院的这篇论文《Learning Query and Document Relevance from a Web-scale Click Graph》。

       六、如今深度学习大行其道,Query相关性也可以用深度语义网络DSSM (cikm 2013)  https://www.cnblogs.com/baiting/p/7195998.html  。

把Query 先和Title 先分别用word hash 到一个3万维的空间,然后一层层embedding 到一个128维的向量, 最后可以简单的用cosin来计算相似性。

 

      七、我们在推荐算法中看到,一个用户在一个session中点击的商品序列可以用来做embedding ,得到商品id到embedding vector。

           同时我们可以可以考虑把用户在一个session中输入的Query当成序列来做embedding 。按照这个思路找了一下论文,果然2018年有人用这个想法写了论文。《Querying Word Embeddings for Similarity and Relatedness》http://aclweb.org/anthology/N18-1062

       We tested vector spaces with varying dimensionalities (dim=100/200/300) and number of context words (win=3/6/10), as well as minimum occurrence cutoff (min=1/5), negative samples (neg=1/5) and iterations (iter=1/5). These variations were tested to ensure the observed patterns reported in the experiments, but we report numerical results only for best performing models. In particular, higher dimensional vectors with dim=300 produced consistently better alignment with human scoring data. We also found min=1, neg=5 and iter=5 to be the optimal parameter settings across all experiments.

    八、目前图计算有很多方法。

                我们尝试了用node2vec的方法来计算Query的相似性,也取得了非常好的效果。即把query和item 的二部图上面做node2vec。

                另外准备尝试用阿里妈妈的euler平台里面的图embedding方法来计算节点之间相关性。

 

 

### DRRM算法的研究论文与实现方法 #### 背景概述 分布式表示模型(如DSSM)通过将文本映射到低维连续空间来捕捉语义相似性,在许多场景下表现出色[^1]。然而,这类方法在处理某些特定类型的查询时存在局限性,尤其是在面对长尾查询或复杂匹配需求的情况下。因此,局部交互(Local Interaction)方法被引入以弥补这些不足。 #### Deep Relevance Matching Model (DRRM) 的核心概念 DRRM是一种基于深度学习的文本匹配框架,旨在融合局部特征和全局分布特征的优势。其主要目标是解决传统分布式表示无法有效建模细粒度词级匹配的问题。具体而言: - **输入层设计** DRRM接受两个输入序列:一个是查询Query),另一个是文档(Document)。这两个序列会被分别编码为向量形式以便后续处理[^2]。 - **嵌入层** 查询中的每个单词以及文档中的每个单词都会经过预训练好的词嵌入矩阵转换成固定长度的稠密向量。这一过程能够保留词语的部分语义信息[^3]。 - **交叉交互模块** 这一模块用于捕获查询与文档之间潜在的关系模式。它会计算每一对查询词和文档词之间的相似度得分,并形成一个二维注意力热图。此操作有助于发现哪些部分最相关。 - **聚合函数** 随后利用卷积神经网络或其他池化机制提取高层次特征并压缩原始热度图数据至单一数值作为最终预测分数输出。 以下是简化版伪代码展示如何构建这样一个系统: ```python import tensorflow as tf def drrm_model(query, doc): embedding_layer = tf.keras.layers.Embedding(input_dim=vocab_size, output_dim=embedding_dim) query_embedded = embedding_layer(query) doc_embedded = embedding_layer(doc) similarity_matrix = compute_similarity(query_embedded, doc_embedded) convolved_features = apply_convolution(similarity_matrix) relevance_score = dense_network(convolved_features) return relevance_score ``` 上述代码片段展示了从获取嵌入到最后得到相关性的基本流程。 #### 应用领域与发展前景 由于其强大的表达能力和灵活性,DRRM已被广泛应用于搜索引擎优化、推荐系统等领域。未来研究方向可能涉及更高效的架构设计、更大规模的数据集支持等方面进一步提升性能表现。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值