文本数据分析

发布时间:2026/8/5 9:07:25
文本数据分析 1 文本数据分析作用文本数据分析能够有效帮助我们理解数据语料快速检查出语料可能存在的问题指导模型训练过程中一些超参数的选择。问题数据质量错别字语法错误重复内容缺失值噪声数据。分布不均衡标签分布不均匀句子长度分布异常。常用方法标签数量分布句子长度分布词频统计与关键词词云2 代码实现 文本分析 帮助我们理解数据语料快速检查语料中可能存在的问题。 方式 1. 标签数量分布 2. 句子长度分布 3. 词频统计和关键词词云 importjiebaimportseabornassnsimportpandasaspdimportmatplotlib.pyplotaspltfromitertoolsimportchainimportjieba.possegaspsegfromwordcloudimportWordCloud# 词云plt.rcParams[font.sans-serif][SimHei]plt.rcParams[axes.unicode_minus]Falsedeflabel_sns_countplot():plt.style.use(fivethirtyeight)train_datapd.read_csv(./data/train.tsv,sep\t)dev_datapd.read_csv(./data/dev.tsv,sep\t)# print(train_data.head())# 统计标签0和1数量sns.countplot(xlabel,datatrain_data,huelabel,legendFalse)plt.title(train_label)plt.tight_layout()plt.show()# 统计标签0和1数量sns.countplot(xlabel,datadev_data,huelabel,legendFalse)plt.title(train_label)plt.tight_layout()plt.show()deflen_sns_displot():train_datapd.read_csv(./data/train.tsv,sep\t)dev_datapd.read_csv(./data/dev.tsv,sep\t)train_data[sentence_length]list(map(lambdax:len(x),train_data[sentence]))print(train_data.head())# 绘制柱状图sns.countplot(datatrain_data,xsentence_length)plt.title(训练集句子长度分布柱状图)plt.xticks([])plt.show()# 绘制密度曲线图sns.histplot(datatrain_data,xsentence_length,kdeTrue)plt.title(训练集句子长度密度曲线图)plt.show()dev_data[sentence_length]list(map(lambdax:len(x),dev_data[sentence]))print(dev_data.head())# 绘制柱状图sns.countplot(datadev_data,xsentence_length)plt.title(验证集句子长度分布柱状图)plt.xticks([])plt.show()# 绘制密度曲线图sns.histplot(datadev_data,xsentence_length,kdeTrue)plt.title(验证集句子长度密度曲线图)plt.show()defsns_stripplot():train_datapd.read_csv(./data/train.tsv,sep\t)dev_datapd.read_csv(./data/dev.tsv,sep\t)train_data[sentence_length]list(map(lambdax:len(x),train_data[sentence]))dev_data[sentence_length]list(map(lambdax:len(x),dev_data[sentence]))# 统计分布sns.stripplot(datatrain_data,xlabel,ysentence_length,huelabel)plt.title(训练集政府样本散点分布)plt.show()sns.stripplot(datadev_data,xlabel,ysentence_length,huelabel)plt.title(验证集政府样本散点分布)plt.show()defget_word_count():train_datapd.read_csv(./data/train.tsv,sep\t)dev_datapd.read_csv(./data/dev.tsv,sep\t)train_vocabset(chain(*map(lambdax:jieba.lcut(x),train_data[sentence])))dev_vocabset(chain(*map(lambdax:jieba.lcut(x),dev_data[sentence])))print(f训练集共包含不同词汇总数为{len(train_vocab)})print(f验证集共包含不同词汇总数为{len(dev_vocab)})# 获取形容词列表defget_a_list(text):a_list[]forvalueinpseg.lcut(text):ifvalue.flagn:a_list.append(value.word)returna_list# 根据词云列表产生词云defget_word_cloud(word_list):wordcloudWordCloud(font_path./data/SimHei.ttf,max_words100,background_colorwhite)word_str .join(word_list)wordcloud.generate(word_str)# 绘图plt.figure()# 参1 生成词云图像的数据 参2 设置图像插值方法为双线插值plt.imshow(wordcloud,interpolationbilinear)plt.axis(off)plt.show()# 最终绘制词云defword_cloud():train_datapd.read_csv(./data/train.tsv,sep\t)dev_datapd.read_csv(./data/dev.tsv,sep\t)# 测试集正样本p_train_datatrain_data[train_data[label]1][sentence]print(p_train_data)p_a_train_vocabchain(*map(lambdax:get_a_list(x),p_train_data))print(fp_a_train_vocab{p_a_train_vocab})get_word_cloud(p_a_train_vocab)print(-*20)# 测试集负样本p_train_datatrain_data[train_data[label]0][sentence]p_a_train_vocabchain(*map(lambdax:get_a_list(x),p_train_data))print(fp_a_train_vocab{p_a_train_vocab})get_word_cloud(p_a_train_vocab)if__name____main__:word_cloud()