成语大全网 - 汉语词典 - Bert如何使用预留的[unused*]

Bert如何使用预留的[unused*]

经过观察我们发现, vocab.txt 的前面几行是 [unusedx] 。顾名思义,这种字符是没有用的,只是用来占位置的,他们在Bert Embedding层的权重是随机初始化的。那么,我们将 [unused] 替换为词典中没有的特殊字符,就可以让分词器识别出自定义的特殊字符了,这些特殊字符的初始权重也沿用了对应位置 [unused] 符号的权重,即也是随机初始化的。

根据这篇博客的内容 Bert预留[unused*] ,直接将我们需要增加的token替换vocab.txt中原来的[unused]的对应行即可。如图所示,我们将 [unused] 替换为原本词典中不存在的几个表情符和特殊汉字。

在某论坛上出现这样一个提问, Special tokens not tokenized properly #12168 , How to use my own additional vocabulary dictionary? #396 和我们的诉求比较一致,下面给了一些讨论,大家有兴趣可以看看。总之结论跟 huggingface官方论坛给出的关于add_token的方法 比较类似,即用special token的方法,下面直接贴出:

感兴趣的可以运行一下, 这里直接说结论

最好的方法当然是两者的结合

这样就可以实现如下诉求: