BERT模型自定义词汇以及token相关

本文介绍了如何在BERT模型中增加自定义词汇,如'COVID'和'hospitalization',以保持单词完整性。通过调整模型和tokenizer的词汇表大小,并使用resize_token_embeddings方法,可以成功添加新词汇。此外,还讨论了BERT词表的修改和配置,以及保存自定义tokenizer到指定目录的方法。这对于适应特定下游任务和提高模型表现非常有用。
摘要由CSDN通过智能技术生成

1.加载bert模型及分词

from transformers import AutoModelForMaskedLM, AutoTokenizer
model = "bert-base-cased"
tokenizer = AutoTokenizer.from_pretrained(model, use_fast=True)
model = AutoModelForMaskedLM.from_pretrained(model)

2.分词演示

  • 这里是对COVID hospitalization分词
print(tokenizer.tokenize('COVID'))
print(tokenizer.tokenize('hospitalization'))
['CO', '##VI', '##D']
['hospital', '##ization']
  • 如果让着两个词都能保持完整,而不被拆分,进行如下操作
# Let's increase the vocabulary of Bert model and tokenizer

new_tokens = ['COVID', 'hospitalization']
num_added_toks = tokenizer.add_tokens(new_tokens)

# Notice: resize_token_embeddings expect to receive the full size of the new vocabulary, i.e., the length of the tokenizer.

model.resize_token_embeddings(len(tokenizer))
print(tokenizer.tokenize('COVID'))
print(tokenizer.tokenize('hospitalization'))

# with each new word added, a new vector of embeddings 
# with random values was added as well thanks to the 
# model.resize_token_embeddings(len(tokenizer)) method.

tokenizer.savepretrained("modle_dir")

3.自定义bert词表

  • bert有自己的vocab配置可以人为修改以适应下游任务,参考看这篇https://blog.csdn.net/kyle1314608/article/details/10661204

  • bert词表相关配置文件介绍
    https://www.jianshu.com/p/a6170d3408f5

参考链接

https://zhuanlan.zhihu.com/p/391814780

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值