【问题标题】:Bert Tokenizer add_token function not working properlyBert Tokenizer add_token 功能无法正常工作
【发布时间】:2021-08-04 04:16:03
【问题描述】:

tokenizer add_tokens 没有添加新的令牌。 这是我的代码:

  from transformers import BertTokenizer

  bert_tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')

  new_tokens = []
  text = open("parsed_data.txt", "r")
  for line in text:
     for word in line.split():
        new_tokens.append(word) 

  print(len(new_tokens))      # 53966
  print(len(bert_tokenizer))  # 36369
  bert_tokenizer.add_tokens(new_tokens)
  print(len(bert_tokenizer))  # 36369

【问题讨论】:

  • 我发现了这个问题。其实没有问题。它没有更新 bert_tokenizer,因为所有词汇都已经存在于 bert_tokenizer 中。

标签: python nlp pytorch bert-language-model


【解决方案1】:

是的,如果令牌已经存在,则跳过它。顺便说一句,在更改标记器后,您还必须更新您的模型。请参阅下面的最后一行。

bert_tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
tokenizer.add_tokens(my_new_tokens)

model.resize_token_embeddings(len(bert_tokenizer))

【讨论】:

  • 是的,我已经这样做了。谢谢。现在我还面临一个问题。更新标记器后,当我运行这一行 dataset = LineByLineTextDataset( tokenizer=bert_tokenizer, file_path="./some_file.txt", block_size=128, ) 时,它会永远加载。如果您想要更多代码,请告诉我。
  • 也许您应该使用代码和部分文本文件创建另一个问题
  • 这里:stackoverflow.com/questions/67580591/…我已经单独发布了。
猜你喜欢
  • 2023-03-26
  • 2017-09-23
  • 2013-11-06
  • 2013-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多