DataFountain疫情情绪分析(一)---数据预处理

8 篇文章 0 订阅
1 篇文章 0 订阅

一,数据读取

1.下载到手里面的数据如果直接使用pandas或者numpy读取会出现各类编码问题,使用各种方法测试均失效,解决办法:先使用excel内置工具将文档转为csv-utf8格式,再使用pandas读取相关数据。

2.相对于numpy的loadtxt,更推荐使用pandas的readcsv,少了相当一部分麻烦。

 

二,数据预处理

1.获取的文本中,对于情感标签官方规定只有-1,0,1,但是拿到手里面的数据有部分错误信息,比如标记值标出了2,或者没标记,这里我们简单认为这些数据失效,全部归为未标记数据。

2.此外,由于使用pandas读取时未指定列类型(即使指定也会因为部分错误数据报类型无法转换错误),所以后面需要将类型转化为float型,这里我使用float32类型。

3.由于处理的是中文,所以需要jieba分词工具进行分词处理,对于分词的结果可以加入到原始datafram中,代码使用

arr['分词内容'] = arr.微博中文内容.apply(lambda x:" ".join(jieba.cut(x)))

即可对每一行的中文进行分词。

注:分词之前,需要将arr转为str类型,否则jieba会报错,这是由于读取的数据默认为float型。

注:这里之所以使用空格分割词汇,是为了便于后面的tokenizer使用,因为英文单词即以空格分割。

官方训练数据集给了两部分,一部分有标签,一部分没标签,这可以用到半监督的技巧,由于目前只希望做出一个baseline,所以暂时只利用未标记数据集构建字典。

Label_list = list(Train_Labeled_Data['分词结果'])
Label_list.extend(list(Train_Unlabeled_Data['分词结果']))

三,转化为词向量

from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.preprocessing.sequence import pad_sequences
tokenizer = Tokenizer(num_words=10000) #实例化分词器,取最常见的前一万单词
tokenizer.fit_on_texts(arr['分词内容']) #对每一行分词
sequences = tokenizer.text_to_sequences(arr['分词内容']) #生成不定长数字序列
sequences = pad_sequences(arr['分词内容'],maxlen=100) #统一数字序列长度,缺补多删

至此,我们对于数据的预处理完毕,获取了每一句评论的字典序列,以及转化为float32的情感类标。

实际上,Embedding层也属于预处理的一部分,由于Keras内置嵌入层,这部分放到神经网络架构部分。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值