【人工智能之大模型】说说你了解的大型语言模型中的有哪些分词技术?
【人工智能之大模型】说说你了解的大型语言模型中的有哪些分词技术?
·
【人工智能之大模型】说说你了解的大型语言模型中的有哪些分词技术?
【人工智能之大模型】说说你了解的大型语言模型中的有哪些分词技术?
文章目录
欢迎宝子们点赞、关注、收藏!欢迎宝子们批评指正!
祝所有的硕博生都能遇到好的导师!好的审稿人!好的同门!顺利毕业!
大多数高校硕博生毕业要求需要参加学术会议,发表EI或者SCI检索的学术论文会议论文。详细信息可关注VX “
学术会议小灵通”或参考学术信息专栏:https://blog.csdn.net/gaoxiaoxiao1209/article/details/146181864
前言
在大型语言模型(LLM)的发展过程中,分词技术(Tokenization)是至关重要的一环。分词技术将连续的文本序列拆分为模型可处理的基本单元(tokens),直接影响模型的性能和效率。
常见的分词方法:
词级别分词(Word-level Tokenization):
- 将文本直接按照空格或标点符号拆分为单词。这种方法简单直观,但对于词汇丰富的语言,词表会非常庞大,且无法处理未登录词。
示例:
text = "今天天气真好"
tokens = text.split()
print(tokens)
# 输出:['今天天气真好']
字符级别分词(Character-level Tokenization):
- 将文本中的每个字符视为一个token。这种方法避免了未登录词问题,但序列长度会大幅增加,增加模型的计算成本。
示例:
text = "今天天气真好"
tokens = list(text)
print(tokens)
# 输出:['今', '天', '天', '气', '真', '好']
子词级别分词(Subword-level Tokenization):
- 将文本拆分为常见的子词单元,兼顾词级别和字符级别分词的优点,既能处理未登录词,又能控制词表规模。常用的子词分词算法包括:
字节对编码(Byte-Pair Encoding, BPE):
- 基于统计方法,迭代地合并频率最高的字符或子词对,构建子词词典。
示例:
from tokenizers import Tokenizer
from tokenizers.models import BPE
from tokenizers.trainers import BpeTrainer
from tokenizers.pre_tokenizers import Whitespace
# 初始化分词器
tokenizer = Tokenizer(BPE())
tokenizer.pre_tokenizer = Whitespace()
# 训练分词器
trainer = BpeTrainer(special_tokens=["<unk>", "<pad>", "<bos>", "<eos>"])
tokenizer.train(["path/to/your/corpus.txt"], trainer)
# 对文本进行分词
output = tokenizer.encode("今天天气真好")
print(output.tokens)
# 输出示例:['今', '天', '天', '气', '真', '好']
Unigram语言模型(Unigram Language Model):
- 基于统计方法,计算每个子词的概率,选择概率最高的子词组合。
示例:
from tokenizers import Tokenizer
from tokenizers.models import Unigram
from tokenizers.trainers import UnigramTrainer
from tokenizers.pre_tokenizers import Whitespace
# 初始化分词器
tokenizer = Tokenizer(Unigram())
tokenizer.pre_tokenizer = Whitespace()
# 训练分词器
trainer = UnigramTrainer(special_tokens=["<unk>", "<pad>", "<bos>", "<eos>"])
tokenizer.train(["path/to/your/corpus.txt"], trainer)
# 对文本进行分词
output = tokenizer.encode("今天天气真好")
print(output.tokens)
# 输出示例:['今天', '天气', '真好']
SentencePiece:
- 由谷歌提出的一种分词工具,能够自动学习子词单元,支持多种语言的分词需求。
示例:
import sentencepiece as spm
# 训练SentencePiece模型
spm.SentencePieceTrainer.train(input='path/to/your/corpus.txt', model_prefix='m', vocab_size=8000)
# 加载模型
sp = spm.SentencePieceProcessor(model_file='m.model')
# 对文本进行分词
tokens = sp.encode("今天天气真好", out_type=str)
print(tokens)
# 输出示例:['▁今天', '天气', '真好']
选择合适的分词技术对于大型语言模型的性能和效果至关重要。子词级别的分词方法,如BPE和Unigram语言模型,能够在词汇覆盖率和词表规模之间取得平衡,已被广泛应用于当前的大型语言模型中。
欢迎宝子们点赞、关注、收藏!欢迎宝子们批评指正!
祝所有的硕博生都能遇到好的导师!好的审稿人!好的同门!顺利毕业!
大多数高校硕博生毕业要求需要参加学术会议,发表EI或者SCI检索的学术论文会议论文。详细信息可关注VX “
学术会议小灵通”或参考学术信息专栏:https://blog.csdn.net/gaoxiaoxiao1209/article/details/146181864
更多推荐



所有评论(0)