ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

用自己的数据做情感分析:CNN-for-Sentence-Classification-in-Keras切换到本地RT-Polarity数据集完整教程

用自己的数据做情感分析:CNN-for-Sentence-Classification-in-Keras切换到本地RT-Polarity数据集完整教程 用自己的数据做情感分析CNN-for-Sentence-Classification-in-Keras切换到本地RT-Polarity数据集完整教程【免费下载链接】CNN-for-Sentence-Classification-in-KerasConvolutional Neural Networks for Sentence Classification in Keras项目地址: https://gitcode.com/gh_mirrors/cn/CNN-for-Sentence-Classification-in-KerasCNN-for-Sentence-Classification-in-Keras 是一个用卷积神经网络CNN做句子级情感分类的 Keras 项目常用来训练影评情感分析模型。它默认读取内置的 IMDB 数据集但只要你把一行参数从keras_data_set改成local_dir就能切换到项目自带的本地RT-Polarity 数据集Rotten Tomatoes 影评正负样本各 5331 条甚至换成你自己整理的数据。本教程带新手一步步完成这次切换并讲清整个训练流程。一、项目能做什么一个基于 Keras 的 CNN 情感分类器这个项目复现了经典论文《Convolutional Neural Networks for Sentence Classification》Yoon Kim, 2014核心能力是二分类情感分析判断一条影评是正面还是负面三种模型形态可选见 sentiment_cnn.py 第 36 行的model_type参数模型类型Embedding 层说明CNN-rand随机初始化训练最简单IMDB 上可达 88-90%CNN-non-staticWord2Vec 预训练效果最好Embedding 随训练更新CNN-staticWord2Vec 预训练输入直接用词向量IMDB 上约 85%原始论文的 PDF 已随项目放在 docs/1408.5882v2.pdf想深入了解卷积核、滑窗池化的原理可以翻一翻。二、环境准备克隆仓库与安装依赖 ️首先获取项目代码git clone https://gitcode.com/gh_mirrors/cn/CNN-for-Sentence-Classification-in-Keras然后安装依赖。根据 README.md 的说明需要Keras和深度学习后端README 推荐 TheanoTensorFlow 后端理论上也支持另外 w2v.py 中用到了gensim来训练 Word2Vecsentiment_cnn.py 中用到numpypip install keras gensim numpy # 再按官方文档安装一个深度学习后端Theano 或 TensorFlow 小提醒这个项目年代较早如果你用的是 Keras 2.x / TensorFlow 2.xkeras.layers.merge等旧式导入可能报错建议按报错信息把导入语句改成新版写法即可逻辑不变。三、认识本地数据集RT-Polarity 文件在哪里 项目的 data/ 目录里放着两份 RT-Polarity 数据集文件每行一条影评data/rt-polarity.pos— 正面影评5331 条data/rt-polarity.neg— 负面影评5331 条数据加载逻辑全部在 data_helpers.py 中流程非常清晰读取load_data_and_labels()从上面两个文件按行读取文本生成[0,1]正面和[1,0]负面的标签清洗分词clean_str()把标点拆开、转小写比如dont→do nt补齐对齐pad_sentences()用PAD/把所有句子补到同一长度建词汇表build_vocab()统计词频建立词 → 索引和索引 → 词的双向映射向量化build_input_data()把句子变成整数索引矩阵喂给神经网络想用你自己的数据很简单把语料整理成同样格式——一行一条文本正面样本写入.pos文件、负面样本写入.neg文件替换data/目录下的两个文件即可代码不用改任何一行。四、关键一步把 data_source 切换为 local_dir 打开主脚本 sentiment_cnn.py第 38-39 行就是数据源开关# Data source data_source keras_data_set # keras_data_set|local_dir把keras_data_set改成local_dir就完成了切换。改完之后代码会自动走本地数据分支第 76-89 行行为如下调用data_helpers.load_data()读取data/下的 RT-Polarity 文件随机打乱全部 10662 条数据按90% 训练 / 10% 测试自动切分sequence_length会自动适配本地数据的实际长度第 98-100 行无需手动设置另外别忘了确认第 36 行的model_type。对于本地这种中小规模数据推荐先用CNN-rand不依赖 Word2Vec跑通最快跑通后再尝试CNN-non-static。五、训练流程拆解从文本到模型的 5 个阶段切换数据源后直接运行即可python sentiment_cnn.py背后的完整流程是这样的文本 → 整数序列由 data_helpers.py 完成见上一节Word2Vec 预训练仅CNN-non-static/CNN-staticw2v.py 中的train_word2vec()用 gensim 在当前语料上训练词向量参数由embedding_dim50、min_word_count1、context10控制。训练好的模型会缓存到models/目录文件名形如50features_1minwords_10context第二次运行直接加载不会重复训练构建 CNN 网络Embedding 层 → Dropout(0.5) → 两个Conv1D分支核大小 3 和 8各 10 个卷积核→ 滑窗 MaxPooling → 拼接 → Dropout(0.8) → 全连接层(50) → Sigmoid 输出概率权重初始化CNN-non-static会把 Word2Vec 词向量写入 Embedding 层开始训练batch_size64num_epochs10损失函数为二元交叉熵优化器 Adam训练结束时控制台会逐 epoch 打印训练集与测试集的 loss 和 accuracy测试集准确率就是最终效果。 想单独预训练词向量也可以直接运行python w2v.py脚本自带入口它会提前生成models/下的 Word2Vec 缓存文件。六、常见问题与调参清单 ✅遇到下面这些情况对照处理即可现象原因与解法启动报Unknown data sourcedata_source拼写错误只能是keras_data_set或local_dir导入word2vec报错未安装 gensim执行pip install gensim本地数据上精度不理想试试把num_epochs调到 15-20或把embedding_dim提到 100想换自己的数据只要保持一行一条、.pos 正样本 / .neg 负样本格式直接替换 data/ 下的文件训练太慢优先用CNN-rand跳过 Word2Vec 阶段主要超参数都集中在 sentiment_cnn.py 顶部的 Parameters section第 33-58 行一目了然embedding_dim 50— 词向量维度越大表达能力越强、越吃内存filter_sizes (3, 8)— 卷积核大小对应捕捉 3 词和 8 词窗口内的 n-gram 特征batch_size 64/num_epochs 10— 训练节奏dropout_prob (0.5, 0.8)— 两处 Dropout防止过拟合写在最后整个切换过程的核心只有一行把data_source从keras_data_set改为local_dir。项目作者已经替你把 RT-Polarity 数据的加载、清洗、切分全部封装在 data_helpers.py 里你只要准备好数据文件就能专注在用 CNN 做情感分析这件事本身。跑通本地数据之后换上你自己标注的正负样本就拥有了一个属于自己的情感分类模型。【免费下载链接】CNN-for-Sentence-Classification-in-KerasConvolutional Neural Networks for Sentence Classification in Keras项目地址: https://gitcode.com/gh_mirrors/cn/CNN-for-Sentence-Classification-in-Keras创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表