[深度学习-NLP]Imdb数据集情感分析之模型对比(贝叶斯, LSTM, GRU, TextCNN,BERT)

一,详细原理以及代码请看下面博客

1.Imdb数据集情感分析之离散贝叶斯
2.Imdb数据集情感分析之LSTM长短期记忆
3.Imdb数据集情感分析之卷积神经网络-TextCNN
4.Imdb数据集情感分析之BERT

二,贝叶斯, LSTM和TextCNN算法在文本情感分析上对比

算法 权重大小 测试集上准确率
离散贝叶斯(MultinomialNB) Count Vectorizer 938 KB 准确率: 84.326667%
离散贝叶斯(MultinomialNB) Tfidf Vectorizerr 938 KB 准确率: 85.893333%
Text CNN 5.83 MB 准确率:86.75333%
LSTM 6.08 MB 准确率: 89.83333%
Bi-directional LSTM 6.44 MB (6,754,304 字节) 准确率: 89.21%
GRU 6.00 MB (6,295,552 字节) 准确率: 90.353334%
Bi-directional GRU 6.26 MB (6,574,080 字节) 准确率: 89.88%
BERT–(HuggingFace) 417 MB 准确率: 91.46%

三,总结

离散贝叶斯是基于词与词是相互独立的,没有联系的,单是往往它们是有联系的,就比如说“明天是星期一,我要去学校”这句话,如果是按照朴素贝叶斯算法的考量,则认为“我”,“星期一”,“学校”这三个词语之间是没有联系即相互独立的,但是在现实世界中很显然这三个单词之间是有很大联系的。
Text CNN 卷积神经网络是利用固定大小的核,比如我的例子是用三个核(3, 50),(4, 50),(5, 50),但是如果在5各字之外的字有关系,那么就训练不到了。这也是相比于RNN循环神经网络,CNN的缺点,假如我们的所有的核能覆盖所有词与词的关系,那么其实一定意义上它就是RNN。
LSTM和GRU是RNN的改进版,一定程度上规避了RNN的梯度消失的问题。理论上,它可以训练到词与词之间,句子与句子之间上下文的潜在的联系。一定要加dropout,加了之后就会提高3个百分点。
双向LSTM与双向GRU在这个数据集上没有什么效果。
BERT是效果最好的, 第一个epoch就已经是90.78%,后面的epoch有点过拟合了,整个训练过程超级好资源,最好用GPU.不然要用一整天才能执行一个epoch。

你可能感兴趣的:(tensorflow)