文本匹配-dssm
2021/7/19 23:35:35
本文主要是介绍文本匹配-dssm,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- 论文链接地址
- github
- 前言
- 整体模型结构
- 输入层
- 表示层
- 匹配层
- 训练阶段
- 优缺点
- 模型改进
- 欢迎指正
论文链接地址
Learning Deep Structured Semantic Models for Web Search using Clickthrough Data
github
https://github.com/KATEhuang920909/deep_text_match
前言
传统文本相似性如BM25、tf-idf等,无法发现语义的query-doc相似对,因此DSSM为计算语义相似度提供了一种方法。
整体模型结构
DSSM模型结构如下:
输入层
在输入层用到了word hashing操作,这里用了n-grams方式进行hash,例如trigram将boy切分:#-b-o, b-o-y, o-y-#。这样可以将将50万个单词压缩到三万个,bigram可以压缩到1607个,但是会产生更多碰撞冲突,即不同单词会用同一个n-gram形式表示,paper中做了一些统计如下:
因此作者选择了tri-gram,然后one-hot。中文可以以字为最小单位,常用字为1.5万左右,因此可以直接one-hot。
表示层
表示层为多层DNN,隐藏层神经元大小均为300,最后一层为128,激活函数tanh。
匹配层
匹配层用余弦距离得出相似分数,然后接入softmax将query和doc之间的相似性转化为一个概率值,公式如下:
,
其中,
γ
\gamma
γ为平滑引子,
D
∈
(
D
+
,
D
−
)
D \in (D^+ ,D^-)
D∈(D+,D−),D为整个样本空间,D+为正样本,D-为负样本。
训练阶段
极大似然估计
利用随机梯度下降(SGD)使模型收敛。
优缺点
DSSM用字向量,减少切词产生的误差,同时送入模型的编码方式为one-hot,最大程度上减少了基于词向量累加或者拼接这种方式所带来的误差,缺点就是未考虑语序上下文信息
模型改进
CDSSM:1.添加word-trigram,即构建大小为3的滑动窗口,然后拼接起来,维度大小为90K;2.在word-hash层后面接入卷积层和池化层,这样可以一定程度保留了上下文信息。整体结构如下:
图中feature map 为 300*1,采用max-pooling,然后接128维输出层。
优缺点: 上下文信息有效的保存,间隔较远的上下文信息无法保留
欢迎指正
这篇关于文本匹配-dssm的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-15JavaMailSender是什么,怎么使用?-icode9专业技术文章分享
- 2024-11-15JWT 用户校验学习:从入门到实践
- 2024-11-15Nest学习:新手入门全面指南
- 2024-11-15RestfulAPI学习:新手入门指南
- 2024-11-15Server Component学习:入门教程与实践指南
- 2024-11-15动态路由入门:新手必读指南
- 2024-11-15JWT 用户校验入门:轻松掌握JWT认证基础
- 2024-11-15Nest后端开发入门指南
- 2024-11-15Nest后端开发入门教程
- 2024-11-15RestfulAPI入门:新手快速上手指南