主流分词算法

简介: 分词器将文本转为模型可处理的数字序列,主流算法有BPE、WordPiece和SentencePiece。BPE高效但中文支持弱;WordPiece用于BERT,适合英文;SentencePiece语言无关,支持中文。实战中需根据语言选择算法,并合理设置词汇表大小与特殊标记,解决OOV等问题。

🎯 概述
分词器(Tokenizers)是将文本转换为模型可理解的数字序列的关键组件,直接影响模型的性能和效率。
🏗️ 主流分词算法
1️⃣ BPE (Byte Pair Encoding)
原理:通过合并高频字符对来构建词汇表
优点:
● 有效处理未登录词
● 词汇量可控
● 多语言支持好
缺点:
● 可能产生不完整的词
● 对中文支持有限
实现示例:
from tokenizers import Tokenizer
from tokenizers.models import BPE

tokenizer = Tokenizer(BPE(unk_token="[UNK]"))
2️⃣ WordPiece
原理:基于最大似然估计逐步合并词片段
特点:
● Google开发,用于BERT
● 在词前添加##标记子词
● 更适合英文
示例:
"playing" -> ["play", "##ing"]
3️⃣ SentencePiece
原理:将文本视为Unicode序列,不依赖空格分词
优势:
● 语言无关性
● 支持中文、日文等无空格语言
● 可逆转换
配置示例:
import sentencepiece as spm

spm.SentencePieceTrainer.train(
input='input.txt',
model_prefix='tokenizer',
vocab_size=32000,
model_type='bpe'
)
📊 算法对比
特性 BPE WordPiece SentencePiece
分词粒度 子词 子词 子词/字符
语言支持 英文为主 英文为主 多语言
空格处理 依赖空格 依赖空格 不依赖空格
训练速度 快 中等 慢
模型大小 小 中等 大
🎯 实战应用
中文分词最佳实践

使用SentencePiece处理中文

import sentencepiece as spm

训练中文分词器

spm.SentencePieceTrainer.train(
input='chinese_corpus.txt',
model_prefix='chinese_sp',
vocab_size=32000,
character_coverage=0.995, # 覆盖99.5%字符
model_type='bpe'
)

使用分词器

sp = spm.SentencePieceProcessor(model_file='chinese_sp.model')
tokens = sp.encode('大模型面试宝典', out_type=str)
print(tokens) # ['大', '模型', '面试', '宝典']
英文分词示例

使用Hugging Face Tokenizers

from transformers import AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained('bert-base-uncased')
tokens = tokenizer.tokenize("transformer architecture")
print(tokens) # ['transform', '##er', 'arch', '##itecture']
🔍 技术细节
词汇表构建流程

  1. 预处理:清洗文本,标准化
  2. 训练:基于语料库学习分词规则
  3. 验证:检查分词质量
  4. 优化:调整超参数
    特殊标记处理
    ● [PAD]:填充标记
    ● [UNK]:未知词标记
    ● [CLS]:分类标记
    ● [SEP]:分隔标记
    ● [MASK]:掩码标记(用于MLM)
    📚 深入阅读
    ● 注意力机制详解
    ● 主流大模型结构
    🎯 面试重点
  5. BPE和WordPiece的区别?
  6. 如何处理中文分词?
  7. 词汇表大小如何选择?
  8. OOV(未登录词)问题如何解决?
相关文章
|
7月前
|
机器学习/深度学习 自然语言处理 算法
分词器详解
分词器将文本转为模型可处理的数字序列,主流算法有BPE、WordPiece和SentencePiece。BPE高效但中文支持弱;WordPiece用于BERT,适合英文;SentencePiece语言无关,支持中日文。实战中常用SentencePiece处理中文,Hugging Face工具处理英文。面试需掌握算法差异、中文分词策略、词汇表设计及OOV问题解决。
|
5月前
|
自然语言处理 算法
大模型应用:大模型的词元化处理详解:BPE、WordPiece、Unigram.11
本文详解大模型中文词元化三大核心算法:BPE(基于频率合并)、WordPiece(基于似然增益合并)和Unigram(自顶向下概率筛选)。通过原理、流程、代码与示例对比,揭示其在中文分词中的适用性与优化要点,强调语料质量、参数配置及中文特性适配的关键作用。(239字)
1229 2
|
10月前
|
存储 机器学习/深度学习 人工智能
​​解锁AI检索的7大Embedding技术:从稀疏到多向量,一文掌握!​
本文系统解析七种主流文本嵌入技术,包括 Sparse、Dense、Quantized、Binary、Matryoshka 和 Multi-Vector 方法,结合适用场景提供实用选型建议,助你高效构建文本检索系统。
1161 0
|
7月前
|
机器学习/深度学习 存储 缓存
注意力机制详解
注意力机制是Transformer核心,通过自注意力、交叉注意力等实现序列间动态关联。多头、分组、多查询等变体在效率与性能间权衡,广泛应用于大模型设计,助力高效长序列建模与推理优化。
|
7月前
|
机器学习/深度学习
位置编码详解
位置编码为Transformer提供序列位置信息,弥补注意力机制无位置感知的缺陷。主要分绝对与相对两类:绝对编码如可学习和Sinusoidal,简单高效但外推性弱;相对编码如RoPE和ALiBi,通过旋转矩阵或线性偏置实现良好外推,支持长序列,广泛应用于LLaMA、BLOOM等大模型。
|
7月前
|
存储 机器学习/深度学习 编解码
预训练技巧
预训练是大模型的核心基础,涵盖混合精度、分布式训练、ZeRO优化、FlashAttention等关键技术,通过高效计算与显存优化,实现大规模模型的快速稳定训练。
|
7月前
|
自然语言处理
主流大模型结构
本文介绍了四大模型架构:Encoder-Decoder、Decoder-Only、Encoder-Only和Prefix-Decoder,涵盖代表模型与应用场景。详解GPT系列演进、LLaMA发展及主流中文大模型,并对比GPT-4、LLaMA-3、Qwen等在架构、参数量与上下文长度等方面的异同。
|
7月前
|
算法
模型压缩与量化
模型压缩通过量化、稀疏化、知识蒸馏等技术,减小模型体积与计算开销,助力大模型在端侧部署。涵盖INT8/INT4、GPTQ、SmoothQuant等方法,平衡压缩比、精度与速度,并支持实战量化加载,提升推理效率。
|
7月前
|
人工智能 自然语言处理 搜索推荐
2025AI数字人企业TOP厂商新排行
解码数字人企业TOP10,揭秘像衍科技等领军者如何以AI+3D+语音技术重塑产业。涵盖服务、演艺、工业等多场景应用,展现虚拟主播、智能客服、数字员工等创新实践,揭示未来人机协同新生态。
|
12月前
|
人工智能 分布式计算 DataWorks
分布式×多模态:当ODPS为AI装上“时空穿梭”引擎
本文深入探讨了多模态数据处理的技术挑战与解决方案,重点介绍了基于阿里云ODPS的多模态数据处理平台架构与实战经验。通过Object Table与MaxFrame的结合,实现了高效的非结构化数据管理与分布式计算,显著提升了AI模型训练效率,并在工业质检、多媒体理解等场景中展现出卓越性能。