NLP技术在搜索中的应用方向
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NLP技术在搜索中的应用方向相关的知识,希望对你有一定的参考价值。
参考技术A一、引言
对于电商企业来说,搜索功能是其重中之重。这是买家进行购买的最便捷有效的途径。因此我们的搜索引擎也是公司最重要的产品。而搜索的关键是什么呢,自然是能够在第一时间明确用户的意图并给出与之相匹配的商品结果。所以怎么才能更好的理解用户,怎么能够在最快的时间内给到用户想要的结果,这便是我们在搜索实践中一直探讨优化的方向与目标。本文基于这一个月的进展做一个词向量在召回中的运用分析。
二、什么是词向量
在聊 Word2vec 之前,先聊聊 NLP (自然语言处理)。NLP 里面,最细粒度的是 词语,词语组成句子,句子再组成段落、篇章、文档。所以处理 NLP 的问题,首先就要从最基础的词语开始。
举个简单例子,判断一个词的词性,是动词还是名词。用机器学习的思路,我们有一系列样本(x,y),这里 x 是词语,y 是它们的词性,我们要构建 f(x)->y 的映射,但这里的数学模型 f(比如神经网络、SVM)只接受数值型输入,而 NLP 里的词语,是人类的抽象总结,是符号形式的(比如中文、英文、拉丁文等等),所以需要把他们转换成数值形式,或者说——嵌入到一个数学空间里,这种嵌入方式,就叫词嵌入(word embedding)。
one-hot 是可认为是最为简单的词向量,但存在维度灾难和语义鸿沟等问题;通过构建共现矩阵并利用 SVD 求解构建词向量,则计算复杂度高;而早期词向量的研究通常来源于语言模型,比如 NNLM 和 RNNLM,其主要目的是语言模型,而词向量只是一个副产物。
如上图的NNLM模型(2003年推出),它是为了计算某个句子出现的概率,我们可以加入相应的先验知识,用贝叶斯公式表示则是
将输入语料进行分词,并向量化(随机初始化成为一个N维的向量),然后将他们拼接起来作为输入,经过神经网络计算后预测出下个词是目标词的概率,通过反向传播优化模型参数后,我们不但得到了一个能够预测句子出现概率的模型,也得到了一份 词向量,****相同上下文语境的词有相似语义,词与词之间的关联得到了极大的提升。 而由此引申出了 Word2vec、FastText,在此类词向量中,虽然其本质仍然是语言模型,但是它的目标并不是语言模型本身,而是词向量,其所作的一系列优化,都是为了更快更好的得到词向量。GloVe 则是基于全局语料库、并结合上下文语境构建词向量,结合了 LSA 和 Word2vec 的优点。(当然词向量模型远不止这些,其他模型和衍生场景这里不展开阐述,可以作为后续的专题进行分析)
如上图是我使用fasttext对天龙八部小说训练出的词向量模型,可以明显看出其中的人物集团之间的关系,这便是词向量之间的语义聚合效果,它的出现对于NLP后续的任务效果(如文本分类、NER、翻译等)都带来了极大的提升。
三、词向量在召回模型中的运用
随着平台用户体量和商品SKU的不断扩大,用户对于搜索场景的依赖也越来越大,提升召回率便是其中重要的一环,对此我们设计了一套方案,即利用词向量构建query语义表征,考虑到对未登录词的兼容性,这里使用了fasttext进行了词向量的训练。通过相似度计算和query热度加权推测无结果query的候选query集合,利用faiss进行在线实时高速计算,结合产品的优化实现对无结果query的再次召回,线上再结合多臂机的选择策略进一步提升容错和纠错能力。
我们分析整理了平台历史所有的query语料数据,结合商品描述信息使用迭代和半人工的方式优化了自有词库,在特征处理过程中,针对中英文分别做了处理,如英文增加了编辑距离纠错,中文由于短文本信息较少使用了单字进行切割等,针对性的进行了文本处理,相应的归一化了词分布,提升了部分模型训练效果。
训练参数如下:
query候选集预测结果部分如下,可以看到在没有做其他优化的前提下已经产生了一定的效果,后续我们还可以加入更多的策略进行融合进一步满足业务的场景:
四、未来的想象空间
针对平台业务及搜索场景,NLP还会有很多的结合点。
比如:
1.对query做分类预测,我们可以预测每个query词的类目意图,品牌意图等,减少关键词搜索的歧义影响。
2.搭建我们自己的NER命名实体模型,引导搜索的方向及准度
3.针对海外市场,如何更好的利用国内积累下的搜索源数据,通过机器翻译的方式打通语言的壁垒
4.作为个性化排序模型中的语义特征搭建完善个性化模型
5.为运营及市场做用户热度挖掘及监控等
NLP作为人工智能技术的掌上明珠,虽然还处于刚起步和不断完善的阶段,但是只要合理运用好并能搭配其他策略进行完善,相信还有很多的价值等待我们去挖掘。
以上是关于NLP技术在搜索中的应用方向的主要内容,如果未能解决你的问题,请参考以下文章