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

【自然语言处理】文本规范化知识点梳理与习题总结

目录

一、正则表达式:文本模式匹配的 “精准工具”

1. 核心语法要素

(1)字符类:定义 “能匹配哪些字符”

(2)量词:定义 “匹配次数”

(3)匹配范围:完全匹配 vs 部分匹配

2. 应用场景

二、BPE 分词:子词粒度的 “平衡艺术”

1. 核心原理:从字符到子词的迭代合并

(1)分词流程(以“together” 为例)

(2)词表构建逻辑

2. BPE 的核心特性

三、文本预处理:让文本 “更易被模型理解”

1. 词干还原(Stemming)

2. 词目还原(Lemmatization)

3. 大小写折叠(Case Folding)

4. 三者对比

四、习题整理

五、习题解答

六、总结


一、正则表达式:文本模式匹配的 “精准工具”

正则表达式(Regex)通过预定义语法描述字符串的 “合法模式”,是 NLP 中文本清洗、特定格式提取(如缩写、日期、邮箱)的核心工具。

1. 核心语法要素
(1)字符类:定义 “能匹配哪些字符”
  • \w(单词字符)

    • 匹配范围:大小写字母(a-z/A-Z)、数字(0-9)、下划线(_),等价于[a-zA-Z0-9_]
  • [a-z](小写字母集)

    • 匹配范围:仅a-z的小写字母,不包含数字、大写字母或符号。
    • 扩展:若需匹配大小写,需写为[a-zA-Z];若排除某些字母,用[^...](如[^aeiou]匹配非元音字母)。
  • \d(数字字符)

    • 匹配范围:0-9的数字,等价于[0-9]
(2)量词:定义 “匹配次数”
  • *(零次或多次)

    • 逻辑:允许前面的元素 “出现 0 次、1 次或多次”,包含 “空匹配”。
    • 示例:[a-z]*可匹配""(空)、"a""abc"
  • +(一次或多次)

    • 逻辑:要求前面的元素 “至少出现 1 次”,不允许空匹配。
    • 示例:[a-z]+必须匹配"a""abc"等,不匹配""。
(3)匹配范围:完全匹配 vs 部分匹配
  • 完全匹配:正则表达式需覆盖字符串 “所有字符”,从首字符到尾字符无遗漏。
    • 关键:默认正则可匹配 “部分片段”,若需完全匹配,需隐含 “从头到尾” 的约束(或显式用^(开头)和$(结尾)锚点)。
2. 应用场景
  • 文本清洗:剔除不符合格式的字符串;
  • 模式提取:提取特定格式文本(如英文缩写、日期、邮箱);
  • 规则验证:检查字符串是否符合预设格式。

二、BPE 分词:子词粒度的 “平衡艺术”

BPE(Byte Pair Encoding)是解决 “词表过大” 与 “未登录词(OOV)” 矛盾的子词分词算法,被 GPT、BERT 等大模型广泛采用。

1. 核心原理:从字符到子词的迭代合并
(1)分词流程(以“together” 为例)

给定词表:{_, t, o, g, e, h, r, he, the, er, r_, er_, to, ge, get},分词遵循 “最长子词匹配”:

  1. 拆分目标词:together → 初始字符序列(含词尾_):t o g e t h e r _
  2. 从左到右找最长子词:
    • 首字符t:检查词表中以t开头的最长子词→to(词表存在),匹配to,剩余序列:g e t h e r _
    • 剩余首字符g:检查最长子词→ge(词表存在),匹配ge,剩余序列:t h e r _
    • 剩余首字符t:后续字符为h e,组合the(词表存在),匹配the,剩余序列:r _
    • 剩余r _:词表中r_存在,直接匹配;
  3. 最终分词结果:to ge the r_
(2)词表构建逻辑
  • 初始化:词表为 “所有单个字符 + 词尾标记_”;
  • 迭代合并:统计语料中 “相邻子词对” 的频率,每次合并最高频对为新子词(如to高频→合并为to),直至达到预设词表大小;
  • 核心:子词的 “频率” 决定合并优先级,高频组合优先成为长子词。
2. BPE 的核心特性
  • 词表依赖性:词表越小,子词越短(接近字符);词表越大,子词越长(接近完整词)。
  • 训练语料依赖性:词表基于训练语料的子词频率构建,对 “训练外文本” 分词时,因子词频率未知,易拆分为更短的子词。
  • OOV 处理优势:稀有词可拆分为常见子词(如"fluffernutter"拆为"fluff"+"er"+"nut"+"ter"),避免词表膨胀。

3. 应用场景

  • 大模型预处理:平衡词表大小与语义完整性(如 GPT 用 BPE 处理多语言文本);
  • 低资源语言处理:通过子词复用减少稀有词影响;
  • OOV 问题解决:将未见过的词拆分为已知子词,避免模型 “未知 token” 错误。

三、文本预处理:让文本 “更易被模型理解”

文本预处理是 NLP 流水线的第一步,通过标准化文本格式减少噪声,有三种核心技术:词干还原、词目还原、大小写折叠。

1. 词干还原(Stemming)
  • 定义:通过简单规则截断词尾,将词简化为 “词干”(可能不是合法单词),追求速度而非精准。
  • 核心逻辑:基于 “形态变化规律” 去除常见后缀(如-s/-ing/-tion),不考虑语法或词典。
  • 示例
    • "television" → 截断-ion → "televis"(非词典词);
    • "was" → 截断-s → "wa"(非词典词)。
  • 工具:NLTK 的 PorterStemmer、LancasterStemmer。
2. 词目还原(Lemmatization)
  • 定义:基于词典和语法规则,将词还原为 “词目(基础形式)”(一定是合法单词),追求精准但速度较慢。
  • 核心逻辑:需结合词性(POS)判断还原方向(同一词不同词性可能有不同词目)。
  • 示例
    • "was"(动词,be 的过去式)→ 词目"be"
    • "found"(动词,find 的过去分词)→ 词目"find"
  • 工具:NLTK 的 WordNetLemmatizer(需指定词性,否则可能不准确)。
3. 大小写折叠(Case Folding)
  • 定义:将文本统一为小写(或大写),消除 “大小写差异” 对模型的干扰(模型默认大小写为不同 token,语义上通常一致)。
  • 核心逻辑:仅改变字符大小写,不修改词形或结构。
  • 示例
    • "Kitty's" → 小写 → "kitty's"
    • "Television" → 小写 → "television"
  • 应用:几乎所有 NLP 任务的基础步骤(除需区分大小写的场景,如命名实体识别)。
4. 三者对比
技术核心目标结果特性速度典型应用场景
词干还原快速简化词形可能非合法单词搜索引擎索引、快速文本聚类
词目还原精准还原词基一定是合法单词语法分析、精准语义匹配
大小写折叠消除大小写差异仅改变大小写极快几乎所有 NLP 基础预处理

四、习题整理

1.以下哪个正则表达式可匹配英文缩写 “×××n't”(××× 为任意字母组合)?结合表 1(输入与匹配情况:don't匹配,n't/can'tdo/c9n't不匹配),选项为:

正则表达式是否匹配示例
输入是否匹配说明
don't-
n'tn't之前没有×××
can'tdon't不是结尾
c9n't不能包含数字

A. \w*n't

B. [a-z]*n't

C. [a-z]+n't

D. [a-z][a-z]*n't

2.下列选项中哪些字符串可以被对应的正则表达式完全匹配?完全匹配是指字符串的所有字符被匹配。例如,对于正则表达式 “abc”,字符串 “abc123” 不符合匹配要求,因为 “123” 没有被匹配。

A. 正则表达式 “(\w+)(\d+(.\d+)?)”,字符串 “DongshouxueNLP10.0”

B. 正则表达式 “abc+”,字符串 “abcccc”

C. 正则表达式 “(abc)+”,字符串 “abcccc”

D. 正则表达式 “f\d+:\d+(.\d+)?”,字符串 “f1:99.0”

3.假设有一个基于 BPE 的词元分词器,所使用的词表是:{, t, o, g, e, h, r, he, the, er, r, er_, to, ge, get},那么 “together” 将被分词为:

A. t o g e t h e r _

B. to get he r_

C. to ge the r_

D. to ge th er_

4.假设有一个基于 BPE 的词元分词器 A,其训练语料是由基于空格的分词器 B 在某个语料库 C 上分词所得的词元集合。请问以下哪一项陈述不正确?

A. 当 A 的词表大小不受限制时,A 在语料库 C 上产生与 B 相同的分词

B. 当 A 的词表大小不受限制时,A 在任意语料库上产生与 B 相同的分词

C. 与 B 相比,A 可以通过将稀有词元分词成常见的子词来减小词表大小

D. A 可以根据不同的词表大小和不同的训练语料库产生不同的分词结果,B 则不受不同训练语料库的影响

5.对于输入句子 “Kitty's cat was found behind the television.”,以下 3 个输出分别是采用什么方法的处理结果?

1)Kitti cat wa found behind the televis

2)Kitty's cat be find behind the television

3)kitty's cat was found behind the television

A. 词干还原

B. 词目还原

C. 大小写折叠

五、习题解答

1.要求匹配 “×××n't”,其中 ××× 是任意字母组合,结合示例分析选项:

  • 选项 A\w*n't\w匹配字母、数字、下划线,而示例中 “c9n't”(包含数字)不匹配,所以 A 不符合,因为它会匹配数字的情况。
  • 选项 B[a-z]*n't*表示前面的字符(小写字母)出现 0 次或多次。但 “n't”(前面 0 个字母)会被匹配,而示例中 “n't” 是不匹配的,所以 B 不符合。
  • 选项 C[a-z]+n't+表示前面的小写字母出现 1 次或多次,这样就要求 “n't” 前面必须有至少 1 个小写字母,符合 “×××”(任意字母组合,至少一个)的要求。同时,只匹配字母,不会匹配数字(如 “c9n't”),且要求 “n't” 在结尾(因为正则到 n't 结束),符合示例中 “can'tdo”(n't 不是结尾,不匹配)的情况。
  • 选项 D[a-z][a-z]*n't。这和[a-z]+n't其实是等价的(因为[a-z][a-z]*就是至少一个小写字母),所以这里可能需要再仔细看,不过通常这种题选 C 或 D 中更简洁的,或者看题干的 “×××” 是否允许构造方式。不过再仔细想,[a-z]+已经涵盖了 “一个或多个”,而 D 的写法是 “一个字母 followed by 零个或多个字母”,和 C 是一样的效果。但再看示例,“don't” 是匹配的,“n't” 不匹配(因为前面没有字母),所以需要前面至少一个字母。现在看选项,C 和 D 都满足前面至少一个字母,但再看选项的差异,可能题目中的选项 C 是正确的,因为更直接表示 “一个或多个字母然后 n't”。

答案:C

2.“完全匹配” 指整个字符串被正则表达式匹配:

  • 选项 A:正则"(\w+)(\d+(\.\d+)?)",字符串 “DongshouxueNLP10.0”。\w+匹配字母、数字、下划线,但 “DongshouxueNLP” 是字母,然后\d+(\.\d+)?需要匹配数字(如 10.0),但字符串中 “NLP” 是字母,出现在数字前面,所以正则中的\w+会匹配到 “DongshouxueNLP”,然后剩下的 “10.0” 可以被\d+(\.\d+)?匹配,所以整个字符串是否被完全匹配?正则是两个分组,\w+匹配前面的字母部分,\d+(\.\d+)?匹配后面的数字部分,所以整个字符串 “DongshouxueNLP10.0” 可以被完全匹配,因为\w+匹配 “DongshouxueNLP”,\d+(\.\d+)?匹配 “10.0”,所以 A 符合。
  • 选项 B:正则"abc+",表示 “ab” 后面跟着一个或多个 “c”。字符串 “abcccc”,“abc+” 会匹配 “abcccc”(a、b、然后多个 c),所以完全匹配,B 符合。
  • 选项 C:正则"(abc)+",表示 “abc” 这个组出现一次或多次。字符串 “abcccc”,“abc” 需要是连续的 “a b c”,但字符串是 “a b c c c c”,没有多个 “abc”,且第一个部分是 “abc”,但后面是 “ccc”,所以正则(abc)+需要至少一个 “abc”,但字符串 “abcccc” 中 “abc” 之后是 “ccc”,不是 “abc”,所以整个字符串不能被(abc)+完全匹配,因为(abc)+要求是 “abcabc...” 这样的形式,所以 C 不符合。
  • 选项 D:正则"f\d+:\d+(\.\d+)?",字符串 “f1:99.0”。f匹配开头的 f,\d+匹配 1,然后:,接着\d+匹配 99,然后(\.\d+)?匹配.0,所以整个字符串 “f1:99.0” 被完全匹配,D 符合。

答案:ABD

3.BPE(字节对编码)的分词是基于词表中最频繁的子词合并,从左到右匹配最长可能的子词。词表是:{, t, o, g, e, h, r, he, the, er, t, er_, to, ge, get}。

现在分词 “together”:

  • 首先看最长匹配,“to” 在词表中,所以先分 “to”。
  • 剩下的 “gether”,再看 “ge” 在词表中,分 “ge”。
  • 剩下的 “ther”,“the” 在词表中,分 “the”。
  • 剩下的 “r”,加上可能的结尾(这里词表中有 “r_” 吗?或者看选项,选项 C 是 “to ge the r_”,符合 BPE 的最长匹配,因为 “to”、“ge”、“the”、“r_”(假设结尾用_表示)。

所以 “together” 分词为 “to ge the r_”。

答案:C

4.BPE 分词器 A 是基于训练语料(由分词器 B 在语料库 C 上分词的词元集合)训练的。分析选项:

  • 选项 A:当 A 的词表大小不受限制时,A 会不断合并直到所有可能的子词都被合并,最终会还原成分词器 B 的分词结果(因为训练语料来自 B 在 C 上的分词),所以 A 在语料库 C 上产生与 B 相同的分词,正确。
  • 选项 B:当 A 的词表大小不受限制时,A 在任意语料库上产生与 B 相同的分词。错误,因为 A 是在语料库 C 上训练的,当换其他语料库时,B 的分词方式可能不同(B 是基于空格的分词器,不同语料库的空格分词结果可能因文本不同而不同),且 A 的训练是基于 C 的,所以在其他语料库上不一定和 B 相同。
  • 选项 C:与 B(基于空格的分词器,词表是所有空格分隔的词,稀有词多)相比,A 可以将稀有词分成常见的子词(如把 “uncommon” 分成 “un” 和 “common”),从而减小词表大小,正确。
  • 选项 D:A 的分词结果依赖于词表大小(词表小则合并少,词表大则合并多)和训练语料库(不同语料库的子词频率不同,合并顺序不同);而 B 是基于空格的分词器,分词只看空格,不受训练语料库的影响(只要文本的空格一致,分词就一致),正确。

答案:B

5.分析三个输出和方法(词干还原、词目还原、大小写折叠):

  • 词干还原(Stemming):将单词还原为词干,可能会产生不规范的形式(如去掉词尾)。输出 1)“Kitti cat wa found behind the televis” 中,“Kitty's” 变成 “Kitti”,“was” 变成 “wa”,“found” 可能还原,“television” 变成 “televis”,这些是词干还原的特征(粗糙的词尾截断)。
  • 词目还原(Lemmatization):将单词还原为词典中的基本形式(词目),更准确。输出 2)“Kitty's cat be find behind the television” 中,“was” 变成 “be”,“found” 变成 “find”,这是词目还原(如 “was” 的词目是 “be”,“found” 的词目是 “find”)。
  • 大小写折叠(Case Folding):将所有字母转为同一大小写(通常小写)。输出 3)“kitty's cat was found behind the television” 中,“Kitty's” 变成 “kitty's”,是大小写折叠(首字母小写)。

所以对应关系:

1)→ 词干还原(A);

2)→ 词目还原(B);

3)→ 大小写折叠(C)。

六、总结

本文系统介绍了NLP中的三项基础技术:

1)正则表达式作为文本模式匹配工具,重点解析字符类、量词等核心语法;

2)BPE分词算法通过子词合并解决词表膨胀问题,分析其词表构建和分词逻辑;

3)文本预处理技术(词干还原、词目还原、大小写折叠)的对比与应用场景。

文章通过典型示例和习题解析,阐明各项技术的核心原理与适用条件,构建了从文本清洗到模型输入的完整技术链条。这些基础技术直接影响NLP任务的输入质量与模型性能,是深入理解复杂NLP系统的前提。

http://www.dtcms.com/a/434406.html

相关文章:

  • 上海商城网站建设公司算命手机网站开发
  • 重塑Excel的智慧边界:ExcelAgentTemplate架构深度解析与LLM集成最佳实践
  • QoS之拥塞避免配置方法
  • vscode搭建C/C++配置开发环境
  • 在鸿蒙NEXT中发起HTTP网络请求:从入门到精通
  • 做网站商家网站公告栏代码
  • 做企业网站联系群晖网站建设
  • Java坐标转换的多元实现路径:在线调用、百度与高德地图API集成及纯Java代码实现——纯Java代码实现与数学模型深度剖析
  • 【socket编程中的常规操作,阻塞/非阻塞模式的差别】
  • 5G NR PDCCH DCI
  • 网站建设海淀区360浏览器打开是2345网址导航
  • 《代码随想录》二叉树专题算法笔记
  • CSS3 用户界面
  • 虚幻引擎UE5专用服务器游戏开发-32 使用Gameplay Tags阻止连招触发
  • 鼠标垫东莞网站建设网站建设公司的公司
  • SOAR技术与高效网络安全运营
  • Node.js 本地服务部署、常驻及调用完整笔记
  • Java 工具类 Hutool、Guava 与 Apache Commons 的区别
  • 怎么创建网站挣钱济南产品网站建设外包
  • BEV query 式图片点云视觉特征融合
  • 操作系统应用开发(十二)RustDesk 用户服务器搭建——东方仙盟筑基期
  • 将若依(RuoYi)项目创建为私有Gitee仓库的完整步骤
  • 网站上的百度地图标注咋样做app开发制作专业吗
  • TCP 协议核心面试题 (附答案详解)
  • Spring Security 实战:彻底解决 CORS 跨域凭据问题与 WebSocket 连接失败
  • Tabby下载安装与连接服务器
  • Apache Beam入门教程:统一批流处理模型
  • 计算机毕业设计 基于Hadoop的信贷风险评估的数据可视化分析与预测系统 大数据毕业设计 Hadoop毕业设计选题【附源码+文档报告+安装调试】
  • 【QT常用技术讲解】QTablewidget单元格存储隐藏的数据
  • K8s学习笔记(九) job与cronjob