ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

新手友好教程:用ZEN做情感分析(SA),从ChnSentiCorp数据到结果评估

新手友好教程:用ZEN做情感分析(SA),从ChnSentiCorp数据到结果评估 新手友好教程用ZEN做情感分析SA从ChnSentiCorp数据到结果评估【免费下载链接】ZENA BERT-based Chinese Text Encoder Enhanced by N-gram Representations项目地址: https://gitcode.com/gh_mirrors/zen10/ZEN情感分析SA是中文 NLP 中最常见的入门任务之一而 ZEN 正是为中文场景打造的一款 BERT 增强模型。ZEN 是一个基于 BERT 的中文文本编码器通过引入N-gram 表示N-gram Representations显式建模词与短语边界让模型在看字符的同时也看词语从而在情感分析、文本分类等任务上表现得更加精准。本教程将带你从零开始用 ZEN 在 ChnSentiCorp 数据集上完成一次完整的情感分析微调Fine-tune并看懂最终的结果评估报告。全程只需一个训练脚本新手也能轻松跑通 ZEN 是什么为什么适合中文情感分析传统 BERT 按字切分中文忽略了词和短语的语义而 ZENZ text encoder Enhanced by N-gram在字符编码器Character Encoder之外额外引入N-gram 编码器把大湾区性价比差评这类 2~7 字组合也纳入建模如上图所示。这让 ZEN 在中文情感分析中能更敏锐地捕捉情感词和否定结构例如不太好用这类容易被逐字模型误判的表达。✅ 字符级 N-gram 级双重编码兼顾细粒度与词义✅ 官方提供序列级分类脚本开箱即用✅ 微调流程与 BERT 完全一致迁移成本低ChnSentiCorp 情感分析数据集长什么样ChnSentiCorp 是中文情感分析领域的高频基准数据集包含来自书籍、电脑、酒店三个领域的约 1.2 万条评论详见 datasets/README.md每条评论对应一个情感标签字段示例标签 label1正向/0负向评论文本 text酒店环境很好服务态度也不错值得推荐。数据需按train.tsv、dev.tsv、test.tsv三个文件组织每行格式为标签\t文本。数据处理逻辑由 utils_sequence_level_task.py 中的ChnsenticorpProcessor负责它会把文本转成 ZEN 需要的字符 token 与 N-gram 特征。环境准备一键安装依赖首先获取项目代码并安装依赖Python 3.6PyTorch 1.2git clone https://gitcode.com/gh_mirrors/zen10/ZEN cd ZEN pip install -r requirements.txt依赖清单见 requirements.txt主要包括pytorch、scikit-learn、tensorboardX等。另外需要准备 ZEN 预训练模型目录含config.json、pytorch_model.bin、vocab.txt、ngram.txt脚本通过--bert_model参数指定其路径。最快微调方法一条命令跑通情感分析ZEN 官方在 examples/ 目录下提供了序列级分类脚本 run_sequence_level_classification.py情感分析SA正是其内置任务之一。对着 ChnSentiCorp 数据只需执行python run_sequence_level_classification.py \ --task_name ChnSentiCorp \ --do_train \ --do_eval \ --do_lower_case \ --data_dir /path/to/dataset/ChnSentiCorp \ --bert_model /path/to/zen_model \ --max_seq_length 512 \ --train_batch_size 32 \ --learning_rate 2e-5 \ --num_train_epochs 30.0几个关键参数说明方便新手按需调整--task_name ChnSentiCorp指定情感分析任务脚本会自动匹配对应的数据读取器--max_seq_length 512最长输入长度评论通常较短可适当调小以提速--learning_rate 2e-5微调常用学习率过大易震荡、过小收敛慢--num_train_epochs 30.0训练轮数ChnSentiCorp 官方示例配置--do_eval训练结束后自动在测试集上评估训练过程中脚本会打印每个 step 的 loss并在--output_dir默认./results/result-seqlevel-时间戳/下保存模型检查点方便随时恢复。结果评估准确率是怎么算出来的评估阶段脚本会加载测试集让模型逐条预测情感标签再与真实标签对比。评估逻辑位于 utils_sequence_level_task.py 的compute_metrics函数——对chnsenticorp任务核心指标是准确率Accuracyacc (预测正确的样本数) / (总样本数)***** Running evaluation ***** Num examples 1200 Batch size 8 Evaluating: 100%|████████████| 150/150 [00:1200:00, 12.03it/s] acc 0.9492当终端出现类似acc 0.9492的输出时说明你的情感分析模型已完成训练并评估准确率约 94.9%即测试集中近 95% 的评论情感判断正确。如果你用官方预训练 ZEN 权重通常能达到 94% 以上的水准也可以对比 BERT-base 的结果直观感受 N-gram 增强带来的提升。新手常见问题速查报错Task not found检查--task_name是否写成了chnsenticorp脚本内部会转小写或拼写错误报错找不到ngram.txt确认--bert_model指向的目录包含 ZEN 的 N-gram 词典文件显存不足调小--train_batch_size如 16 或 8并降低--max_seq_length想换数据集把数据整理成同样的标签\t文本TSV 格式即可无需改动代码从数据准备、微调训练到结果评估ZEN 为中文情感分析提供了一条极简路径。如果你还想进阶可以继续研究 run_pre_train.py 尝试预训练或在 models/ 目录中探索更多模型细节。现在就动手跑一遍感受 N-gram 增强的中文情感分析效果吧【免费下载链接】ZENA BERT-based Chinese Text Encoder Enhanced by N-gram Representations项目地址: https://gitcode.com/gh_mirrors/zen10/ZEN创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表