2.4 文本数据分析
学习目标
- 了解文本数据分析的作用.
- 掌握常用的几种文本数据分析方法.
- 文本数据分析的作用:
- 文本数据分析能够有效帮助我们理解数据语料, 快速检查出语料可能存在的问题, 并指导之后模型训练过程中一些超参数的选择.
- 说明:
- 我们将基于真实的中文酒店评论语料来讲解常用的几种文本数据分析方法.
- 中文酒店评论语料:
- 属于二分类的中文情感分析语料, 该语料存放在"./cn_data"目录下.
- 其中train.tsv代表训练集, dev.tsv代表验证集, 二者数据样式相同.
sentence label
早餐不好,服务不到位,晚餐无西餐,早餐晚餐相同,房间条件不好,餐厅不分吸烟区.房间不分有无烟房. 0
去的时候 ,酒店大厅和餐厅在装修,感觉大厅有点挤.由于餐厅装修本来该享受的早饭,也没有享受(他们是8点开始每个房间送,但是我时间来不及了)不过前台服务员态度好! 1
有很长时间没有在西藏大厦住了,以前去北京在这里住的较多。这次住进来发现换了液晶电视,但网络不是很好,他们自己说是收费的原因造成的。其它还好。 1
非常好的地理位置,住的是豪华海景房,打开窗户就可以看见栈桥和海景。记得很早以前也住过,现在重新装修了。总的来说比较满意,以后还会住 1
交通很方便,房间小了一点,但是干净整洁,很有香港的特色,性价比较高,推荐一下哦 1
酒店的装修比较陈旧,房间的隔音,主要是卫生间的隔音非常差,只能算是一般的 0
酒店有点旧,房间比较小,但酒店的位子不错,就在海边,可以直接去游泳。8楼的海景打开窗户就是海。如果想住在热闹的地带,这里不是一个很好的选择,不过威海城市真的比较小,打车还是相当便宜的。晚上酒店门口出租车比较少。 1
位置很好,走路到文庙、清凉寺5分钟都用不了,周边公交车很多很方便,就是出租车不太爱去(老城区路窄爱堵车),因为是老宾馆所以设施要陈旧些, 1
酒店设备一般,套房里卧室的不能上网,要到客厅去。 0
- train.tsv数据样式说明:
- train.tsv中的数据内容共分为2列, 第一列数据代表具有感情色彩的评论文本; 第二列数据, 0或1, 代表每条文本数据是积极或者消极的评论, 0代表消极, 1代表积极.
获得训练集和验证集的标签数量分布
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
plt.style.use('fivethirtyeight')
train_data = pd.read_csv("./cn_data/train.tsv", sep="\t")
valid_data = pd.read_csv("./cn_data/dev.tsv", sep="\t")
sns.countplot("label", data=train_data)
plt.title("train_data")
plt.show()
sns.countplot("label", data=valid_data)
plt.title("valid_data")
plt.show()
- 分析:
- 在深度学习模型评估中, 我们一般使用ACC作为评估指标, 若想将ACC的基线定义在50%左右, 则需要我们的正负样本比例维持在1:1左右, 否则就要进行必要的数据增强或数据删减. 上图中训练和验证集正负样本都稍有不均衡, 可以进行一些数据增强.
获取训练集和验证集的句子长度分布
train_data["sentence_length"] = list(map(lambda x: len(x), train_data["sentence"]))
sns.countplot("sentence_length", data=train_data)
plt.xticks([])
plt.show()
sns.distplot(train_data["sentence_length"])
plt.yticks([])
plt.show()
valid_data["sentence_length"] = list(map(lambda x: len(x