文本数据分析能够有效帮助我们理解数据预料,快速查出预料可能存在的问题,并指导之后模型训练过程中一些超参数的选择。
常用的几种文本数据分析方法,包括:
- 标签数量分布:数据中正负样本的分布最好接近1:1
- 句子长度分别:通过观察句子的长短来挑选合适的处理方法
- 词频统计与关键词词云:
数据集选择的是ChnSentiCorp_htl_all数据集(见知乎),内容为酒店评论。共有7766条数据。类别仅有好坏两种,正面评价5322个,负面评价2444个,有一定的不平衡。内容如下:
数据中第一列为label,其中0表示该条样本是负面评价,1表示正面评价。剩余部分为具体评价内容。应该不难理解。
显示结果如下:
可以看出,正负样本的分布是不平衡的。在深度学习模型的评估中,一般使用ACC(accuracy,准确率)作为评估指标,ACC=预测正确的样本数/总样本数,若想将ACC的基线定义在50%左右,则需要我们的正负样本比例维持在1:1左右,否则就要进行必要的数据增强或数据删减。(50%基线的解释:基线的意思就是,假设模型没有任何的预测能力,只能像掷硬币一样随机猜测是正样本还是负样本,那么对于正:负=1:1的数据集来说,根据概率很容易可以算出,模型的准确率在50%左右,因为不是正就是负,就是瞎猜。但是,如果数据不平衡,比如正:负=9:1,那么模型很有可能变成,不管是正还是负样本,我都预测为正样本,这样的话,模型还是有90%的准确率,看似准确率很高,但其实这是个很垃圾的模型)
上图中明显看出,正负样本的分布是不平衡的,所以要进行模型训练的话,需要进行数据增强。
1、全部数据集的句子长度分布直方图
数据集的句子长度分布如下:
可以看出,数据集中,句子的分布长度绝大部分都在500以下,甚至300以下。
通过绘制句子长度分布图,可以得知我们的语料中大部分句子长度的分布范围,因为模型的输入要求为固定尺寸的张量,合理的长度范围对之后进行句子截断补齐(统一长度)起到关键的指导作用。上图的大部分句子长度范围为20-250之间
2、数据集中正负样本上的句子长度散点分布
正负样本上的散点分布图如下:
通过查看正负样本长度散点图,可以有效定位异常点的出现位置,帮助我们更准确进行人工语料的审查。如上图中label=0中,明显出现一个离群点,句子长度接近3000.明显是异常点,写评价写三千字,一般人干不出来!
函数在Python标准库中的 模块中,它的主要作用是将一个或多个可迭代对象(如列表、元组、字符串或其他迭代器)串联起来,形成一个新的迭代器。这个新的迭代器会依次返回第一个可迭代对象的所有元素,接着是第二个可迭代对象的元素,依此类推,就像是把所有输入的序列“链”成一个连续的序列。
统计词汇的代码如下:
经过打印,共有29716个不同的词汇。
词云(Word Cloud)是一种数据可视化技术,它通过字体大小和颜色的差异来突出显示文本数据中单词的重要性或频率。词云将文本中出现次数较多的词汇以较大的字号展示出来,而较少出现的词汇则以较小字号呈现。这种视觉效果使得人们能够快速地从大量文本中直观感知到高频关键词及其相对权重。如下图所示:
整体数据集中正样本词云的输出:
整体数据集中负样本词云的输出: