文章目录
4 文本数据分析
学习目标
- 了解文本数据分析的作用.
- 掌握常用的几种文本数据分析方法.
1 文件数据分析介绍
文本数据分析的作用:
- 文本数据分析能够有效帮助我们理解数据语料, 快速检查出语料可能存在的问题, 并指导之后模型训练过程中一些超参数的选择.
常用的几种文本数据分析方法:
- 标签数量分布
- 句子长度分布
- 词频统计与关键词词云
2 数据集说明
-
XNLI(Cross-lingual NLI - Natural Language Inference)数据集是一个用于评估自然语言推理(NLI)模型跨语言能力的基准。它基于Multi-NLI数据集,但扩展到了包括15种不同语言的文本,旨在测试和促进跨语言理解的研究。XNLI数据集中的任务是判断一对句子(前提和假设)之间的逻辑关系,标签分类共有三种可能的关系:
-
蕴含(Entailment):如果根据前提句子的内容,可以推断出假设句子为真,则两者之间的关系为“蕴含”。例如,前提句:“一只猫坐在窗台上。” 假设句:“有一只动物在窗户旁边。” 这里,前提的信息足以支持假设句,因此这对句子的关系就是蕴含。
-
中性(Neutral):当中前提句子既不提供足够的信息来证明假设句子为真,也不足以反驳它时,两者之间的关系被视为“中性”。例如,前提句:“一只猫坐在窗台上。” 假设句:“这只猫喜欢晒太阳。” 在这种情况下,前提并没有给出足够的信息来确定假设的真实性,所以它们的关系是中性的。
-
矛盾(Contradiction):如果前提句子的内容与假设句子直接冲突或相互矛盾,则两者之间的关系为“矛盾”。例如,前提句:“一只猫坐在窗台上。” 假设句:“没有动物在窗台附近。” 这里,前提句明确指出有一个动物(即猫)在窗台上,这与假设句所述内容相矛盾。
通过这些分类,XNLI数据集能够有效地评估和比较不同语言处理系统在理解和推理自然语言方面的性能,尤其是在跨语言环境下。这对于推动机器翻译、多语言文本分析和其他跨语言应用的发展非常重要。
3 获取标签数量分布
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
import jieba
from itertools import chain
import jieba.posseg as pseg # 词性标注
from wordcloud import WordCloud
# 1 获取数据集的标签数量分布
def label_countplot():
# 01 设置显示风格
plt.style.use('fivethirtyeight')
# 02 读取数据
# 读取训练集数据
train_data = pd.read_csv('./hdata/xnli_zh/train.csv')
print(train_data.head())
test_data = pd.read_csv('./hdata/xnli_zh/test.csv')
print(test_data.head())
# 03 绘制条形图 训练集 测试集
sns.countplot(x='label', data=train_data)
plt.title('train_data')
plt.show()
sns.countplot(x='label', data=test_data)
plt.title('test_data')
plt.show()
运行结果
- 训练集样本标签数量分布
- 测试集样本标签数量分布
- 分析:
- 在深度学习模型评估中, 我们一般使用ACC作为评估指标, 若想将ACC的基线定义在50%左右, 则需要我们的正负样本比例维持在1:1左右, 否则就要进行必要的数据增强或数据删减. 上图中训练和验证集正负样本都稍有不均衡, 可以进行一些数据增强.
4 获取句子长度分布
# 2 获取句子长度分布
def len_countplot_displot():
# 01 设置显示风格
plt.style.use('ggplot')
# 02 读取数据
train_data = pd.read_csv('./hdata/xnli_zh/train.csv')
test_data = pd.read_csv('./hdata/xnli_zh/test.csv')
# 03 添加句子长度
train_data[