2020美赛C题总结一:电商评论情感分类
由于是第一次参加美赛,没有经验,这里记录一下这次比赛的一些细节、使用的算法和比赛经验
审题
题目和数据网上应该都有,首先看到题目后我第一个想到的是自然语言处理(nlp),自然语言处理中的一项重要处理就是情感分析(Sentiment Analysis),情感分析与这题的文本评论内容的转化密切相关。在这个题目中我们可以使用nlp将评论分成五个等级,对应着评星的五个等级,这是因为我们的数据集主要来源于斯坦福网络分析项目 SNAP,该数据集也是来自亚马逊很多商品的评论和对应的评星。下面会给出该数据集的下载链接,对人工智能和自然语言处理感兴趣的同学可以自己练练。
再仔细研究题目后,我们发现最难的是怎么将自然语言处理和本题用一个可以解释的理由结合起来:
- 数据里已经给了相应的评星等级,我们为什么要画蛇添足地再将评论转化为1~5的数字呢?
- 我们的数据集来自很多商品的评论,但是是否可以评价题目中的奶嘴、电吹风、微波炉呢?
- 应该用一个什么样的评价模型来结合这些属性?
接下来我们就给出每个问题一个比较合理的解释(当然也可能不合理,毕竟时间只有四天)
文本情感分类
为什么要画蛇添足地硬凑上nlp呢?在我看来,用好了这可以是一个创新点,用不好可能就是整个模型的败笔。
在我仔细观察题目给出的数据后,我发现有些用户给出的评星和评论的内容不太一致,比如有些顾客分数是4星,但是评论里却把这个商品说的一无是处,这样也是正常的,因为存在有的顾客评星没有那么狠,所以导致评星和评论的分数不一致。那么有这个理由我们就可以使用npl对评论进行自动评分了。
并且在了解了某宝的商家信誉制度后,我发现他们好像只是根据用户评星来判断商家的信誉度的增加或减少,而评论对信誉度的影响往往是通过人工抽查来完成的。当然这些因为时间问题没有写进论文。。。
算法实现:
这个算法的实现需要有一定的python基础和机器学习、深度学习的基础,我大概说一下用到的模型,主要思路是用循环神经网络,一开始构思的是短文本(评论head)用TextCNN,长文本用BiLSTM,但是由于时间问题,最后都用的是BiLSTM
对了,数据集链接:点开就会自动下载,很大
循环神经网络RNN
RNN是神经网络的一种,用于解决训练样本输入是连续的序列,且序列的长短不一的问题,比如基于时间序列的问题。基础的神经网络只在层与层之间建立了权连接,RNN最大的不同之处就是在层之间的神经元之间也建立的权连接。RNN神经网络的结构如下:
LSTM
Long Short Term (LSTM)是一种 RNN 特殊的类型,可以学习长期依赖信息。在很多问题,LSTM 都取得相当巨大的成功,并得到了广泛的使用。 LSTM 通过刻意的设计来避免长期依赖问题。记住长期的信息在实践中是 LSTM 的默认行为,而非需要付出很大代价才能获得的能力! 所有 RNN 都具有一种重复神经网络模块的链式的形式。在标准的 RNN 中,这个重复的模块只有一个非常简单的结构,例如一个 tanh 层。LSTM 同样是这样的结构,但是重复的模块拥有一个不同的结构。不同于 单一神经网络层,这里是有四个,以一种非常特殊的方式进行交互。
训练过程:
首先分析一下数据集,如下图所示:
可以看到该数据集是经过整理的,可以直接使用。
我们用的是PyTorch框架,下面是网络的结构,有需要的同学可以找我要baseline
在2080Ti上训练五个小时的准确度和loss:
可以看出是有点过拟合的,但是由于时间原因也没有来得及优化。
部分预测结果如上,可以看出预测结果和用户得评星还是有所不同的,比如I‘m an IDIOT,但从这条评论可以看出顾客应该是很不满意的,但是他却给了三星,算是一个中评,按理来说应该是一到两分得中评。所以说总体来说这个模型还有意义和价值的,再继续优化的话应该可以应用在实际生活中
最后商家信誉度评价模型下一次再写