NLP学习笔记04:情感分析实践练习实现说明

张开发
2026/7/1 14:55:57 15 分钟阅读
NLP学习笔记04:情感分析实践练习实现说明
NLP学习笔记04情感分析实践练习实现说明作者Ye Shun日期2026-04-15一、说明这份文档对应《NLP学习笔记04情感分析——从词典方法到 BERT》中的三个实践练习我已经分别实现成了三份独立脚本放在压缩包中方便学习和运行。对应文件如下NLP学习笔记04_实践练习01_VADER电影评论.pyNLP学习笔记04_实践练习02_机器学习方法比较.pyNLP学习笔记04_实践练习03_BERT方面级情感分析.py二、练习1VADER 电影评论情感分析目标使用 NLTK 的 VADER 情感词典在movie_reviews电影评论数据集上进行情感分类并测试准确率。实现内容自动加载movie_reviews数据集自动加载vader_lexicon使用 VADER 对测试集文本进行情感打分输出准确率、分类报告和混淆矩阵文件NLP学习笔记04_实践练习01_VADER电影评论.py运行方式python NLP学习笔记04_实践练习01_VADER电影评论.py依赖nltkscikit-learn注意如果本地没有对应 NLTK 资源脚本会尝试自动下载movie_reviewsvader_lexicon如果当前环境无法联网就需要你手动准备这些资源。三、练习2比较不同机器学习方法目标分别使用朴素贝叶斯、SVM 和逻辑回归训练情感分类器并通过交叉验证比较它们的性能差异。实现内容使用movie_reviews作为数据集使用TF-IDF作为文本表示方法训练三类模型MultinomialNBLinearSVCLogisticRegression使用 5 折交叉验证比较accuracy和f1_macro自动选出最佳模型并在留出测试集上再评估一次文件NLP学习笔记04_实践练习02_机器学习方法比较.py运行方式python NLP学习笔记04_实践练习02_机器学习方法比较.py依赖nltkscikit-learn四、练习3BERT 方面级情感分析目标使用预训练 BERT 模型在 SemEval 2014 餐厅评论数据集上进行微调实现一个可以同时提取方面词并判断情感极性的端到端系统。实现思路这次实现没有采用“先提取方面、再单独分类”的流水线而是采用了一个联合标签方案OB-POS,I-POSB-NEG,I-NEGB-NEU,I-NEUB-CONF,I-CONF也就是说一个 BERTToken Classification模型可以同时完成方面抽取情感极性判断这是一种真正的端到端实现方式。文件NLP学习笔记04_实践练习03_BERT方面级情感分析.py支持的数据格式脚本默认读取 SemEval 2014 Restaurant Reviews 的 XML 文件例如Restaurants_Train_v2.xmlRestaurants_Test_Gold.xml脚本会自动解析句子文本方面词term情感极性polarity字符级起止位置from/to运行示例python NLP学习笔记04_实践练习03_BERT方面级情感分析.py ^ --train-file data\Restaurants_Train_v2.xml ^ --test-file data\Restaurants_Test_Gold.xml ^ --model-name bert-base-uncased ^ --output-dir outputs\absa_bert输出内容训练完成后会在输出目录下保存微调后的模型token_metrics.jsonspan_metrics.jsonsample_predictions.json其中token_metrics.json是 token 级别指标span_metrics.json是端到端方面抽取 情感判断的 span 级指标sample_predictions.json保存部分预测样例方便人工检查依赖torchtransformersnumpyaccelerate注意这个练习比前两个复杂很多常见前提包括需要本地有 SemEval 2014 数据集需要本地能加载预训练 BERT 模型训练过程最好有 GPU但 CPU 也能跑只是会更慢如果当前环境不能联网下载模型建议提前把bert-base-uncased下载到本地再把--model-name改成本地目录。五、建议的学习顺序建议按下面的顺序练习先跑练习1理解词典法怎么做情感分析再跑练习2对比传统机器学习模型的性能差异最后做练习3理解端到端方面级情感分析的完整流程这样会更容易看清楚情感分析技术的演进路径词典规则传统机器学习预训练语言模型六、最后说明由于当前很多环境都可能存在Python 路径异常无法联网下载 NLTK 资源无法联网下载 BERT 模型缺少torch或transformers所以这三份脚本都尽量写成了“有清晰依赖提示、结构完整、可直接复用”的形式。即便当前环境不能立即跑通后续换到正常 Python 环境里也可以直接使用。

更多文章