资源下载地址:https://download.csdn.net/download/sheziqiong/85836603
资源下载地址:https://download.csdn.net/download/sheziqiong/85836603

选题:设计实现一种基于文本内容/情感的文本自动分类方法
具体目标:实现一个分类器,完成对微博文本的简单二元分类,即分为正面、负面。

本文工作要点

微博文本不同于正式文本,作为在网络社区上的文本,具有不规范性、流行性、符号混杂性等特点,具体总结了以下四点:

  • 长度不定,但最长不超过 140 字,一般在 80-100 字间;
  • 句式简单,一般来说表达情绪很直白,一个或几个关键词就能决定整段文本的情感;
  • 用词不规范,出现大量谐音词,但体裁相近,且会集中出现大量流行词汇;
  • 常用表情符号来辅助表达情绪。

2、4给处理上带来方便,特别是文本化的表情符号能够增加情绪词权重;而 1、3 是挑战,需要数据量尽量大,涵盖更多的语言现象。

而在中期报告中也提出,由于句子中与情绪表达无关的文本的存在,直接使用分类的方法对于长文本不适用,需要进行过滤,并且传统分类方法忽略了词间的语义联系,使得训练集的规模需求变大,在没有大的微博语料库的情况下也很难取得好的效果。

因此,本文考虑结合词向量和传统分类方法,可以在某个大规模语料库上训练词向量表,继而用微博文本中词向量的平均获得整个文本的向量,用向量作为输入来进行分类。同时,当输入不再需要完整的文本时,过滤无用文本也就成为可能,删除连词、介词等并不会对句子中的关键信息有影响。词向量模型照顾到了语义联系,也符合情绪本质上是语义层面的特点;而传统分类方法训练速度较深度学习方法快,消耗计算资源较小,效果也没有绝对的差距,因此适合在个人电脑上运行。

具体方法与流程

  • 实验数据

维基百科中文语料( ):用于训练词向量表

第二届 CCF 自然语言处理与中文计算会议中文微博情感分析样例数据:本项目微博语料来源中科院计算所中文自然语言处理开放平台发布的中文停用词表 StopWord.txt:用于过滤无用文本

  • 训练流程

首先由维基百科中文语料获取词向量表,借助模块为 python 中开源的 genism,其中包括了针对维基百科语料训练词向量的方法。

之后对微博语料进行预处理,下载的样例数据中并不是简单的正负二元分类,其分类包括:anger 愤怒、disgust 厌恶、fear 恐惧、happiness 快乐、like 喜好、sadness 悲伤、surprise 惊讶、none 中性。我将 anger 愤怒、disgust 厌恶、fear 恐惧、sadness 悲伤归为负面,happiness 快乐、like 喜好归为正面,最终获得各 1029 句的正负平衡语料,命名为 neg.txt 和 pos.txt。

对正负语料进行分词,借助模块为 jieba(结巴分词);使用停用词表进行文本清洗; 最终对照词向量表并取平均值获得句子的特征向量。获得的特征向量维数为 400,为节约计算资源、加快速度,使用 PCA 分析作图,发现 100 维即可包含几乎全部信息,因此降维至 100。

随机划分训练集与验证集为 95:5。验证集有 102 句,其中负面 48 句,正面 54 句。

使用三种分类模型进行比较研究,为 SVM、BP 神经网络、随机森林。分别在训练集上训练得到模型,调用模型在验证集上进行验证。

实验结果与分析

1.评价指标

类别 属于此类 不属于此类
实际属于此类 TP FN
实际不属于此类 FP TN

表 1:混淆矩阵

TP、TN 表示分类结果与实际标签一致的文本数,FN、FP 表示分类结果与实际标签不一致的文本数。

准确率:P=TP/(TP+FP)

召回率:R=TP/(TP+FN)

F1 值:F1=2P*R/(P+R)

2.实验结果

在验证集上测试结果如下表:

模型 类别 准确率 召回率 F1 值
SVM 0 0.61 0.62 0.62
SVM 1 0.66 0.65 0.65
BP 神经网络 0 0.56 0.71 0.62
BP 神经网络 1 0.66 0.50 0.57
随机森林 0 0.65 0.69 0.67
随机森林 1 0.71 0.67 0.69

表 2:验证结果

3.实验结果分析

  • 比较来看,随机森林效果最好,但差距不大,说明在这样较小的训练集上没有模型占绝对优势。调参时发现增加 BP 的迭代次数的提升效果并不明显,但改变隐藏层层数有较大影响;SVM 中优化核函数是关键;随机森林中要适当减少“树”的数目,增加“树”效果不好。
  • 训练集的规模影响很大。当减少 100 句训练集句子,三种模型的 F1 值普遍下降近 10 个百分点,其中 SVM 受影响最大,BP 神经网络受影响最小。说明这些模型仍然很依赖训练集规模,而本项目中语料库规模本就不够大,应是导致最后验证效果一般的原因之一。
  • 正负验证效果不平衡。SVM 与随机森林均是正面文本效果好,推测有两方面原因:1. 在整理语料时,负面有四类情绪而正面有两类,负面情绪词显得更复杂,导致在训练集不够大的情况下涵盖不全面,效果会差一些;2.负面文本中有一类表达忧伤的,表意含蓄,提取特征也困难,导致结果变差。但 BP 神经网络的结果是负面优于正面,不清楚其中原因。
  • 适用于批量处理,而非单条微博分析。每次分析时文本均需经过预处理与向量化,其中最消耗时间的是词向量表的 I/O,待分析文本的规模对耗时影响不大,因此适用于一次处理大量数据,处理单条微博则相较用文本直接分类的方法慢很多。

资源下载地址:https://download.csdn.net/download/sheziqiong/85836603
资源下载地址:https://download.csdn.net/download/sheziqiong/85836603

基于Python文本内容/情感的对微博文本自动二元分类相关推荐

  1. 【论文学习】基于贝叶斯分类的大学生关注热点事件微博文本分类方法研究——殷复莲 张晓宇 冯晴

    自己梳理一遍论文,作学习用. 基本信息 作者:殷复莲 张晓宇 冯晴(中国传媒大学信息工程学院) 摘要:针对互联网,尤其是微博平台中大学生用户产生的海量的文本分类问题,应用贝叶斯网络分类器对微博评论进行 ...

  2. 基于 python TF-IDF K-means 算法的校园微博热点话题发现系统 附代码

    目前新浪微博平台,已经存在热点话题的发现和推荐功能,但这些功能对校园微博热点发现与舆情监控方面存在不足之处. 校园微博有针对性的舆情监控目的,而微博平台没有提供针对校园微博的热点发现,因此校园微博热点 ...

  3. Shell脚本实现将文本内容格式化为markdown表格文本

    背景介绍: 在使用markdown编辑表格的时候,需要对文本内容添加|等符号,数据量大的时候需要花费较多时间插入符号,为节省时间提高效率,尝试写了可以自动化批量将待处理的文本内容格式化为markdow ...

  4. 基于Python实现对情感极性判断分析实验

    资源下载地址:https://download.csdn.net/download/sheziqiong/85734418 资源下载地址:https://download.csdn.net/downl ...

  5. 易语言读文本内容_易读性如何使文本易于阅读

    易语言读文本内容 Your first step in making your texts legible is to understand what legibility means. It is ...

  6. 基于python文本挖掘实战_python实现CNN中文文本分类

    [实例简介] CNN 中文文本挖掘 文本分类 python 深度学习 机器学习 [实例截图] [核心代码] zh_cnn_text_classify-master └── zh_cnn_text_cl ...

  7. 疫情微博文本情感分类 (简化版SMP2020赛题)

    编者按 代码仅供参考,欢迎交流:请勿用于任何形式的课程作业.如有任何错误,敬请批评指正~ Pytorch系列文章: Pytorch实验一:从零实现Logistic回归和Softmax回归 Pytorc ...

  8. python读取微博文本数据,对微博文本进行分句(分句主要以特定的标点符号为主)。...

    首先,您需要安装 Python 的第三方库 jieba,可以使用 pip install jieba 命令安装. 然后,您需要使用 Python 的文件操作函数读取微博文本数据,例如使用 open() ...

  9. Python 3.6实现单博主微博文本、图片及热评爬取

    CodingGo技术社区 自由的编程学习平台 文章简介 经常刷微博的同学肯定会关注一些有比较意思的博主,看看他们发的文字.图片.视频和底下评论,但时间一长,可能因为各种各样的原因,等你想去翻看某个博主 ...

最新文章

  1. R语言使用caret包的confusionMatrix函数计算混淆矩阵、使用编写的自定义函数可视化混淆矩阵(confusion matrix)
  2. android 解决华为系列手机调试时不能打印Logcat日志信息
  3. 微信公众号开发小记(二)--服务器验证
  4. UA MATH567 高维统计III 随机矩阵4 欧氏空间上的集网与覆盖
  5. Mysql 分区介绍(二) —— RANGE分区
  6. 1055 The World‘s Richest (25 分)【难度: 一般 / 知识点: 多关键字排序】
  7. python计算2的平方代码_python – NumPy计算向量的范数2的平方
  8. 微赞企动协会wac_xiehui3.0.9全开源版模块
  9. 相机标准之onvif---开放型网络视频接口论坛onvif 简介
  10. kafka指定分区消费
  11. php生成随机不重复的数字_PHP生成不重复随机数的几种方法
  12. 内网隐蔽隧道之DNS隧道搭建(iodine)
  13. MFI认证——苹果MFI认证流程
  14. 【华为云技术分享】让电变“机灵”,华为云与开发者共同打造智慧用电
  15. 蓝桥杯刷题以及算法解析的网址
  16. java堆内存设置_java堆内存设置原理
  17. 美大学推开源赞助计划 DIY机器人你也办得到
  18. linux ln 软连接_ln命令建立软链接
  19. C++ STL容器详解
  20. android百度地图行政区填充颜色

热门文章

  1. 2020研究生数学建模E题--AlexNet深度网络解法(大雾能见度估计与预测)(含代码)
  2. 为什么使用双亲委派机制以及如何破坏双亲委派
  3. 关于Coursera
  4. img请求图片错误设置默认图片
  5. 多值依赖与部分函数依赖 转
  6. 有时用weblogic用户启动weblogic时会报错的原因以及解决办法
  7. UE4换装系统(合并骨骼模型)
  8. 使用go get安装,老是报错:go: golang.org/x/tools@v0.0.0-20190322203728-c1a832b0ad89: unrecognized import path
  9. Opensearch架构及引擎原理
  10. 【mysql】dump