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

【漫话机器学习系列】235.切分文本(Tokenize Text)

自然语言处理的第一步:切分文本(Tokenize Text)详解

在自然语言处理(NLP)中,切分文本(Tokenization) 是我们面对原始文本时必须迈出的第一步。它决定了我们如何理解和处理语言,是几乎所有 NLP 流程的基础。

本文将从定义、原理、常见方法、中文处理注意事项等多个角度,带你彻底掌握「切分文本」这一关键步骤。


什么是切分文本(Tokenize Text)?

切分文本(Tokenization)就是将文本分割为一个个有意义的基本单位(称为“token”),这些单位可以是:

  • 单词(word)

  • 子词(subword)

  • 字符(character)

  • 句子(sentence)

  • 段落(paragraph)

在图中示例中,“我喜欢小鸟” 被切分为:

“我”, “喜欢”, “小鸟”

这就是一种基于“词”的切分方式。


为什么需要切分文本?

机器无法直接理解人类语言。为了让文本能被输入到模型中,我们必须将其转化为数值表示(如词向量)。但在此之前,需要先将原始文本拆分成最小语义单位,也就是 token。

没有正确的 token,词向量、语法分析、情感分析、问答系统等后续操作都会变得混乱甚至失败。


常见的切分方法

根据语言和处理目标不同,切分方法也不同:

英文中的切分

英文天然以空格分词,可以使用如下工具:

  • split() 函数:最简单的空格分割。

  • NLTKnltk.word_tokenize(text)

  • spaCynlp(text).tokens

  • 正则表达式(Regex):按标点或字母匹配

例子:

import nltk
nltk.download('punkt')
from nltk.tokenize import word_tokenizetext = "I love birds."
tokens = word_tokenize(text)
# ['I', 'love', 'birds', '.']


中文中的切分

中文没有天然的空格,必须依赖分词工具来识别词边界。

常用工具:

  • jieba:最常用,轻量、准确率高

  • THULAC:清华大学出品,分词+词性标注

  • HanLP:支持多种模型切换

  • pkuseg:北大开发,适合专业场景(如旅游、医学等)

示例(jieba):

import jiebatext = "我喜欢小鸟"
tokens = list(jieba.cut(text))
# ['我', '喜欢', '小鸟']


子词切分(Subword Tokenization)

在现代深度学习 NLP 模型中(如 BERT、GPT),更多采用子词切分算法,如:

  • BPE(Byte-Pair Encoding)

  • WordPiece

  • SentencePiece

这些方法的好处在于:

  • 能处理未登录词(OOV)

  • 词表更紧凑,支持更高效的模型训练

例如,BERT 可能会把 unbelievable 切成:

["un", "##believ", "##able"]


切分粒度的选择

选择哪种 token 粒度,取决于任务类型:

任务类型建议切分粒度
情感分析单词或词组
命名实体识别单词或子词
文本生成子词或字符
拼写纠错字符级
中文搜索推荐词语或字

中文切分的挑战

中文切分不像英文那样天然简单,存在几个难点:

  1. 多义词:如“研究生物”到底是“研究 生物”还是“研究生 物”?

  2. 新词识别:如网络热词“内卷”“打工人”,不在词典中。

  3. 歧义句子:如“他毕业于上海交通大学计算机系”,需要正确断句。

这些都要求分词工具有良好的上下文感知能力,必要时可以训练自己的分词模型。


Tokenize 实践:从文本到模型的第一步

整条 NLP 任务链条通常如下:

原始文本 → Tokenize → 编码 → 向量化 → 模型训练

切分文本的质量会直接影响最终的结果,是模型效果的基础保障。


小结

切分文本(tokenization)并不只是简单地分词,而是构建整个 NLP 系统的地基:

  • 是数据预处理的第一步;

  • 是语言理解的桥梁;

  • 是现代大模型中不可或缺的环节。

希望你在看到“我喜欢小鸟”切分成“我”、“喜欢”、“小鸟”这一刻,能明白一个 NLP 系统的大门已经打开。


如果你觉得本文对你有帮助,欢迎点赞、收藏、留言交流 !

相关文章:

  • OSPF的路由
  • Python 数据智能实战 (6):用户评论深度挖掘
  • SpringTas定时任务使用详解
  • 动态规划简单题2
  • 博客打卡-人类基因序列功能问题动态规划
  • GESP2024年6月认证C++八级( 第二部分判断题(1-5))
  • 【现代深度学习技术】现代循环神经网络02:长短期记忆网络(LSTM)
  • GAMES202-高质量实时渲染(Real-time Environment Mapping)
  • Matlab/Simulink - BLDC直流无刷电机仿真基础教程(四) - PWM调制模拟
  • Spring AOP---面向切面编程由认识到使用
  • 自动化实现web端Google SignUp——selenium
  • 深入解析 Python 应用日志监控:ELK、Graylog 的实战指南
  • ​​​​​​​2025年第二十二届五一数学建模竞赛题目A题 支路车流量推测问题
  • 例数据中关键指标对应的SQL查询模板
  • 深度探索DeepSeek:从架构设计到性能优化的实战指南
  • 优雅关闭服务:深入理解 SIGINT / SIGTERM 信号处理机制
  • 装饰器模式深度解析:让对象功能扩展像乐高一样灵活 [特殊字符]
  • 0基础 | Proteus电路仿真 | 电机使用
  • 海量数据存储与分析:HBase vs ClickHouse vs Doris 三大数据库优劣对比指南
  • 《社交类应用开发:React Native与Flutter的抉择》
  • 天启年间故宫“三殿”重修与晚明财政
  • 宿州市委副书记任东已任市政府党组书记
  • 49:49白热化,美参议院对新关税政策产生巨大分歧
  • 美国第一季度经济环比萎缩0.3%,特朗普:怪拜登,与关税无关
  • 剑指3000亿产业规模,机器人“武林大会”背后的无锡“野望”
  • 奔驰一季度利润降四成,受美国加征关税影响放弃全年盈利展望