HuggingFace 变形金刚:BertTokenizer 改变角色
HuggingFace Transformers: BertTokenizer changing characters
我已经从 https://github.com/botxo/nordic_bert 下载了挪威 BERT 模型,并使用以下方式加载它:
import transformers as t
model_class = t.BertModel
tokenizer_class = t.BertTokenizer
tokenizer = tokenizer_class.from_pretrained(/PATH/TO/MODEL/FOLDER)
model = model_class.from_pretrained(/PATH/TO/MODEL)
model.eval()
这非常有效,但是当我尝试标记给定句子时,一些北欧字符(例如“ø”和“æ”)保持不变,而所有具有字符“å”的单词都被替换为“a” ”。
例如:
s = "æ ø å løpe få ærfugl"
print(tokenizer.tokenize(s))
产量:
['æ', 'ø', 'a', 'løp', '##e', 'fa', 'ær', '##fugl']
谢谢
它通过使用 BerttokenizerFast 并设置 strip_accents = False 来工作。错误出现在带重音函数的 unicode.normalize 中。
- 当然,必须更改 vocab.txt 文件以使其与 Bert 分词器格式匹配。
我已经从 https://github.com/botxo/nordic_bert 下载了挪威 BERT 模型,并使用以下方式加载它:
import transformers as t
model_class = t.BertModel
tokenizer_class = t.BertTokenizer
tokenizer = tokenizer_class.from_pretrained(/PATH/TO/MODEL/FOLDER)
model = model_class.from_pretrained(/PATH/TO/MODEL)
model.eval()
这非常有效,但是当我尝试标记给定句子时,一些北欧字符(例如“ø”和“æ”)保持不变,而所有具有字符“å”的单词都被替换为“a” ”。 例如:
s = "æ ø å løpe få ærfugl"
print(tokenizer.tokenize(s))
产量:
['æ', 'ø', 'a', 'løp', '##e', 'fa', 'ær', '##fugl']
谢谢
它通过使用 BerttokenizerFast 并设置 strip_accents = False 来工作。错误出现在带重音函数的 unicode.normalize 中。
- 当然,必须更改 vocab.txt 文件以使其与 Bert 分词器格式匹配。