# Short-Texts-Sentiment-Analyse
## Emotional Analysis of Chinese Short Texts with Several Methods
# 基于中文短文本的情感分析对比实验
---
情感分析的方法大概分为四类:情感词典法、机器学习方法、深度学习方法、基于预训练模型微调
接下来通过方法简介、整体思路、模型的评价指标、建模过程、结果展示与分析对以上几种方法进行介绍:
## 方法简介
1. 情感词典法:
利用人为标注或者评级过的情感字典,通过将文本进行分词,利用分词后的数据匹配字典中的值,然后直接加权或者利用词性进行加权即得到整句话的情感得分,最后根据专家经验或者数据分布,选取正、负的临界值作为模型的阈值。
2. 机器学习方法:
机器学习方法的思想是,将情感分析任务当作一个分类任务,通过将短文本转化为固定维度的向量,利用当前基于不同思想的分类器对其进行训练,通过对比测试集结果来观察不同的机器学习分类器之间的差异。
3. 深度学习方法:
深度学习是近年来较为热门的领域,其基于神经网络,利用网络的自适应学习率不断调节损失函数的值,大大减少了人工调参的复杂度,并且由于目前计算机算力水平的大幅度提升,利用GPU加速运算使得在短时间内即可得到较好的效果。比较主流的深度学习做情感分析的方法是利用长短期记忆模型来捕获句子之前的前后联系,得到相比于机器学习更好的效果,而本文从多层感知机、BP神经网络、卷积神经网络、长短期记忆神经网络以及自注意力机制模型来进行对比实验从而探索各种深度学习模型在情感分析领域的优缺点。
4. 基于预训练模型微调:
finetune是当前各类NLP任务的首选,由于2018年BERT模型刷新了各项NLP任务的最优,使得预训练模型成为目前的研究热点,最近基于自回归的XLNet又刷新了NLP任务的sota,可以看到未来的研究热点还是会集中在预训练模型。本文利用预训练好的BERT模型在情感分析领域做迁移训练,观察其效果,并对比最新的XLNet,研究两种预训练模型的优缺点。
`情感词典法的优点:`优点是建模方法简单,运算速度快,灵活多变,针对不同场景有可调的参数结构和方式。<br>
`情感词典法的缺点:`缺点是构建词典需要耗费大量人力物力,深入挖掘行业信息,迁移能力弱,即针对不同领域需要构建不同的行业情感词典,另外其模型的效果以及各类别的准确率、召回率均比较低,对于含有不同情感类别的句子分类效果很差。<br>
`机器学习的优点:`优点是相比于情感词典法,机器学习利用词向量进行建模,挖掘其特征,利用特征建模,效果较好,模型较小,并且场景容易做不同行业之间的迁移。<br>
`机器学习的缺点:`模型所需调节的参数较多,并且很多参数需要人工不断尝试,(类似kaggle,得到top1的调参基本都是玄学问题)。<br>
`深度学习方法的优点:`相比于机器学习,其模型效果更好,泛化能力更好,场景迁移能力较强,泛化能力好。<br>
`深度学习方法的缺点:`对于数据数量以及质量的要求较高,如果数据量太少,容易引发过拟合,数据质量不好模型很难收敛,并且其相比于其他方法,比较耗时。<br>
`BERT的优缺点:`<br>
`XLNet的优缺点:`<br>
---
## 整体思路
本文从数据的预处理到后续建模都将进行详细的介绍,大体分为数据的预处理(文本正则化、停用词过滤等)、样本集划分、数据的向量化表示、模型训练与保存、模型的测试指标,实验思路以及具体的代码介绍将在[建模过程](#建模过程)中详细介绍<br>
`Details:`<br>对于机器学习和深度学习中,采用8:2的比例随机抽取清洗后的数据当作训练集与验证集,并且为了同时对比它们以至于后续的预训练微调的模型效果,通过将训练集和验证集保存为json格式文件,后续直接调用json文件当作训练集和验证集即可。而对于将文本数据转化为向量表示,在机器学习和深度学习中本文对比了利用中文维基百科基于Word2Vec训练的词向量以及去年腾讯开源的900W词向量的模型效果,在finetune中使用BERT和XLNet预训练模型进行微调对比。
## 模型的评价指标
本文选取准确率(Accuracy)、平均召回率(Avg_Recall)、平均精确率(Avg_Precision)、F1值(F1_Score)作为模型的评价指标
以上各个指标通常是分类任务中评价指标的首选,下面利用混淆矩阵对以上各类指标进行简单介绍,如下所示:
|标注类别\预测类别|正向(P)|负向(N)|
|--|--|--|
| 正向(P) | TP | FN |
| 负向(N) | FP | TN |
|标注类别\预测类别|正向(P)|中向(Z)|负向(N)|
|--|--|--|--|
| 正向(P) | TP | FZ | FN |
| 中向(Z) | FP | TZ | FN |
| 负向(N) | FP | FZ | TN |
其中:<br>
Accuracy = (TP+TZ+TN)/(TP+TZ+TN+2FP+2FZ+2FN)<bR> Avg_Recall = (TP/(TP+FZ+FN) + TZ/(FP+TZ+FN) + TN/(FP+FZ+TN))/3<bR>
Avg_Pecision = (TP/(TP+2FP) + TZ/(TZ+2FZ) + TN/(TN+2FN))/3<br> F1_Score = 2·Avg_Pecision·Avg_Recall/(Avg_Pecision+Avg_Recall)<br>
## 建模过程
1. 情感词典
实验步骤分为两方面:<br>1.直接利用boson情感词典(也可以替换data中的数据,找到网上其他的字典或者自行构建的情感词典,格式保持跟data.txt中的一致即可),查看boson情感词典的正负中的召回率。<br>
通过对比结果看出单纯的boson情感词典效果很差,而采用了情感副词以及添加否定词的boson情感词典方法的效果大大优于单纯的情感词典方法,但其结果仍然不乐观,基本recall也就在30~50%之间(略高于随机选择),但是其对于强正向和强负向区分能力较高,但是对于包含多个情感词的句子没什么分辨能力。
2. 机器学习<br>
在机器学习方法中本文使用以下几种类型的分类器
* 逻辑回归
* 随机梯度下降
* 朴素贝叶斯
* 支持向量机
* 随机森林
* XGBoost<br>
代码实现过程:<br>
首先运行ml_classify.py文件中<br>
```python
if __name__ == "__main__":
# get_tencent_word_embedding()
# import random
# random.seed(1)
# get_sentiment_model()
# _test_save_model_validate()
# test_x = '新买的手机的信号还可以,没有预期的期望高,不过对于我来说也还可以了'
# real_predict(test_x)
get_variable_model_test()
```
使用其中的`get_variable_model_test()`函数,先debug到下方`json.jump`处,此处是用来将我们存在excel中的文本数据进行清理得到正则化后的数据,并将其进行词向量表示,本文中选取了两种形式,即利用中文维基百科训练的Word2Vec词向量(这里仅用了腾讯开源的词向量,但当初我也试验了中文维基百科的词向量,腾讯的建模效果要好很多,网上很多开源的训练好的词向量,就是把词向量替换即可,较为容易),以及腾讯开源的900W的词向量(之所以没有用BERT进行微调是因为这个是去年9月份写的,那会儿BERT还没出来,后续深度学习中我们会应用BERT句向量)
```python
def get_variable_model_test():
get regular train and test data
pos_list, neutral_list, neg_list = get_data()
train_X, y = build_vecs_tencent(pos_list, neutral_list, neg_list)
train_x, test_x, train_y, test_y = train_test_split(train_X, y, test_size = 0.3)
train_x = train_x.tolist()
test_x = test_x.tolist()
train_y = train_y.tolist()
test_y = test_y.tolist()
json.dump([train_x, test_x, train_y, test_y],open('trai
没有合适的资源?快使用搜索试试~ 我知道了~
中文情感分析模型,包含各种主流的情感词典、机器学习、深度学习、预训练模型方法.zip
共19个文件
txt:7个
py:5个
jpg:3个
需积分: 0 1 下载量 155 浏览量
2024-01-13
22:37:19
上传
评论
收藏 13.23MB ZIP 举报
温馨提示
深度学习使用技巧和一些模型训练,实战应用开发小系统参考资料,源码参考。 适用于初学者和有经验的开发者,能够帮助快速上手深度学习模型建立学习等
资源推荐
资源详情
资源评论
收起资源包目录
中文情感分析模型,包含各种主流的情感词典、机器学习、深度学习、预训练模型方法.zip (19个子文件)
lern_2
dl_classify.py 26KB
image_folder
BP_train_plot1.jpg 26KB
BP_train_plot2.jpg 25KB
BP_train_plot.jpg 120KB
train_x.json 35.15MB
data
stop.txt 13KB
data.xlsx 970KB
boson_dict_config.py 535B
Sentiment_models
BP_model.h5 530KB
boson_dict_utils
正面评价词语(中文)1.txt 35KB
负面评价词语(中文)1.txt 31KB
负面情感词语(中文)1.txt 12KB
否定词.txt 482B
BosonNLP_sentiment_score.txt 2.41MB
正面情感词语(中文)1.txt 7KB
Tencent_word_Embedding.py 2KB
ml_classify.py 24KB
README.md 17KB
boson_dict.py 14KB
共 19 条
- 1
资源评论
白话Learning
- 粉丝: 3349
- 资源: 2464
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- mod-ldap-2.4.56-1.fc38.x86-64.rpm
- mod-ldap-2.4.58-7.fc40.x86-64.rpm
- mod-ldap-2.4.59-2.fc40.x86-64.rpm
- uniapp微信小程序水印相机(显示时间/地点/日期)
- rfid的应用场景.zip
- SpringBlade是一个由商业级项目升级优化而来的微服务开发平台
- mod-ldap-2.4.6-45.el7.centos.x86-64.rpm
- vbscript是什么,他的作用
- mod-ldap-2.4.6-67.el7.centos.x86-64.rpm
- mod-ldap-2.4.6-31.el7.centos.1.x86-64.rpm
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功