更多内容:XiaoJ的知识星球
Token:BPE基础概念
1.BPE概念
字节对编码(Byte Pair Encoding,BPE):
一种基于子词的分词算法,最初用于数据压缩(对字节操作),后调整此算法进行分词(对单个字符操作)。
其分词的核心思想是通过迭代合并高频的相邻符号对,逐步生成更大的子词单元,从而构建一个可动态扩展的词表。
BPE不考虑跨越单词边界的对。因此,该算法可以在从文本中提取的字典上运行,每个单词都按其频率进行加权。
2.算法步骤
- 初始化:将文本按字符拆分,统计所有字符频次。
- 例:句子“low lower” →
{'l', 'o', 'w', 'e', 'r'}
。
- 迭代合并高频对:统计相邻字符对的频率,合并最高频的对,更新词汇表。
-
示例流程:
-
初始字符:
l o w
,l o w e r
-
合并最高频对(如
l
和o
→lo
),得到新子词:lo w
,lo w e r
-
继续合并(如
lo
和w
→low
),最终可能得到子词low
和er
。
-
- 终止条件:达到预设的词汇表大小或合并次数。
3.Python实现
最小的 Python 实现如下:
图 1:从字典 {‘low’, ‘lowest’, ‘newer’, ‘wider’} 中学习的 BPE 合并操作。
BPE参考:
-
Rico Sennrich, Barry Haddow, and Alexandra Birch. 2016. Neural machine translation of rare words with subword units. In Proc. of ACL.
声明:资源可能存在第三方来源,若有侵权请联系删除!