当前位置: 首页 > news >正文

【NLP】文本预处理的概念、处理方法、数学公式

文章目录

  • 1、简介及其作用
  • 2、文本处理的基本方法
    • 2.1、分词
    • 2.2、词性标注
    • 2.3、命名实体识别(NER)
  • 3、文本张量表示方法
    • 3.1、One-Hot 编码
    • 3.2、Word2Vec
    • 3.3、词嵌入(Word Embedding)
  • 4、文本语料的数据分析
    • 4.1、标签数量分布
    • 4.2、句子长度分布
    • 4.3、词频统计与关键词词云
  • 5、文本特征处理
    • 5.1、添加 n-gram 特征
    • 5.2、文本长度规范
  • 6、数据增强方法
  • 7、文本预处理的具体实例
    • 7.1、中文文本预处理实例
    • 7.2、英文文本预处理实例
  • 8、小结

🍃作者介绍:双非本科大三网络工程专业在读,阿里云专家博主,专注于Java领域学习,擅长web应用开发、数据结构和算法,初步涉猎人工智能和前端开发。
🦅个人主页:@逐梦苍穹
📕所属专栏:人工智能
🌻gitee地址:xzl的人工智能代码仓库
✈ 您的一键三连,是我创作的最大动力🌹

1、简介及其作用

在自然语言处理(NLP)任务中,文本预处理是至关重要的一步。
未经处理的原始文本通常杂乱无章,无法直接用于机器学习模型。
通过一系列预处理步骤,文本被转化为规范化的数据格式,从而满足模型输入的要求。
此外,科学的文本预处理还能够有效指导模型超参数的选择,提升模型的评估指标,进而增强整体性能。
本文主要内容:

1. 文本处理的基本方法
2. 文本张量表示方法
3. 文本语料的数据分析
4. 文本特征处理
5. 数据增强方法

在实际生产应用中,我们最常使用的两种语言是中文和英文,因此文本预处理部分的内容都将针对这两种语言进行讲解。

2、文本处理的基本方法

2.1、分词

定义:将连续的文本序列分割成词语序列,是文本预处理的第一步,特别是在中文中。
方法

  • 基于规则的分词:使用语言学规则和词典进行分词。
  • 基于统计的分词:利用统计模型(如 n − g r a m n-gram ngram H M M HMM HMM)进行分词。
  • 基于深度学习的分词:使用神经网络模型(如 B i L S T M − C R F BiLSTM-CRF BiLSTMCRF B E R T BERT BERT)进行分词。

数学表示
T T T 为输入的文本序列, w 1 , w 2 , … , w n w_1, w_2, \ldots, w_n w1,w2,,wn 为分词结果;
分词过程可以表示为: T → { w 1 , w 2 , … , w n } T \rightarrow \{w_1, w_2, \ldots, w_n\} T{w1,w2,,wn}

2.2、词性标注

定义:为每个词语标注其词性(如名词、动词、形容词等)。
方法

  • 基于规则的方法:使用预定义的规则和词典。
  • 基于统计的方法:如 H M M HMM HMM C R F CRF CRF
  • 基于深度学习的方法:如 B i L S T M − C R F BiLSTM-CRF BiLSTMCRF 模型。

数学表示
w i w_i wi 为词语, t i t_i ti 为对应的词性标签
词性标注过程可以表示为: { w 1 , w 2 , … , w n } → { ( w 1 , t 1 ) , ( w 2 , t 2 ) , … , ( w n , t n ) } \{w_1, w_2, \ldots, w_n\} \rightarrow \{(w_1, t_1), (w_2, t_2), \ldots, (w_n, t_n)\} {w1,w2,,wn}{(w1,t1),(w2,t2),,(wn,tn)}

2.3、命名实体识别(NER)

定义:识别并分类文本中的实体,如人名、地名、组织名等。
方法

  • 基于规则的方法:使用预定义的规则和词典。
  • 基于统计的方法:如 C R F CRF CRF
  • 基于深度学习的方法:如 B i L S T M − C R F BiLSTM-CRF BiLSTMCRF T r a n s f o r m e r Transformer Transformer 模型。

数学表示
T T T 为输入的文本序列, E E E 为命名实体的集合。
N E R NER NER 过程可以表示为: T → { E 1 , E 2 , … , E m } T \rightarrow \{E_1, E_2, \ldots, E_m\} T{E1,E2,,Em}

3、文本张量表示方法

3.1、One-Hot 编码

定义:将每个词表示为一个高维向量,其中只有一个位置为1,其他位置为0。
方法

  • 构建词汇表 V V V,大小为 ∣ V ∣ |V| V
  • 对于词汇表中的每个词 w i w_i wi,构建一个长度为 ∣ V ∣ |V| V 的向量,其中第 i i i 个位置为1,其余位置为0。

数学表示
V V V 为词汇表, ∣ V ∣ |V| V 为词汇表的大小
对于词语 w i w_i wi 的 One-Hot 编码可以表示为: OneHot ( w i ) = [ 0 , 0 , … , 1 , … , 0 ] \text{OneHot}(w_i) = [0, 0, \ldots, 1, \ldots, 0] OneHot(wi)=[0,0,,1,,0]
其中,只有第 i i i 个位置为1,其余位置为0。

3.2、Word2Vec

定义:通过神经网络将词语映射到低维向量空间,捕捉词语的语义相似性。
方法

  • Skip-gram:通过预测上下文词来训练词向量。
  • CBOW(Continuous Bag of Words):通过上下文词预测目标词来训练词向量。

数学表示
w w w 为目标词, C ( w ) C(w) C(w) 为上下文词的集合。 S k i p Skip Skip- g r a m gram gram 模型的目标是最大化以下概率:
∏ w ∈ Corpus ∏ c ∈ C ( w ) P ( c ∣ w ) \prod_{w \in \text{Corpus}} \prod_{c \in C(w)} P(c|w) wCorpuscC(w)P(cw)

这个公式是表示累积
其中, P ( c ∣ w ) P(c|w) P(cw) 是通过 s o f t m a x softmax softmax 函数计算的:
P ( c ∣ w ) = exp ⁡ ( v c ⋅ v w ) ∑ i = 1 ∣ V ∣ exp ⁡ ( v i ⋅ v w ) P(c|w) = \frac{\exp(v_c \cdot v_w)}{\sum_{i=1}^{|V|} \exp(v_i \cdot v_w)} P(cw)=i=1Vexp(vivw)exp(vcvw)

所以表示为: ∏ w ∈ Corpus ∏ c ∈ C ( w ) exp ⁡ ( v c ⋅ v w ) ∑ i = 1 ∣ V ∣ exp ⁡ ( v i ⋅ v w ) \prod_{w \in \text{Corpus}} \prod_{c \in C(w)} \frac{\exp(v_c \cdot v_w)}{\sum_{i=1}^{|V|} \exp(v_i \cdot v_w)} wCorpuscC(w)i=1Vexp(vivw)exp(vcvw)

3.3、词嵌入(Word Embedding)

定义:通过深度学习模型(如 G l o V e GloVe GloVe F a s t T e x t FastText FastText)训练的词向量,能够捕捉词语的复杂语义关系。
数学表示
W W W 为词汇表, d d d 为词向量的维度。
词嵌入过程可以表示为将每个词 w w w 映射到一个 d d d 维向量 v w v_w vw w → v w ∈ R d w \rightarrow v_w \in \mathbb{R}^d wvwRd

4、文本语料的数据分析

4.1、标签数量分布

定义:分析数据集中各类标签的数量分布,评估数据的平衡性。
方法

  • 统计每个标签在数据集中出现的频率。
  • 绘制标签数量分布图,如条形图。

数学表示
y y y 为标签, n ( y ) n(y) n(y) 为标签 y y y 在数据集中出现的次数
标签数量分布可以表示为: { ( y 1 , n ( y 1 ) ) , ( y 2 , n ( y 2 ) ) , … , ( y k , n ( y k ) ) } \{(y_1, n(y_1)), (y_2, n(y_2)), \ldots, (y_k, n(y_k))\} {(y1,n(y1)),(y2,n(y2)),,(yk,n(yk))}

4.2、句子长度分布

定义:分析数据集中句子的长度分布,了解数据的整体结构。
方法

  • 统计每个句子的长度。
  • 绘制句子长度分布图,如直方图。

数学表示
s s s 为句子, l ( s ) l(s) l(s) 为句子 s s s 的长度。
句子长度分布可以表示为: { ( s 1 , l ( s 1 ) ) , ( s 2 , l ( s 2 ) ) , … , ( s n , l ( s n ) ) } \{(s_1, l(s_1)), (s_2, l(s_2)), \ldots, (s_n, l(s_n))\} {(s1,l(s1)),(s2,l(s2)),,(sn,l(sn))}

4.3、词频统计与关键词词云

定义:统计词语在数据集中出现的频率,生成关键词词云,帮助识别重要词语。
方法

  • 统计每个词语在数据集中出现的频率。
  • 利用 Python 库(如 N L T K NLTK NLTK W o r d C l o u d WordCloud WordCloud)生成词频统计和词云图。

数学表示
w w w 为词语, f ( w ) f(w) f(w) 为词语 w w w 在数据集中出现的频率。
词频统计可以表示为: { ( w 1 , f ( w 1 ) ) , ( w 2 , f ( w 2 ) ) , … , ( w m , f ( w m ) ) } \{(w_1, f(w_1)), (w_2, f(w_2)), \ldots, (w_m, f(w_m))\} {(w1,f(w1)),(w2,f(w2)),,(wm,f(wm))}

5、文本特征处理

5.1、添加 n-gram 特征

定义:将相邻 n n n 个词作为一个特征,捕捉局部词组信息。
方法:使用 Python 库(如 s c i k i t scikit scikit- l e a r n learn learn)生成 n n n-gram 特征。
数学表示
T T T 为文本序列, w i w_i wi 为词语。 n n n-gram 特征可以表示为:
{ ( w i , w i + 1 , … , w i + n − 1 ) } \{(w_i, w_{i+1}, \ldots, w_{i+n-1}) \} {(wi,wi+1,,wi+n1)}

5.2、文本长度规范

定义:规范文本长度,以确保输入张量的一致性。
方法:截断或填充文本,使其达到固定长度。
数学表示
T T T 为文本序列, L L L 为固定长度
规范文本长度可以表示为: T → T ′ T \rightarrow T' TT
其中, T ′ T' T 为长度为 L L L 的文本序列。

6、数据增强方法

回译数据增强法
定义:通过将文本翻译成另一种语言再翻译回来,生成新的变体。
方法:使用机器翻译工具(如 G o o g l e Google Google T r a n s l a t e Translate Translate A P I API API)进行回译。
数学表示
T T T 为原始文本, T ′ ; T'; T; 为回译后的文本
回译过程可以表示为: T → T ′ T \rightarrow T' TT

7、文本预处理的具体实例

7.1、中文文本预处理实例

  1. 分词:使用结巴分词( j i e b a jieba jieba)进行分词。
  2. 词性标注:使用 j i e b a . p o s s e g jieba.posseg jieba.posseg 进行词性标注。
  3. 命名实体识别:使用 H a n L P HanLP HanLP 进行命名实体识别。
  4. 文本向量化:使用 W o r d 2 V e c Word2Vec Word2Vec 进行词向量表示。
  5. 数据分析:统计标签数量分布、句子长度分布,生成关键词词云。
  6. 特征处理:添加 n n n-gram 特征,规范文本长度。
  7. 数据增强:使用 B a i d u Baidu Baidu 翻译 A P I API API 进行回译。

7.2、英文文本预处理实例

  1. 分词:使用 N L T K NLTK NLTK S p a C y SpaCy SpaCy 进行分词。
  2. 词性标注:使用 N L T K NLTK NLTK S p a C y SpaCy SpaCy 进行词性标注。
  3. 命名实体识别:使用 S p a C y SpaCy SpaCy S t a n f o r d Stanford Stanford N E R NER NER 进行命名实体识别。
  4. 文本向量化:使用 G l o V e GloVe GloVe F a s t T e x t FastText FastText 进行词向量表示。
  5. 数据分析:统计标签数量分布、句子长度分布,生成关键词词云。
  6. 特征处理:添加 n n n-gram 特征,规范文本长度。
  7. 数据增强:使用 G o o g l e Google Google 翻译 A P I API API 进行回译。

8、小结

通过这些预处理步骤,我们可以有效提升文本数据的质量,从而提高后续模型的性能和效果。
文本预处理不仅是NLP的基础环节,也是提升模型效果的重要手段。
每一步预处理都需要根据具体任务和数据特点进行调整和优化,以达到最佳效果。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • K8s集群里 中Flannel的状态显示为CrashLoopBackOff 时
  • Stable Diffusion绘画 | 提示词基础原理
  • 深度学习线性代数基础
  • 坐标变换矩阵
  • CentOS7 VMware虚拟机基于NAT配置网络IP
  • 【机器学习sklearn实战】岭回归、Lasso回归和弹性网络
  • PyCharm 2024.1 总结和最新变化
  • 大家不推荐开放式耳机?开放式耳机的优缺点
  • EasyExcel实现100w数据导入导出
  • React中,className属性自定义组件不生效的问题
  • 全面介绍 Apache Doris 数据灾备恢复机制及使用示例
  • 循环神经网络三
  • uniapp版本更新除了plus.runtime.getProperty的解决办法
  • XHTML 简介
  • 单元测试注解:@ContextConfiguration
  • const let
  • php的插入排序,通过双层for循环
  • Swoft 源码剖析 - 代码自动更新机制
  • Unix命令
  • 多线程 start 和 run 方法到底有什么区别?
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 警报:线上事故之CountDownLatch的威力
  • 离散点最小(凸)包围边界查找
  • 那些被忽略的 JavaScript 数组方法细节
  • 前端技术周刊 2019-01-14:客户端存储
  • Java性能优化之JVM GC(垃圾回收机制)
  • python最赚钱的4个方向,你最心动的是哪个?
  • 大数据全解:定义、价值及挑战
  • 移动端高清、多屏适配方案
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • (145)光线追踪距离场柔和阴影
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (四)库存超卖案例实战——优化redis分布式锁
  • (转)shell中括号的特殊用法 linux if多条件判断
  • ***原理与防范
  • .bat批处理(一):@echo off
  • .Mobi域名介绍
  • .Net 基于MiniExcel的导入功能接口示例
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)
  • .Net接口调试与案例
  • .xml 下拉列表_RecyclerView嵌套recyclerview实现二级下拉列表,包含自定义IOS对话框...
  • /usr/bin/perl:bad interpreter:No such file or directory 的解决办法
  • @RequestBody详解:用于获取请求体中的Json格式参数
  • @Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成
  • [ web基础篇 ] Burp Suite 爆破 Basic 认证密码
  • [.net]官方水晶报表的使用以演示下载
  • [28期] lamp兄弟连28期学员手册,请大家务必看一下
  • [docker] Docker的数据卷、数据卷容器,容器互联
  • [ERROR] Plugin 'InnoDB' init function returned error
  • [EULAR文摘] 利用蛋白组学技术开发一项蛋白评分用于预测TNFi疗效