如何强制HuggingFace BERT Tokenizer不拆分指定词汇?
解决BERT Tokenizer强制保留完整词汇的方法
可以直接通过给Tokenizer添加自定义词汇的方式实现,无需后处理令牌数组重新拼接,具体操作如下:
- 加载预训练的BERT Tokenizer后,使用
add_tokens()方法传入你想完整保留的词汇列表 - 之后对包含这些词汇的文本进行tokenize时,指定词汇会被当作单个完整token,不会被拆分为子词
示例代码:
from transformers import BertTokenizer # 加载预训练分词器 tokenizer = BertTokenizer.from_pretrained("bert-base-uncased") # 添加需要完整保留的自定义词汇 custom_words = ["abcd"] tokenizer.add_tokens(custom_words) # 测试分词效果 test_text = "xxx abcd yyy zzz" token_list = tokenizer.tokenize(test_text) print(token_list) # 输出结果:['xxx', 'abcd', 'yyy', 'zzz']
补充说明:如果后续需要将这些token输入到BERT模型中训练或推理,由于词汇表大小发生了变化,需要调用model.resize_token_embeddings(len(tokenizer))来调整模型的嵌入层维度,避免出现维度不匹配的问题。如果只是单纯做分词操作,这一步可以省略。
内容的提问来源于stack exchange,提问作者kloop
相关产品推荐
相关产品推荐

