传统的搜索文本相关性模型,如BM25通常计算Query与Doc文本term匹配程度。由于Query与Doc之间的语义gap, 可能存在很多语义相关,但文本并不匹配的情况。为了解决语义匹配问题,出现很多LSA,LDA等语义模型。随着深度学习在NLP的应用,在IR和QA(问答系统)中出现了很多深度模型将query和doc通过神经网络embedding,映射到一个稠密空间的向量表示,然后再计算其是否相关,并取得很好的效果。本文调研了微软,IBM Waston实验室、Google等在这方面的一些工作,并介绍我们在淘宝搜索上做的些工作。
1.DSSM、CDSSM,LSTM-DSSM及相关系列工作
微软的DSSM及相关系列模型是深度语义模型中比较有影响力的。集团内PS上有DSSM分布式实现,而且也有多业务应用.
DSSM首先将query和doc表示成一个高维且稀疏的BOW向量,向量的维度即词典的大小,每一维表示该term在query或doc中出现的频次;如果向量每一位直接用单词,会出现维度非常高,而且对一些未登录词无法处理。作者做了一个非常有用的trick word-hash: 将每个单词表示成一个letter-tri-gram的序列, 例如:boy切分成#-b-o, b-o-y, o-y-#, 然后再表示成letter-tri-gram向量。把每个单词向量累加起来即表示整段文本的向量。
然后,通过几层全连的网络连接将这个高维稀疏向量压缩成一个稠密低维向量,在这个向量空间内,通过计算query与doc向量的cosin相似度来衡量相关程度。训练的目标是对同一query下取1个点击doc作为正样本, 随机4个未点击doc作为负样本,让正负样本的区分尽可能大:
由于DSSM对文本embedding时没有考虑term的顺序信息,又陆续提出了采用Convolution和LSTM对文本embedding,可以保留词序信息。其中,Convolution是实现方式通过对query或doc用固定大小滑动窗口取片段,对每个片段内文本用word-hash+dnn压缩, 然后取max-pooling表示整个query或doc向量。
网友评论