图片发自简书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 生成的电影名称特征全连接,生成最后的特征集
学习资料:
《中文自然语言处理入门实战》
蜗牛回头会把代码加上,敬请期待