中文分词概述:从定义到实战

大家好,我是你们的老朋友。今天咱们聊聊中文分词。

说实话,做 NLP 这么多年,我见过太多新手一上来就怼模型,结果连分词这关都没过好。嗯,这其实是个大坑。今天我就把这块掰开了讲清楚。

一、中文分词的定义

中文分词,说白了就是——把连续的中文字符串,切分成有意义的词语序列。

举个例子:

输入:"我爱自然语言处理"
输出:["我", "爱", "自然语言处理"]

你看,机器不懂什么叫「自然语言处理」,它只看到一堆字。分词就是帮它划出边界。

英文天然有空格分隔,中文没有。这就是为什么分词是中文 NLP 的第一步,也是绕不开的一步。

核心定义:中文分词(Chinese Word Segmentation, CWS)是将汉字序列切分成词序列的过程。它是中文信息处理的基础任务。

二、难点与挑战

你以为分词很简单?我刚开始做项目时也这么想。结果被现实狠狠教育了一顿。

难点主要集中在这几个方面:

1. 歧义切分

同一个句子,不同切法意思完全不同。比如:

"乒乓球拍卖完了"
→ 乒乓球 / 拍卖 / 完了
→ 乒乓球拍 / 卖完了

我在项目中遇到过这种情况。用户搜索「乒乓球拍」,结果系统切成了「乒乓球」和「拍卖」,推荐了一堆拍卖信息。你说尴尬不尴尬?

2. 未登录词

词典里没有的词,比如新词、人名、地名、专业术语。你想想看,如果词典里没有「深度学习」,那「深度学习」就会被切成「深」「度」「学」「习」——这谁受得了?

3. 切分粒度

同一个词,不同场景需要不同粒度。比如:

  • 粗粒度:「北京大学」作为一个词
  • 细粒度:「北京」和「大学」分开

我建议根据任务需求选择粒度。做搜索推荐,粗粒度好;做语法分析,细粒度更合适。

4. 领域适应性

通用分词器在金融、医疗、法律等专业领域,表现往往很差。我曾经把一个医疗文本「心肌梗死」切成了「心肌」和「梗死」——嗯,虽然没错,但专业领域更希望保留「心肌梗死」作为一个整体。

避坑指南:我曾经在电商项目中直接用了通用分词器,结果「连衣裙」被切成「连」「衣裙」。用户搜「连衣裙」匹配不到商品,转化率直接掉了 15%。后来我专门做了电商领域词典,才把问题解决。

三、分词在 NLP 中的地位

分词到底有多重要?我直接说结论:

分词是中文 NLP 的基石。没有好的分词,后面的任务全是空中楼阁。

具体体现在:

下游任务 分词的影响
文本分类 分词错误会导致特征提取偏差,分类准确率下降 5-10%
信息检索 切分粒度影响召回率和准确率,尤其是长尾查询
机器翻译 分词边界直接影响翻译单元的对齐质量
情感分析 否定词和情感词的切分错误会直接翻转情感极性
命名实体识别 分词是 NER 的前置步骤,错误会传播

你想想看,如果分词阶段就把「不喜欢」切成了「不」和「喜欢」,情感分析模型就会误判为正面情感。这种错误是致命的。

我的经验:在实际项目中,我建议把分词当作一个独立模块来维护。不要指望一个通用分词器解决所有问题。我习惯的做法是:通用分词 + 领域词典 + 规则后处理,三管齐下。

四、主流分词方法概览

这里简单提一下主流方法,后面章节会详细展开:

  • 基于词典的方法:最大匹配法、逆向最大匹配、双向匹配。简单快速,但处理不了未登录词。
  • 基于统计的方法:HMM、CRF。能处理部分歧义,但需要大量标注数据。
  • 基于深度学习的方法:BiLSTM+CRF、BERT 等。效果好,但计算成本高。
  • 混合方法:词典 + 统计 + 深度学习,取长补短。我个人最推荐这种方式。

我记得刚入行时,团队还在用纯词典匹配。后来慢慢过渡到 CRF,再到现在的主流预训练模型。每一步都有血泪教训,后面我会一一分享。

五、总结

中文分词,看似简单,实则暗藏玄机。它不仅是技术问题,更是工程问题。

我给大家三个建议:

  1. 不要迷信任何一个分词器。一定要在你的数据上做评测。
  2. 领域词典是必需品。花时间整理领域词表,回报率极高。
  3. 分词结果要可解释。出了问题,要能快速定位是哪个词切错了。

好了,这一章就到这里。下一章我会详细讲基于词典的分词方法,包括代码实现和避坑指南。咱们下期见。


公众号:蓝海资料掘金营,微信deep3321