传统做法:
1.直接根据关键词检索或 BM25 等算法计算相关性排序
缺点:
需要维护大量的同义词典库和匹配规则
机器学习做法:
1.潜在语义分析技术(Latent Semantic Analysis,LSA):将词句映射到低维连续空间,可在潜在的语义空间上计算相似度。
2.PLSA(Probabilistic Latent Semantic Analysis)或者LDA(Latent Dirichlet Allocation)等浅层主题模型技术方向。
优点:对文本的语义表示形式简洁,较好地弥补了传统词汇匹配方法的不足
缺点:无法完全替代基于字词的匹配技术
深度学习:
基于神经网络训练的 Word2vec来进行文本匹配计算
缺点:
无监督的 Word2vec 在句子匹配度计算的实用效果上还是存在不足,而且本身没有解决短语、句子的语义表示问题
句子级别上的神经网络语言模型:DSSM 模型(Deep Structured Semantic Model)
基于二维交互匹配的卷积匹配模型
多视角循环神经网络匹配模型(MV - LSTM)
基于矩阵匹配的的层次化匹配模型 MatchPyramid
虽然模型的结构非常多种,但底层结构单元基本以全链接层、LSTM、卷积层、池化层为主
ps:我在9月底看过不错的论文:
Attentive Pooling Networks:这篇论文需要的语料需要正负对的形式,也就是pair - wise。
Siamese Recurrent Architectures for Learning Sentence Similarity:这篇论文需要做的是对语料进行同义句改写,对标注团队而言,工作量比较大。
语义模型训练框架——分类
一般最后一层接的是多类别的 softmax,即输入是用户 Q,分类结果是所属的标准 Q 类别。
语义模型训练框架——排序
三种类型:point - wise,pair - wise 和 list - wise。
point - wise 的方法直接把问题转换成二分类,判断当前用户问题是否属于带匹配的问题,最后根据隶属概率值可以得到问题的排序。
pair - wise 学习的是(uq,sq+)和(uq,sq-)两两之间的排序关系,训练目标是最大化正样本对和负样本对的距离:maxL=||f(uq,q+ )-f(uq,q- )||d,其中f(·)表示某种距离度量。
多轮对话
Task 任务式对话,Task(goal - driven system)是根据预定义的槽位和状态来表示上下文,并且依照某个业务逻辑的对话管理策略来引导用户到想要搜索的内容。
QA(non - goal - driven system)不是面向槽管理的,而是根据用户会话意图来调整对话过程。
在 QA 的上下文会话管理方法中,大致可分为两个方向,一个是 Rule - Based 的上下文模型;另一个是 Model - Based 的上下文模型。
Rule - Based:通过预定义一些先验知识来表示上下文,在会话中不断修改上下文的先验知识并根据上下文记录信息来重排序。
Model - Based:Model - Based 相对于 Rule - Based 的好处就是能够提升泛化能力。把上下文信息表征在向量里,并通过层次化模型来学习和推断。
该模型主要有三个结构:句子级 encoder 模型、context 级别 encoder 模型以及 response decoder 模型。
输入联想
一、Trie 树结构:在搜索中,可以把所有的候选词条建立一个字典树,然后根据用户输入的前缀到 Trie 树中检索候选集,展示给用户。
优点:简单有效,能够快速上线。
缺点:召回率较低,这是因为字典树要求用户输入的词语必须和候选集合里的短语句子要有一致的前缀。
泛化优化:例如去除掉停用词或者无意义词语等,尽可能提高召回。但提升有限。
二、point - wise 排序模型:
数据:历史曝光点击数据
模型:逻辑回归模型
特征:一类是基于 word2vec 得到的句子特征,另一类是传统的 TF - IDF 特征,最后一类是重要词汇特征(这类特征是通过数据挖掘得到的对应场景的重要词)。
优点:使用率比字典树有了明显提升,召回率大幅度提高。
缺点:线上存在很多拼音汉字混搭的case,模型没有解决能力;-用户输入的话术存在很多错别字;-联想请求场景以超短文本为主,大都集中在 2 - 6 个字 。