中文NLP笔记:8. 基于CNN的推荐系统

2019-02-20 16:33:18 浏览数 (1)

图片发自简书App

推荐系统

推荐系统

  用途

  对用户而言:可以找到感兴趣的东西,发现新鲜的事物。

  对商家而言:可以提供个性化服务,提高信任度和粘性,增加营收。


  主要有两类

  基于用户的推荐系统(UserCF)

    给用户推荐那些和他有共同兴趣爱好的用户喜欢的商品

  基于物品的推荐系统(ItemCF)

    给用户推荐那些和他之前喜欢的商品类似的商品


CNN

  常用于图像识别问题,效果不错

  CNN 如何应用到 NLP 中

  矩阵的每一个行向量代表一个 Token

  如果一段文字包含有 n 个词,每个词有 m 维的词向量,那么可以得到一个 n*m 的词向量矩阵

  在任务过程中,使得过滤器宽度和矩阵宽度保持一致整行滑动。


基于 CNN 的电影推荐系统

  1. 定义用户嵌入矩阵

  将 UserID、MovieID、性别、年龄、职业特征转成数字类型

  网络的第一层就使用嵌入层,维度(N,32)和(N,16)

  然后进行全连接层,维度变成(N,128)

  再进行全连接层,维度变成(N,200)

  3. 定义电影 ID 嵌入矩阵

  输入电影 ID 和电影类型

    一个电影可以属于多个类别,电影类型从嵌入矩阵索引出来之后是一个(N,32)的矩阵,再经过矩阵求和,变成(1,32)形状,这样使得电影的类别信息不会丢失。

  4. 文本卷积神经网络

  在电影文本特征矩阵中,矩阵的每一个行构成的行向量代表一个 Token,会得到一个 n*m 的矩阵

  NLP 处理过程中,有多个不同大小的过滤器串行执行,且过滤器宽度和矩阵宽度保持一致,是整行滑动

  卷积操作之后采用了ReLU 激活函数

  再采用最大池化操作

  最后通过全连接并 Dropout 操作和 Softmax 输出

  对电影名称做 CNN 处理

  从嵌入矩阵中得到电影名对应的各个单词的嵌入向量

  过滤器大小使用时,就选择2、3、4、5长度

  对文本嵌入层使用滑动2、3、4、5个单词尺寸的卷积核做卷积和最大池化

  5. 电影各层做一个全连接层

  前面已经生成了电影ID特征,类型特征,电影名特征

  再通过2个全连接层

    第一个全连接层是电影 ID 特征和电影类型特征先全连接

    再和 CNN 生成的电影名称特征全连接,生成最后的特征集


学习资料:

《中文自然语言处理入门实战》

蜗牛回头会把代码加上,敬请期待

0 人点赞