DSSM模型

DSSM模型可以生成item的语义向量,再推荐系统中经常再召回环节使用,很经典的一个召回模型。它的关键点:

1.用 word hashing将输入的高维向量先变换到了比较低维的向量,这种方式对于业界来说是很不错的,因为通常我们的词库或者物品集是很大的,如果我们用很高维的向量直接输入 那模型训练的压力就太大了。word hashing就是一层的线性映射

2. 使用的有监督学习方法。以推荐为例,输入特征有物品特征 用户特征 然后标签为用户下一刻点击的物品,负样本从非正样本的item随机抽取。得到用户和物品的语义向量,计算语义向量的余弦相似度,余弦相似度进行映射作为预测结果,物品是否是下一刻点击物品用0和1标识真实结果,然后损失函数二分类损失函数

3.我们通常会取模型中的语义向量出来作为物品的语义向量,用于召回任务。

论文中的模型图

推荐系统中的召回结构

这块的理解就到这里了,自己实际项目中没有用到,就不再细究DSSM模型如今其他的变种了。

参考博客:

安全验证 - 知乎知乎,中文互联网高质量的问答社区和创作者聚集的原创内容平台,于 2011 年 1 月正式上线,以「让人们更好的分享知识、经验和见解,找到自己的解答」为品牌使命。知乎凭借认真、专业、友善的社区氛围、独特的产品机制以及结构化和易获得的优质内容,聚集了中文互联网科技、商业、影视、时尚、文化等领域最具创造力的人群,已成为综合性、全品类、在诸多领域具有关键影响力的知识分享社区和创作者聚集的原创内容平台,建立起了以社区驱动的内容变现商业模式。https://zhuanlan.zhihu.com/p/501175875 

 安全验证 - 知乎知乎,中文互联网高质量的问答社区和创作者聚集的原创内容平台,于 2011 年 1 月正式上线,以「让人们更好的分享知识、经验和见解,找到自己的解答」为品牌使命。知乎凭借认真、专业、友善的社区氛围、独特的产品机制以及结构化和易获得的优质内容,聚集了中文互联网科技、商业、影视、时尚、文化等领域最具创造力的人群,已成为综合性、全品类、在诸多领域具有关键影响力的知识分享社区和创作者聚集的原创内容平台,建立起了以社区驱动的内容变现商业模式。https://zhuanlan.zhihu.com/p/581196508

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个使用Microsoft Research Paraphrase Corpus DSSM模型进行语义匹配的代码示例: ``` import tensorflow as tf import numpy as np # 加载训练好的DSSM模型 model = tf.keras.models.load_model('msrp_dssm.h5') # 定义两个文本输入 text_a_input = tf.keras.Input(shape=(None,), dtype=tf.int32, name='text_a_input') text_b_input = tf.keras.Input(shape=(None,), dtype=tf.int32, name='text_b_input') # 将文本转换为词向量 embedding_layer = model.layers[0] text_a_embedding = embedding_layer(text_a_input) text_b_embedding = embedding_layer(text_b_input) # 计算两个文本的余弦相似度 similarity_layer = model.layers[1] similarity = similarity_layer([text_a_embedding, text_b_embedding]) # 创建模型 msrp_dssm = tf.keras.Model(inputs=[text_a_input, text_b_input], outputs=similarity) # 测试样例 text_a = 'The company is doing well.' text_b = 'The business is doing great.' text_a_tokens = [token for token in text_a.split()] text_b_tokens = [token for token in text_b.split()] # 将文本转换为词向量序列 text_a_sequence = np.array([embedding_layer.get_config()['input_dim'] + 1] + [embedding_layer.get_config()['word_index'][token] for token in text_a_tokens]) text_b_sequence = np.array([embedding_layer.get_config()['input_dim'] + 1] + [embedding_layer.get_config()['word_index'][token] for token in text_b_tokens]) # 对文本进行padding操作 max_sequence_length = max(len(text_a_sequence), len(text_b_sequence)) text_a_sequence = np.pad(text_a_sequence, (0, max_sequence_length - len(text_a_sequence)), 'constant') text_b_sequence = np.pad(text_b_sequence, (0, max_sequence_length - len(text_b_sequence)), 'constant') # 预测两个文本的相似度 similarity_score = msrp_dssm.predict([np.array([text_a_sequence]), np.array([text_b_sequence])])[0][0] print('文本A:', text_a) print('文本B:', text_b) print('相似度得分:', similarity_score) ``` 这个代码示例包含以下步骤: 1. 加载训练好的DSSM模型。 2. 定义两个文本输入。 3. 将文本转换为词向量。 4. 计算两个文本的余弦相似度。 5. 创建模型。 6. 测试样例。 7. 将文本转换为词向量序列。 8. 对文本进行padding操作。 9. 预测两个文本的相似度。 10. 输出相似度得分。 你可以将上述代码示例保存为.py文件,然后使用Python解释器运行它。当你运行代码时,它将输出相似度得分,表示两个文本的语义相似度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值