NLPCC2013中文微博细粒度情感识别(二)

本文介绍NLPCC2013中文微博情感识别任务的数据预处理,包括分词、应对特殊字符挑战,以及使用预训练embedding进行可视化分析。通过词云和词向量降维展示了数据特点,可视化有助于理解情感分类的潜在语义。
摘要由CSDN通过智能技术生成

偷懒若干天后回归。。在上一篇中我们得到了NLPCC2013的中文微博数据,将其按照8:1:1的比例分成了训练集,验证集和测试集。下一步就是对数据进行预处理以及embedding。这是第一次尝试一边写博客一边把自己的想法记录下来,希望有所帮助。

分析:按照体量的大小可以将文本分为字级别->词级别->实体级别->句子级别->段落级别->文章级别。由于我们的任务主要是情感识别,通常情况下可以代表情感的往往只是某些字或词,所以对于数据的预处理最多进行到分词,不许要做NER。只要基于当前数据做出正确的分词并且embedding,即可作为文章的输入。分词工具在这里选择开源并且遵守MIT(个人理解为可以商用)的jieba分词。先看一下数据的分词难点:

#回复@王羊羊的微博:是,要的就是安静的生存环境,而且,到北京五环25分#钟车程,938离我住处只有300米,饮食一条街更是北京饮食街的翻版,应有尽有。     
#//@王羊羊的微博:廊坊是个好地方,紧邻京津,有点闹中取静的意思。
#[抓狂]我竟然被那个考了车牌几个月但一直没有开过车的老妈笑话我笨! 
#这家位于槟城George Town,Tunes Hotel斜对面的饼家,家庭式作业,她#的咸蛋酥,年糕椰蓉酥,叉烧酥都很不错。[good]
#做人原则:⑴能不骂人,就不骂!
#联系方式:13810938511 QQ:122095021

以上几条微博可以反映出这个数据存在的某些问题:存在回复标签,存在表情符号,中英混用,全半角符号混用,数字问题。之前也做过推特的情感分类,发现同为社交媒体,中文社交媒体的数据处理要比英文复杂的多。对于这种情况,我首先观察了一下数据特点,然后直接根据每种不同情况作了相应处理,在这里不再赘述,想看的朋友们可以直接看最后放出的代码,写的还算比较清楚,每个功能都写成了一个小函数。

本来想分词之后直接训练embedding的,但是考虑到一共才4w多个样本,而且很多都不符合一般的语言规范,想了想还是用了别人的embedding。链接在此:https://github.com/facebookresearch/fastText/blob/master/pretrained-vectors.md 但是考虑到用了别人的embedding正常情况下就可以开始搭模型了。在这里多做了一步工作就是对数据进行了一个可视化。代码同样在下面。

可视化分为了两个部分:构建词云和词向量的可视化。前者基本可以理解为找到文本中的若干关键词并可视化,后者即为将embedding降维后得到的结果。

先看一下词云:

可以看到由于数据源是网络文本,即使去掉停词后还是有大量的口语/无意义词汇,但是好在从其中一些小字也可以找到一些微博早期大家关注的热点,如果沿时间横向对比的话,应该是可以得到一些有意思的结论的。最直观的一个结论可以看到词云中出现的两个国家美国和日本,代表了网民门讨论的热点国家,还是比较符合实际的。下面一张图做了一些美化,本质上还是这个东西。

 做完了词云,再来看一下词向量降维得到的结果。经过统计数据里面实际上有两万多个可以和词向量对应的词语,全部显示基本是不可能了,差点没把我这破air累死。最终选取了其中500个词,尽管这样还是需要截图才能看到一个大概的趋势。其实这样一个统计就类似于聚类的结果统计,只不过使用cosine距离作为度量,具体实现是用的sklearn的tsne模块。看一看哪些和哪些是比较相似的。也检查一下embedding的情况怎么样,是否能反映语义信息。整个图里面的点大概聚成了即堆,挑有代表性的讨论讨论。

可以看到一些平时相关的词语确实距离非常近

这里是第二堆词,其实和第一堆并不能发现什么太大的差别,导致出现两堆的情况很有可能是因为这两堆都是高维空间投射到2维空间的影子。实际上两堆各自内部的词应该还与另一堆有关联。

这一堆基本都是单个字或者标点符号,没有吧标点符号全部去掉的原意主要就是因为像!?...这样的符号其实是很大程度上可以反映情绪的,所以除了一些确实不必要的其他都保留了下来。但是可以看到也有一些小瑕疵,比如/这种符号还是没有去干净。

其实以上这些可视化不仅可以用来做情感分析,还可以做一些舆情分析,本质上是一样的。下面Po出所有源代码,写的不太好还请各路大神多指教~我只是个小白哈哈~

import jieba
import re
import gensim
import collections
import matplotlib.pyplot as plt
from wordcloud import WordCloud
from wordcloud import STOPWORDS
import
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值