tokenizer 的選擇
有 BertTokenizerFast 和 BertTokenizer, BertTokenizerFast 更快,因為使用了 tokenizer 庫。
因為 tokenizer 庫基于 RUST 所以多線程更好。而 BertTokenizer 基于 python 的。
所以,我們使用 BertTokenizerFast
from transformers import BertTokenizerFast
tokenizer 帶來的問題
如果是做分類等問題,那么,tokenizer 并不會帶來什么問題。但是如果做 ner 這種 span 抽取,會帶來問題,就是
WordPiceTokenizer 對句子的切分并非是一一對應(yīng)的。那么,如果對應(yīng)這個位置會是很繁瑣的一個問題。
- 首先將 多余出來的部分用 padding index,
例如 going -> "go", "ing", 其中 "ing" 用 padding index 填充。在獲取 span 的時候,忽略到 padding index 即可。 - 另外一種可能會變少比如: "6000" -> "600", "0", 那么種種情況怎么處理?
2.1 進行 tokenizer 的時候一個字一個字進行,那么,就保證一定增加不會減少
2.2 offset_mapping 來映射,變換前和變化后的 id. 理論上來說這個是通用的。