主流分词算法

简介: 分词器将文本转为模型可处理的数字序列,主流算法有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(未登录词)问题如何解决?
相关文章
|
2月前
|
自然语言处理
主流大模型结构
本文介绍了四大模型架构:Encoder-Decoder、Decoder-Only、Encoder-Only和Prefix-Decoder,涵盖代表模型与应用场景。详解GPT系列演进、LLaMA发展及主流中文大模型,并对比GPT-4、LLaMA-3、Qwen等在架构、参数量与上下文长度等方面的异同。
|
2月前
|
算法
模型压缩与量化
模型压缩通过量化、稀疏化、知识蒸馏等技术,减小模型体积与计算开销,助力大模型在端侧部署。涵盖INT8/INT4、GPTQ、SmoothQuant等方法,平衡压缩比、精度与速度,并支持实战量化加载,提升推理效率。
|
机器学习/深度学习 人工智能 自然语言处理
视觉 注意力机制——通道注意力、空间注意力、自注意力
本文介绍注意力机制的概念和基本原理,并站在计算机视觉CV角度,进一步介绍通道注意力、空间注意力、混合注意力、自注意力等。
14148 58
|
SQL 存储 人工智能
ISO 专家解读 | 什么是 GQL 国际标准图查询语言
4 月 12 日,图查询标准语言 GQL(Graph Query Language)正式发布。与此同时,悦数图数据库 v5.0 宣布原生支持 GQL。GQL 一经问世,便在图行业内外引起广泛关注, ISO 数据库语言项目召集人 Keith W. Hare 发布了一篇对 GQL 的解读文章。让我们跟随专家的视角,来了解一下什么是 GQL,以及 GQL 数据库语言的功能。
|
2月前
|
人工智能 自然语言处理 机器人
AI也会"三思而后答"?揭秘Self-RAG智能检索术
遇到AI胡说八道怎么办?Self-RAG就像给AI装了个"思考开关",让它知道什么时候该查资料、什么时候该独立思考,还能自我评估答案靠不靠谱。6步智能决策机制,让AI回答又准又稳!#人工智能 #RAG技术 #智能检索 #AI应用
188 11
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
构建AI智能体:六十七、超参数如何影响大模型?通俗讲解原理、作用与实战示例
超参数是机器学习模型训练前需要人工设定的参数,它们控制着模型的学习过程而非直接通过学习获得。文章通过生动的类比(如自行车调整、烹饪配方)解释了超参数的概念,并详细介绍了其调优流程、常见类型(学习率、批量大小等)及对模型的影响。通过实际代码示例,展示了不同超参数设置如何影响模型训练效果,强调合理调优对提升模型性能、防止过拟合和优化资源使用的重要性。文章指出,超参数调优是模型成功的关键,初学者可从默认值开始逐步实验,借助网格搜索等工具实现高效调参。
426 105
SpringBoot——SpringBoot中使用过滤器Filter的两种方式
SpringBoot——SpringBoot中使用过滤器Filter的两种方式
2837 0
SpringBoot——SpringBoot中使用过滤器Filter的两种方式
|
2月前
|
人工智能 前端开发 JavaScript
Refly.AI (AI工作流)架构学习指南
Refly.AI 是一个 AI 原生工作流平台,采用 Monorepo + 微服务架构,融合 LangChain、Qdrant、NestJS 与 React 技术栈。本指南系统讲解其项目架构、核心流程与模块依赖,帮助开发者从环境搭建到源码贡献,逐步掌握 AI 工作流设计与开发。
432 2
|
2月前
|
人工智能 Java API
快速入门
本课程讲解JDK安装与环境变量配置、IDEA开发工具使用及Java基础语法。涵盖真实工作场景中的开发准备,如JDK和IDEA的安装激活、首个Java程序编写、注释规范、字面量类型及常用快捷键,助你快速上手Java开发。
|
2月前
|
机器学习/深度学习 自然语言处理 算法
分词器详解
分词器将文本转为模型可处理的数字序列,主流算法有BPE、WordPiece和SentencePiece。BPE高效但中文支持弱;WordPiece用于BERT,适合英文;SentencePiece语言无关,支持中日文。实战中常用SentencePiece处理中文,Hugging Face工具处理英文。面试需掌握算法差异、中文分词策略、词汇表设计及OOV问题解决。