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

【自然语言处理2】分词

分词的评价标准:

中文分词面临的挑战

1. 缺少统一的分词标准

  • 认知差异:不同人对于“什么是词”的界定存在主观差异,实验显示人工分词的认同率仅在0.76左右。

  • 领域差异:不同专业领域对分词的粒度要求不同,导致标准之间存在矛盾甚至不一致。

2. 严重的歧义问题一句话往往存在多种合理的切分方式,主要分为三类:

  • 交集型歧义:字词组合存在交叉重叠。例如“表面的”可切分为“表面/的”或“表/面的”。

  • 组合型歧义:同一个词串在不同语境下词性或结构不同。例如“门把手”(名词)与“把手拿开”(动词+名词)。

  • 真歧义:脱离上下文完全无法判定唯一意思的句子。例如“乒乓球拍卖完了”(球拍/卖完了 vs 球/拍卖完了)。

3. 新词识别(OOV)困难

  • 动态演变:语言不断发展,专业领域新词和具有时效性、随意性的日常口语(网络用语)层出不穷。

  • 边界难定:现有的无论是基于规则库、统计还是神经网络的方法,都很难准确界定未见过的新词边界,极易将其错误拆散(如前面的 OOV 召回率低的问题),从而丧失词汇的真实含义。

分词方法概述

1.基于词典的最长词汇匹配算法

2.基于统计:N元组概率语言模型分词,隐马尔可夫模型,条件随机场

3.基于深度神经网络:循环神经网络中文分词模型LSTM,LSTM+CRF,BiLSTM-CRF,LSTM-CNNs-CRF等;Transformer中文分词模型

基于词典的最长词汇匹配算法

包括前向、后向和双向最大匹配算法

1.正向最大匹配算法 (Forward Maximum Matching, FMM)

核心思路:从左向右扫描。

  1. 每次从句子的当前起始位置,截取长度为 $L$ 的子串。

  2. 将该子串去词典中查找。

    • 如果找到了,说明这是一个词,将其切分出来,然后从这个词的下一个字开始,继续截取长度为 $L$ 的子串。

    • 如果没找到,就把子串的最右边一个字去掉(长度减 1),再拿去词典中查找。

  3. 如此循环,直到找到词典中的词,或者子串长度变为 1(单字直接切分)。

FMM 示例演示:句子研究生命的起源,从左向右。

  • 步骤 1:截取前 3 个字研究生。查词典,!切分出:研究生。剩余句子:命的起源

  • 步骤 2:从开始截取 3 个字命的起。查词典,无。去掉右边一个字变命的。查词典,无。变单字,切分出:。剩余句子:的起源

  • 步骤 3:从开始截取 3 个字的起源。查词典,无。变的起,无。变单字,切分出:。剩余句子:起源

  • 步骤 4:截取 2 个字(因为只剩2个)起源。查词典,!切分出:起源

  • FMM 最终结果研究生 / 命 / 的 / 起源(这里产生了错误分词)。

2. 逆向最大匹配算法 (Backward Maximum Matching, BMM)

核心思路:从右向左扫描。

  1. 每次从句子的当前末尾位置向前,截取长度为 $L$ 的子串。

  2. 将该子串去词典中查找。

    • 如果找到了,切分出该词,并从该词前面的一个字继续向左截取。

    • 如果没找到,就把子串的最左边一个字去掉(长度减 1),再查找。

  3. 循环直到找到词,或长度变为 1。最后把结果倒序输出。

BMM 示例演示:句子研究生命的起源,从右向左。

  • 步骤 1:截取最后 3 个字的起源。查词典,无。去掉左边变起源。查词典,!切分出:起源。剩余待处理:研究生命的

  • 步骤 2:从向前截取 3 个字生命的。查词典,无。变命的,无。变单字,切分出:。剩余待处理:研究生命

  • 步骤 3:从向前截取 3 个字究生命。查词典,无。变生命。查词典,!切分出:生命。剩余待处理:研究

  • 步骤 4:从向前截取 2 个字研究。查词典,!切分出:研究

  • BMM 最终结果研究 / 生命 / 的 / 起源(分词正确)。

(注:统计表明,汉语中偏正结构较多,句子的核心通常在后面,因此 BMM 的切分准确率通常略高于 FMM。)

3. 双向最大匹配算法 (Bi-directional Maximum Matching, Bi-MM)

核心思路:将 FMM 和 BMM 的结果结合起来,通过一套启发式规则(消歧规则)来决定最终采用哪个结果。

常见的评判规则优先级如下(一步步向下比较,直到分出胜负):

  1. 词数越少越好:比较 FMM 和 BMM 结果的切分词汇数量,词数少的通常更合理(即分出的词越长越好)。

  2. 单字词越少越好:如果词数相同,比较两者分出的“单字”数量。单字越少的说明整体词汇意义更连贯,保留该结果。

  3. 默认选逆向:如果词数和单字数都完全一样,且切分结果不同,则默认选择 BMM(基于 BMM 统计表现更好的经验)。

Bi-MM 示例演示

  • FMM 结果:研究生 / 命 / 的 / 起源

    • 词数:4 个

    • 单字词数:2 个 (,)

  • BMM 结果:研究 / 生命 / 的 / 起源

    • 词数:4 个

    • 单字词数:1 个 ()

  • 决策过程:两者的总词数相同(都是 4 个),进入第二规则;BMM 的单字词数(1个)小于 FMM(2个)。

  • Bi-MM 最终结果:选择 BMM 结果,即研究 / 生命 / 的 / 起源

优缺点

基于统计的确定性分词算法

这里的确定性,默认就是 基于词典 DAG 图 + N-Gram 语言模型的分词算法。

当一个句子 C 存在多种可能的切分方案时,如何选择最合理的一个?

  • 贝叶斯公式转化:寻找最合理的切分方案,即寻找条件概率 P(S|C$ 最大的方案。通过贝叶斯公式进行推导。

  • 化简:对于同一个输入句子,分母 P(C) 是常数;而给定分词结果 S,它唯一确定还原为原始句子 C,所以 P(C|S) = 1。

  • 最终目标:最大化 P(S|C) 等价于最大化该词序列本身的联合概率 P(S)。问题转化为了:如何计算一个词序列的概率?

为了计算,引入了马尔可夫假设(N元语法模型)。

  • 一元模型 (Unigram,):假设词与词之间绝对独立。P(S) 简化为各个词概率的乘积:。为了防止连续相乘导致浮点数下溢,通常取对数转化为加法:

  • 二元模型 (Bigram):一元模型太粗糙,二元模型假设每个词的出现依赖于它前面的一个词。公式变为:。考虑上下文(二元模型)能更准确地找出符合人类语言习惯的最大概率路径。

计算模型有了,但如果穷举所有可能的切分方式,计算量会随句子长度呈指数级爆炸。因此引入了图论和动态规划。

  • 构建有向无环图 (DAG, 切分图):将句子中的每个字作为节点,如果两个节点之间构成词典中的一个词,就连一条有向边。边的权重就是该词由 N-Gram 模型算出的概率(或对数概率)。

  • 动态规划寻路 (Viterbi 算法思想)

    • 状态定义route[i]表示从第 i 个字符开始到句子末尾的最大概率。

    • 状态转移方程route[i] = max { logP(wij) + route[j+1] }。即当前节点的最优解,等于“当前词的概率”加上“剩余子串的最优解”的最大值。

    • 执行过程:从句子的末尾向前逆向遍历,记录每一步的最优决策,最后从头到尾回溯出最佳分词路径。

我们将“有意见分歧”标记为:1:有, 2:意, 3:见, 4:分, 5:歧(索引 1 到 5,终点为 6)。

我们需要填一张表route[1...6]。初始条件为route[6] = 0(到达终点,没有剩余概率)。

  • 计算route[5](从字符 5“歧”开始)

    只有一个词“歧”,路径概率为 logP(“歧”) + route[6] = logP(“歧”) + 0。(这里概率使用log来表示是为了简化概率的计算,log把乘法变加法,也防止乘法计算数值下溢)

  • 计算route[4](从字符 4“分”开始)

    有两个选择:

    1. 词“分” +route[5]

    2. 词“分歧” +route[6]

      我们选其中概率最大的,记录下选的是哪个词。

  • 计算route[1](从字符 1“有”开始)

    这是最关键的一步,我们考察所有以“有”开头的词:

    1. “有” +route[2]

    2. “有意” +route[3]

    3. “有意见” +route[4]

      route[1] = max(

      logP(“有”) + route[2],

      logP(“有意”) + route[3],

      logP(“有意见”) + route[4]

      )

当完成了所有route值的计算,现在表里存满了“最优解”。回溯就是把路径“连起来”:

  1. 从起点 1 出发:查看你在计算route[1]时,选的是哪个词?假设选了“有意见”。

  2. 跳转:因为选了“有意见”,词跨度是 3 个字,下一步直接跳到字符 $1+3=4$。

  3. 继续:查看route[4]当初选了哪个词?假设选了“分歧”。

  4. 跳转:跨度 2 个字,跳到字符 $4+2=6$。

  5. 结束:到达 6,路径搜索完成。最佳路径:有意见 / 分歧

为什么一定要“从后往前”算?

  • 逆向动态规划:相当于在问“如果我站在位置 $i$,后面怎么走最顺?”。计算完route[1]后,就知道了整个句子的最优概率。

  • 为什么要记录“决策”:在route[i] = max{...}这一步,如果不记录下当时选了哪个词(比如是选了“有意”还是“有意见”),回溯时就不知道该往哪跳了。

为什么叫“确定性 (Deterministic)”?

这里的“确定性”并不是指“它的结果一定是对的”,而是指它的搜索空间是绝对确定的、由词典严格框死的

  1. 候选项是确定的:算法第一步是查词典。只要词典里有这个词,它才有可能成为分词结果的一部分。如果词典里没有“大兴机场”,那么在生成的有向无环图(DAG)中,就绝对不可能出现代表“大兴机场”的节点。

  2. 切分边界是确定的:它是在一组“确定的合法词汇”中,利用 N-Gram 统计概率来挑出一条总分最高的路径(使用动态规划/Viterbi)。它的本质是路线选择

所以,这套算法的完整描述应该是:“在确定的词典路径空间下,基于 N-Gram 统计概率进行消歧的分词算法”

为什么 HMM 和 CRF 不叫“确定性分词”?

HMM 和 CRF 虽然也是基于统计的,但它们在学术体系中通常被归类为“基于序列标注的分词算法 (Sequence Labeling)”

与 N-Gram 的核心区别在于:

  • 它们的空间是开放的(非确定性的):HMM/CRF不需要事先查词典画一张图。它们是挨个看句子里的字,给每个字打上B(词首)、M(词中)、E(词尾)或S(单字)的标签。一旦模型能够正确预测出这串标签序列(B-E-B-E),根据标签,我们只需在所有ES后面加上一刀,原本的“分词”任务就自动完成了。所以,预测标签序列的过程,本身就是确定分词边界的过程。

  • 无中生有的能力:哪怕是一个字典里从来没出现过的新词(比如网友刚造出来的梗),只要模型根据上下文的统计特征觉得它是B-M-E,它就能把这个词“凭空”切出来。

未登录词识别

  • 词表大小的硬性限制: 在深度学习和 NLP 实践中,为了控制模型参数量和计算复杂度,通常只会保留最高频的几万个词。那些海量的低频词(长尾词)无法被纳入词表,它们在模型输入时会被统一替换为一个特殊的占位符[UNK](Unknown)。后果:一旦变成[UNK],这个词本身包含的语义信息就彻底丢失了。

  • 专有名词与时效性: 绝大多数人名、地名、机构名(命名实体)都是低频词。此外,互联网每天都在批量制造新词(如“绝绝子”、“尊嘟假嘟”),旧词表永远跟不上新词产生的速度。

  • 统计规律的残酷现实: 幻灯片引用了 MIT 的统计数据(也是著名的齐普夫定律 Zipf's Law的体现):即使你的训练语料达到了惊人的 1000 万词,字典大小扩充到 10 万,新词出现的比率依然停留在 10% 左右,呈现出一条无法降到 0 的长尾曲线。这意味着永远无法通过“穷举”来构建一个完美的词典。

既然不能依赖现成的词典,那我们能不能从一段完全陌生的生语料中,自动把那些“长得像词”的字符串给揪出来?这就是基于统计的新词发现。

它的核心思想是:一个字串如果真的成了一个“词”,那么它在统计上必然会表现出两种极端的特质:内部抱团,外部自由

特质一:内部凝固度 (PMI - 点间互信息)
  • 直观理解:如果 x 和 y 是一个词的两个部分,那么它们应该总是“粘”在一起出现。比如“电影”和“院”,它们在一起出现的概率,应该远远高于它们各自独立出现概率的乘积。

  • 数学度量:点间互信息 (Pointwise Mutual Information)

    • P(x,y):x 和 y 在语料库中连在一起出现的概率。

    • P(x)P(y):假设 x 和 y 是完全独立的两个字,它们碰巧挨在一起的理论概率。

  • 结论:如果 PMI 的值很高(大于某个阈值),说明 x 和 y 是“非偶然”地结合在一起,它们的凝固度很强,极有可能是一个词。相反,像“的电影”,虽然经常出现,但因为“的”和“电”各自出现的频率都很高,它们的 PMI 值会很低,说明只是碰巧挨着的。

特质二:自由运用程度 (信息熵 Entropy)
  • 直观理解:一个真正的词,不仅内部要紧密,它在句子中应该能灵活运用,能够和各种不同的词搭配。

    • 反例:假设我们通过 PMI 发现“清华大”这个字串凝固度很高。但如果我们去语料库里看,“清华大”的后面永远只跟着一个字:“学”。这意味着“清华大”本身并不完整,它不自由,所以不能算作一个词。

    • 正例:“清华大学”后面可以接“的教授”、“在海淀”、“是一所”,它后面接的字五花八门。

  • 数学度量:左右信息熵

    信息熵在信息论中代表“混乱度/丰富度”。

    • 左邻熵 (Left Entropy):这个字串左边出现的字的丰富程度。

    • 右邻熵 (Right Entropy):这个字串右边出现的字的丰富程度。

    • 公式:。我们取左右邻熵的最小值作为这个词的自由度。

  • 结论:如果一个字串不仅内部凝固度高,而且它的左边和右边都能接各种各样杂七杂八的字(左右熵都很大),那么我们就非常有信心地认定:这是一个独立的新词!

分词工具

jieba 设计了四种分词模式,这本质上是为了在准确率 (Precision)召回率 (Recall)之间做权衡,以适配不同的下游任务:

  • 精确模式:力求将句子无歧义地切开,适合作为文本分析、特征提取的标准输入。

  • 全模式:追求极致的召回率,把所有可能的词都扫描出来。这会产生大量冗余和歧义,一般不直接用于语义理解。

  • 搜索引擎模式:这是在构建信息检索 (IR) 或 RAG 系统的文档向量化阶段非常关键的模式。它在精确切分的基础上,对长词再次进行切分。

    • 工程意义:如果使用精确模式,西安电子科技大学会作为一个整体被存入倒排索引。此时用户如果搜索短语西安,可能会因为词不匹配而导致召回失败。搜索引擎模式通过切分出西安电子等粒度,有效提升了长尾查询的召回率。

  • Paddle 模式:引入深度学习(双向 GRU 网络),这弥补了纯词典或传统 HMM 模型在上下文理解上的不足,提升了对新词的识别能力。

通用分词器的一个致命弱点:跨领域性能衰减。在专业领域表现不佳

比如在“会计经济法”这一专业领域的测试。可以看到,像 jieba、LTP 这样的通用分词器,在该领域的未登录词(OOV)率高达 31% 左右。

  • 症结所在:通用分词器的内置词典是基于新闻、百科等开放域语料训练的。当它们面对法律文书中的专业法条、特定的法理概念,或者是医疗、金融等垂直领域的行话时,往往会将其错误拆散。

  • 实践指导:在构建特定领域的智能系统(如法律文档阅读理解或摘要提取)时,直接开箱即用通用分词器是不可行的。通常必须介入挂载领域专属的业务词典(强规则干预),或者使用该领域的专业语料对深度学习模型进行微调,以压降 OOV 错误对下游任务(如知识图谱实体抽取、向量检索)造成的级联破坏。

思考

问题一:在大量文本的 NLP 任务中,是否可以忽略少量歧义带来的影响?

回答:不能一概而论,这完全取决于“下游任务的性质”。

  1. 可以忽略的情况(宏观/统计驱动型任务):在诸如文本分类、情感分析、主题模型等任务中,少量的分词歧义通常可以被忽略。因为这类任务依赖的是全局特征的统计分布(如词袋模型)或深层语义向量(如 BERT 的 Sentence Embedding)。在海量数据的冲刷下,个别词切错造成的“噪音”会被模型自身的鲁棒性吸收,不会对最终的宏观分类结果产生决定性影响。

  2. 不可忽略的情况(微观/精度驱动型任务):信息抽取(实体识别/关系抽取)、知识图谱构建、法律文书分析、机器翻译智能问答(QA / RAG)中,歧义绝对不可忽略。在这些场景下,一个实体的边界切分错误(例如把法条中的“原告”和后续动词切混,或者人名切错),会导致特征提取彻底失败,进而引发严重的错误级联(Error Propagation),直接摧毁整个句子的结构树或推理链条。

问题二:“研表究明”这种汉字乱序会不会影响中文分词?

回答:会产生显著影响,且是对不同时代的分词技术进行了一次“降维打击”。

问题这句话本身就巧妙地应用了乱序(“研表究明”)。人类能够顺畅阅读,是因为人类大脑具备自上而下的全局预测脑补纠错能力。但对于机器而言:

  1. 对传统规则/词典分词(如最大匹配):灾难性打击。词典里有“研究表明”,但绝对没有“研表究明”。基于词典的方法会瞬间失效,将其切碎成单字(“研/表/究/明”),导致严重的词义丢失。

  2. 对传统统计分词(如 HMM / N-Gram):严重干扰。N-Gram 极度依赖局部的词汇共现频率。汉字乱序破坏了原本的高频转移概率,会导致模型算出极低的概率路径,从而切出错误的结果。

  3. 对深度学习模型(如 BiLSTM-CRF / Transformer):具有一定的抵抗力,但仍有影响。带有自注意力机制(Self-Attention)的深度学习模型,由于能够捕获全局字符级的上下文特征,它能“看到”这句话里包含了“研、究、表、明”这几个字,即使顺序错了,其输出的深层语义向量仍然会非常接近正确语序的向量。因此,深度学习分词器对这类乱序现象的容错率最高,表现最接近人类的认知。

问题三:可以从哪些方面来对专业领域新词发现任务进行评价?

回答:专业领域的新词发现评价体系,应该从“内在指标(Intrinsic)”和“外在指标(Extrinsic)”两个维度结合来进行。

1. 内在评价(关注新词发现算法本身的质量):

  • OOV Recall(未登录词召回率):最核心的指标。模型到底成功找出了多少原本不存在于通用词典中的专业新词。

  • Precision(新词准确率):模型找出来的“新词”,有多少是真正有意义的专业词汇?(防止模型为了提高召回率,把“的地得”和乱码也当成新词切出来,即防止过度切分)。

  • 统计学验证基准:即提到的,设定阈值来检验提取出的新词的内部凝固度(PMI)自由运用程度(左右信息熵)是否达标。

2. 外在评价(关注新词对下游工程任务的增益):这是工业界最看重的评价方式。不单独评估新词对不对,而是看把它加入词库后,系统整体性能变好了没有。

  • 信息检索/搜索引擎评估:将新词引入倒排索引后,专业长尾词汇的搜索召回率(Recall@K)是否提升?

  • 序列标注任务评估:将含有新词的分词结果输入到命名实体识别(NER)或自动摘要抽取模型中,观察最终 F1 分数是否提高。如果新词发现做得好,下游的实体边界识别往往会得到显著改善。

http://www.jsqmd.com/news/858564/

相关文章:

  • 黑苹果配置革命:OpCore-Simplify如何用10分钟解决3天的难题?
  • 拒绝移液误差背锅!进口助吸器性能与口碑TOP榜:哪些品牌评价好、长期用性价比更高? - 品牌推荐大师
  • 为内部知识库构建AI问答层,Taotoken多模型选型与接入实践
  • 2026洛阳手工米皮加盟与培训完全指南:从零经验到月入万元的轻资产创业路径 - 年度推荐企业名录
  • 太原启睿再生资源:太原专业的工地废料回收公司选哪家 - LYL仔仔
  • G-ratio Overload
  • 07 DeiT 论文精读:Training data-efficient image transformers distillation through attention
  • XZ9628输入电压2-24V 输出电压可调可达28V 内部4A限流 升压转换器芯片
  • 终极指南:如何在Mac上免费快速制作Windows启动盘?
  • 主流C语言开发环境(IDE)汇总与推荐
  • 视启未来[特殊字符]百度智能云:给大模型一双手,让AI真正触碰物理世界
  • 西安补习学校哪家好?2026家长口碑实测推荐靠谱机构 - 深度智识库
  • 领跑者!2026玻璃钢储罐厂家TOP5:以技术降本增效,以服务护航安全 - 速递信息
  • 2026西安公司注销代办哪家靠谱?异地|执照丢失|吊销注销一站式办理|宸悦财税 - 奔跑123
  • 2026年深圳藤校申请高端定制怎么选?留学中介哪家更靠谱更专业 - 品牌2025
  • OpenModScan:工业自动化领域的终极Modbus调试解决方案
  • Superpowers 角色体系:六种智能体协作详解
  • 协作机器人焊接厂家哪家强?六大优质工厂核心优势与案例全解析 - 深度智识库
  • FLUX.1-dev FP8量化模型终极指南:6GB显卡也能玩转AI绘画
  • 一步步教你用Nodejs为应用集成Taotoken大模型能力
  • 2026 年 5 月|企业培训成本高、落地难?3 款系统帮你搭建高效培考平台 - 讲清楚了
  • Prism Launcher:高效管理Minecraft多版本安装的完整解决方案
  • 上海洛必达信息科技客服咨询AI流量赋能,重塑智能体验新标杆腾飞 - 速递信息
  • 如何免费解锁SonarQube社区版分支分析:3个简单步骤实现企业级代码质量管理
  • 接入Taotoken后,API调用成功率与月度账单清晰度带来的管理效率提升
  • 中小企业做 GEO实操指南:不堆关键词,如何让AI优先“引用”你?
  • 2026 年 5 月|执业医师备考资料杂、提分难?3 款软件实测帮你少走弯路 - 讲清楚了
  • GetQzonehistory:3分钟轻松备份你的QQ空间十年回忆
  • PowerBI主题模板终极指南:35款专业模板一键美化数据报表
  • 告别Cursor试用限制:3步解锁永久Pro功能的智能解决方案