NLP_[2]_文本预处理-文本数据分析
文章目录
- 4 文本数据分析
- 1 文件数据分析介绍
- 2 数据集说明
- 3 获取标签数量分布
- 4 获取句子长度分布
- 5 获取正负样本长度散点分布
- 6 获取不同词汇总数统计
- 7 获取训练集高频形容词词云
- 8 小结¶
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['sentence_p_length'] = list(map(lambda x: len(x), train_data['premise']))train_data['sentence_h_length'] = list(map(lambda x: len(x), train_data['hypothesis']))test_data['sentence_p_length'] = list(map(lambda x: len(x), test_data['premise']))test_data['sentence_h_length'] = list(map(lambda x: len(x), test_data['hypothesis']))print(train_data.head())print(train_data['sentence_p_length'].max())print(train_data['sentence_h_length'].max())print(test_data['sentence_p_length'].max())print(test_data['sentence_h_length'].max())# 绘制柱状图 曲线图 for 训练集 测试集sns.countplot(x='sentence_p_length', data=train_data)plt.xticks([])plt.show()sns.displot(x='sentence_p_length', data=train_data, kde=True)plt.show()sns.countplot(x='sentence_h_length', data=train_data)plt.xticks([])plt.show()sns.displot(x='sentence_h_length', data=train_data, kde=True)plt.show()sns.countplot(x='sentence_p_length', data=test_data)plt.xticks([])plt.show()sns.displot(x='sentence_p_length', data=test_data, kde=True)plt.show()sns.countplot(x='sentence_h_length', data=test_data)plt.xticks([])plt.show()sns.displot(x='sentence_h_length', data=test_data, kde=True)plt.show()
运行结果

- 分析:
- 通过绘制句子长度分布图, 可以得知我们的语料中大部分句子长度的分布范围, 因为模型的输入要求为固定尺寸的张量,合理的长度范围对之后进行句子截断补齐(规范长度)起到关键的指导作用.
5 获取正负样本长度散点分布
# 3 获取正负样本的长度散点图def len_strip_plot():# 设置风格plt.style.use('Solarize_Light2')# 加载数据train_data = pd.read_csv('./hdata/xnli_zh/train.csv')test_data = pd.read_csv('./hdata/xnli_zh/test.csv')# 添加长度列train_data['sentence_p_length'] = list(map(lambda x: len(x), train_data['premise']))train_data['sentence_h_length'] = list(map(lambda x: len(x), train_data['hypothesis']))test_data['sentence_p_length'] = list(map(lambda x: len(x), test_data['premise']))test_data['sentence_h_length'] = list(map(lambda x: len(x), test_data['hypothesis']))# 绘制图像sns.stripplot(y='sentence_p_length', x='label', data=train_data, hue='label')plt.show()sns.stripplot(y='sentence_p_length', x='label', data=test_data, hue='label')plt.show()
运行结果


- 分析:
- 通过查看正负样本长度散点图, 可以有效定位异常点的出现位置, 帮助我们更准确进行人工语料审查. 上图中在训练集正样本中出现了异常点, 它的句子长度近250左右, 需要我们人工审查.
6 获取不同词汇总数统计
# 4 统计不同词汇的总数(词表大小)
def word_counts():# 01 读取数据train_data = pd.read_csv('./hdata/xnli_zh/train.csv')test_data = pd.read_csv('./hdata/xnli_zh/test.csv')# 02 获取训练集的词表大小# chain(*map()) 解析:# map返回一个迭代器对象 在这里是分析后的列表# * 解包 把迭代器中的每个元素作为一个独立的参数 传给chain# chain 把多个可迭代对象 合并成一个可迭代对象 可以用set list 直接返回所有元素 也可以循环遍历train_vocab = set(chain(*map(lambda x: jieba.lcut(x), train_data['premise'])))print(len(train_vocab))test_vocab = set(chain(*map(lambda x: jieba.lcut(x), test_data['premise'])))print(len(test_vocab))
运行结果
训练集词表大小 75660 测试集词表大小 7262
7 获取训练集高频形容词词云
# 5 绘制词云
# 5.1 绘制每个句子的形容词词云
def get_a_list(text):res = []for g in pseg.lcut(text):if g.flag == 'a':res.append(g.word)return res# 5.2 根据关键词列表生成词云
def get_word_cloud(keywords_list):# 实例化词云对象my_wordcloud = WordCloud(font_path='./cn_data/SimHei.ttf', max_words=200, background_color='white')# 准备数据a_str = ' '.join(keywords_list)# 生成词云my_wordcloud.generate(a_str)# 绘图展示plt.figure()plt.imshow(my_wordcloud, interpolation="bilinear")plt.axis('off')plt.show()def word_cloud():# 获取数据train_data = pd.read_csv('./hdata/xnli_zh/train.csv')# 获取正样本p_train_data = train_data[train_data['label'] == 0]['premise']# 获取形容词列表p_a_words = list(chain(*map(lambda x: get_a_list(x), p_train_data)))# 绘制词云get_word_cloud(p_a_words)# 绘制负样本的词云n_train_data = train_data[train_data['label'] ==2]['premise']n_a_words = list(chain(*map(lambda x: get_a_list(x), n_train_data)))get_word_cloud(n_a_words)
运行结果


- 分析:
- 根据高频形容词词云显示, 我们可以对当前语料质量进行简单评估, 同时对违反语料标签含义的词汇进行人工审查和修正, 来保证绝大多数语料符合训练标准. 上图中的正样本大多数是褒义词, 而负样本大多数是贬义词, 基本符合要求, 但是负样本词云中也存在"好"这样的褒义词, 因此可以人工进行审查
8 小结¶
-
文本数据分析的作用:
- 文本数据分析能够有效帮助我们理解数据语料, 快速检查出语料可能存在的问题, 并指导之后模型训练过程中一些超参数的选择.
-
常用的几种文本数据分析方法:
- 标签数量分布
- 句子长度分布
- 词频统计与关键词词云
-
基于XNLI中文语料进行几种文本数据分析方法.
- 获得训练集和验证集的标签数量分布
- 获取训练集和验证集的句子长度分布
- 获取训练集和验证集的正负样本长度散点分布
- 获得训练集与验证集不同词汇总数统计
- 获得训练集上正负的样本的高频形容词词云
相关文章:
NLP_[2]_文本预处理-文本数据分析
文章目录 4 文本数据分析1 文件数据分析介绍2 数据集说明3 获取标签数量分布4 获取句子长度分布5 获取正负样本长度散点分布6 获取不同词汇总数统计7 获取训练集高频形容词词云8 小结 4 文本数据分析 学习目标 了解文本数据分析的作用.掌握常用的几种文本数据分析方法. 1 文…...
【工具篇】深度揭秘 Midjourney:开启 AI 图像创作新时代
家人们,今天咱必须好好唠唠 Midjourney 这个在 AI 图像生成领域超火的工具!现在 AI 技术发展得那叫一个快,各种工具层出不穷,Midjourney 绝对是其中的明星产品。不管你是专业的设计师、插画师,还是像咱这种对艺术创作有点小兴趣的小白,Midjourney 都能给你带来超多惊喜,…...
从O(k*n)到O(1):如何用哈希表终结多层if判断的性能困局
【前言】 本文将以哈希表重构实战为核心,完整展示如何将传统条件匹配逻辑(上千层if-else判断)转化为O(1)的哈希表高效实现。通过指纹验证场景的代码级解剖,您将深入理解: 1.哈希函数设计如何规避冲突陷阱 2.链式寻址法的工程实现…...
视频采集卡接口
采集卡的正面有MIC IN、LINE IN以及AUDIO OUT三个接口, MIC IN为麦克风输入,我们如果要给采集到的视频实时配音或者是在直播的时候进行讲解,就可以在这里插入一个麦克风, LINE IN为音频线路输入,可以外接播放背景音乐…...
蓝桥杯真题 - 像素放置 - 题解
题目链接:https://www.lanqiao.cn/problems/3508/learning/ 个人评价:难度 3 星(满星:5) 前置知识:深度优先搜索 整体思路 深搜,在搜索过程中进行剪枝,剪枝有以下限制条件…...
vue基础(三)
常用指令 1. v-bind 固定绑定与动态绑定: 语法: 标准语法:v-bind:属性"动态数据" 简写语法::属性"动态数拓" <!DOCTYPE html> <html lang"en"><head><me…...
使用Python开发PPTX压缩工具
引言 在日常办公中,PPT文件往往因为图片过大而导致文件体积过大,不便于传输和存储。为了应对这一问题,我们可以使用Python的wxPython图形界面库结合python-pptx和Pillow,开发一个简单的PPTX压缩工具。本文将详细介绍如何实现这一…...
ubuntu24.04安装布置ros
最近换电脑布置机器人环境,下了24.04,但是网上的都不太合适,于是自己试着布置好了,留作有需要的人一起看看。 文章目录 目录 前言 一、确认 ROS 发行版名称 二、检查你的 Ubuntu 版本 三、安装正确的 ROS 发行版 四、对于Ubuntu24…...
SQL 秒变 ER 图 sql转er图
🚀SQL 秒变 ER 图,校园小助手神了! 学数据库的宝子们集合🙋♀️ 是不是每次碰到 SQL 转 ER 图就头皮发麻?看着密密麻麻的代码,脑子直接死机,好不容易理清一点头绪,又被复杂的表关…...
【AI知识点】如何判断数据集是否噪声过大?
【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】【读书与思考】【AI应用】 判断数据集是否 噪声过大 是数据分析和机器学习建模过程中至关重要的一步。噪声数据会导致模型难以学习数据的真实模式,从而影响预测效果。以下是一些常见的方法来判断数据…...
网络安全治理架构图 网络安全管理架构
网站安全攻防战 XSS攻击 防御手段: - 消毒。 因为恶意脚本中有一些特殊字符,可以通过转义的方式来进行防范 - HttpOnly 对cookie添加httpOnly属性则脚本不能修改cookie。就能防止恶意脚本篡改cookie 注入攻击 SQL注入攻击需要攻击者对数据库结构有所…...
如何写出优秀的单元测试?
写出优秀的单元测试需要考虑以下几个方面: 1. 测试用例设计 测试用例应该覆盖被测试代码的不同场景和边界情况,以尽可能发现潜在的问题。在设计测试用例时需要关注以下几点: 输入输出数据:要测试的函数或方法可能有多个输入参数…...
数据留痕的方法
在项目中,数据变更时,经常需要记录上次的数据,以便查看对比,专业术语叫做数据留痕。数据变更留痕(即记录数据的变更历史)是一个常见的需求,例如在审计、追踪数据变化或满足合规性要求的场景中。…...
机器学习数学基础:19.线性相关与线性无关
一、线性相关与线性无关的定义 (一)线性相关 想象我们有一组向量,就好比是一群有着不同“力量”和“方向”的小伙伴。给定的向量组 α ⃗ 1 , α ⃗ 2 , ⋯ , α ⃗ m \vec{\alpha}_1, \vec{\alpha}_2, \cdots, \vec{\alpha}_m α 1,α 2…...
ArgoCD实战指南:GitOps驱动下的Kubernetes自动化部署与Helm/Kustomize集成
摘要 ArgoCD 是一种 GitOps 持续交付工具,专为 Kubernetes 设计。它能够自动同步 Git 仓库中的声明性配置,并将其应用到 Kubernetes 集群中。本文将介绍 ArgoCD 的架构、安装步骤,以及如何结合 Helm 和 Kustomize 进行 Kubernetes 自动化部署。 引言 为什么选择 ArgoCD?…...
JVM虚拟机以及跨平台原理
相信大家已经了解到Java具有跨平台的特性,即“一次编译,到处运行”,例如在Windows下编写的程序,无需任何修改就可以在Linux下运行,这是C和C很难做到的。 那么,跨平台是怎样实现的呢?这就要谈及…...
【AIGC提示词系统】基于 DeepSeek R1 + ClaudeAI 易经占卜系统
上篇因为是VIP,这篇来一个免费的 提示词在最下方,喜欢的点个关注吧 引言 在人工智能与传统文化交融的今天,如何让AI系统能够传递传统易经文化的智慧,同时保持易经本身的神秘感和权威性,是一个极具挑战性的课题。本文将…...
电路笔记 : opa 运放失调电压失调电流输入偏置电流 + 反向放大器的平衡电阻 R3 = R1 // R2 以减小输出直流噪声
目录 定义影响和解决失调电压输入偏置电流平衡电阻R3推导公式: 失调电流 实际的运算放大器(Op-Amp)存在一些非理想特性,如失调电压(VIO)、失调电流(IIO)和输入偏置电流(I…...
ScrapeGraphAI颠覆传统网络爬虫技术
ScrapeGraphAI颠覆传统网络爬虫技术! 引言 在互联网时代,数据如同油田,丰富而深邃。但如何有效地提取这些数据,仍然是许多开发者面临的艰巨任务。你有没有想过,传统的网络爬虫技术是否已经过时?如今&…...
通过多层混合MTL结构提升股票市场预测的准确性,R²最高为0.98
“Boosting the Accuracy of Stock Market Prediction via Multi-Layer Hybrid MTL Structure” 论文地址:https://arxiv.org/pdf/2501.09760 摘要 本研究引入了一种创新的多层次混合多任务学习架构,致力于提升股市预测的效能。此架构融…...
别再瞎找了!AI论文软件2026最新测评与推荐
2026年真正好用的AI论文软件,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…...
半导体放电管TSS选型避坑指南:从RS485到CAN接口的实战经验分享
半导体放电管TSS选型避坑指南:从RS485到CAN接口的实战经验分享 在工业通信设备的电路保护设计中,浪涌防护是一个不可忽视的关键环节。作为一名长期奋战在一线的硬件工程师,我深知半导体放电管(TSS)选型过程中的种种陷阱…...
OpenCore 辅助工具(OCAT):跨平台开源配置工具的零基础上手指南
OpenCore 辅助工具(OCAT):跨平台开源配置工具的零基础上手指南 【免费下载链接】OCAuxiliaryTools Cross-platform GUI management tools for OpenCore(OCAT) 项目地址: https://gitcode.com/gh_mirrors/oc/OCAuxili…...
金融Agent再获近2亿加码!启明红杉高瓴集体押注,5个月内连获两轮融资
允中 发自 凹非寺量子位 | 公众号 QbitAI近日,金融AI领跑者讯兔科技(Alpha派)正式完成近2亿元A轮融资。继去年10月完成超亿元Pre-A轮融资后,讯兔科技在短短5个月内再获顶级机构强强加持。本轮由启明创投、红杉中国、高瓴创投共同领…...
LFM2.5-1.2B-Thinking-GGUF实操手册:自定义system prompt提升领域适配性
LFM2.5-1.2B-Thinking-GGUF实操手册:自定义system prompt提升领域适配性 1. 模型简介与核心优势 LFM2.5-1.2B-Thinking-GGUF是Liquid AI推出的轻量级文本生成模型,专为低资源环境优化设计。该模型采用GGUF格式和llama.cpp运行时,在保持高性…...
4大场景解决散热难题:开源散热管理工具全攻略
4大场景解决散热难题:开源散热管理工具全攻略 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/FanCont…...
Python实战:5分钟搞定Paillier同态加密的安装与基础使用(附避坑指南)
Python实战:5分钟搞定Paillier同态加密的安装与基础使用(附避坑指南) 隐私计算领域近年来发展迅猛,而同态加密作为其核心技术之一,正在金融、医疗等行业的数据协作场景中发挥越来越重要的作用。Paillier算法作为支持加…...
Realistic Vision V5.1 虚拟摄影棚实战:利用GitHub管理自定义模型与脚本
Realistic Vision V5.1 虚拟摄影棚实战:利用GitHub管理自定义模型与脚本 你是不是也遇到过这样的烦恼?好不容易在本地电脑上,用Realistic Vision V5.1模型调出了一套完美的参数组合,生成的人像照片质感堪比专业影棚。结果换台电脑…...
对话意图识别新选择:轻量ESFT模型高效易用
对话意图识别新选择:轻量ESFT模型高效易用 【免费下载链接】ESFT-token-intent-lite 基于HuggingFace平台,deepseek-ai团队推出的ESFT-token-intent-lite模型,是ESFT-vanilla-lite的精简版,专为意图识别优化,性能卓越&…...
终极指南:GoldHEN Cheats Manager - PlayStation 4游戏作弊代码完整管理方案
终极指南:GoldHEN Cheats Manager - PlayStation 4游戏作弊代码完整管理方案 【免费下载链接】GoldHEN_Cheat_Manager GoldHEN Cheats Manager 项目地址: https://gitcode.com/gh_mirrors/go/GoldHEN_Cheat_Manager GoldHEN Cheats Manager 是一款专为PlaySt…...
