BPE字符串编码&BBPE(byte-level BPE)

以下是关于BPEByte Pair Encoding)和Byte-level BPE的介绍和相关信息: 1. **BPEByte Pair Encoding)**是一种基于统计的子词分词方法[^1]。 - 它通过迭代地合并频率最高的符号对(可能是字符或字符序列)来构造词汇表。 - BPE的优点是可以灵活地处理低频词和未知词,同时减少数据稀疏性。 - 在实际中,未知字符会被替换为特殊标记`<unk>`。 2. **Byte-level BPE**是一种特殊形式的BPE- 它在字节级别操作,适用于处理多语言或非ASCII字符数据。 - 这种方法不依赖特定编码,适用于如UTF-8编码的二进制数据。 以下是一个简单的BPE编码示例: ```python # 示例:基于字符的BPE编码 from collections import Counter from itertools import islice # 初始化词汇 corpus = ["low", "lower", "newest", "widest"] vocab = {" ".join(word) + " </w>": count for word, count in Counter(corpus).items()} # 合并最高频的符号对 def get_stats(vocab): pairs = Counter() for word, freq in vocab.items(): symbols = word.split() for i in range(len(symbols) - 1): pairs[symbols[i], symbols[i + 1]] += freq return pairs def merge_vocab(pair, vocab): bigram = " ".join(pair) new_vocab = {} for word in vocab: new_word = word.replace(bigram, "".join(pair)) new_vocab[new_word] = vocab[word] return new_vocab # BPE 编码规则构建 for i in range(10): pairs = get_stats(vocab) if not pairs: break best = max(pairs, key=pairs.get) vocab = merge_vocab(best, vocab) print(f"Step {i + 1}: {best}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值