1 概述
- 作者提出了一个 Deep Cooperative Neural Networks(DeepCoNN)的模型,该模型由耦合在最后一层的两个并行神经网络组成,其中一个神经网络使用用户撰写的评论对用户的行为进行建模,另一个神经网络使用物品得到的评论信息对物品的特性进行建模,最后一层将两个并行神经网络分别得到的 x u x_u xu和 y i y_i yi拼接成一个向量 z z z,最后利用Factorization Machine (FM)来捕捉用户行为和物品属性的特征以及他们之间的成对交互联系。
2 创新点
- DeepCoNN 是第一个使用神经网络从评论中联合建模用户和项目的网络。
- DeepCoNN 使用预训练的词嵌入技术从评论中提取语义信息来表示评论文本,而非其他论文通常会使用的bag-of-words技术,词嵌入技术保留并考虑了文本中词语的顺序信息。
- DeepCoNN 可以根据训练数据的大小进行扩展,并且由于它基于 NN,因此可以轻松地使用新数据进行训练和更新。
3 实验结果
- 在多个数据集上平均8.3%的准确率提升。
- 实验结果表明,对于评论或评分很少的用户和项目,DeepCoNN 比 MF 获得更多的 MSE 减少。 特别是当只有一个评论可用时,DeepCoNN 获得了最大的 MSE 减少。 因此,它验证了 DeepCoNN 可以有效地缓解数据稀疏问题。
4 论文复现
4.1 Environments
- python 3.8
- pytorch 1.70
4.2 Dataset
-
首先进行数据集的下载与预处理:评论信息有关的数据集下载链接:
http://deepyeti.ucsd.edu/jianmo/amazon/categoryFilesSmall/Digital_Music_5.json.gz
-
下载之后放置路径为
data/Digital_Music_5.json.gz
-
然后运行数据预处理程序对评论信息数据集进行预处理:
python preprocess.py
-
处理之后产生train.csv,valid.csv 和 test.csv三个文件。
-
下载预先训练好的词向量文件:
https://nlp.stanford.edu/data/glove.6B.zip
-
下载之后放置路径为
embedding/glove.6B.50d.txt
4.3 代码解析
preprocess.py: 对数据集进行预处理的代码,需要提前单独运行
config.py: 对各种网络参数的调整以及读取文件的路径都在此文件中进行
model.py: 定义了DeepCoNN的网络结构
utils.py: 过程中需要用到的一些工具函数
main.py: 包含训练和测试过程的主函数
着重来看一下model.py中的内容,model的定义分为三个部分:
- class CNN(nn.Module)
# 定义了分别处理用户评论和物品评论的单个CNN的结构