谷歌';s BERT for NLP:替换vocab.txt中的外来字符以添加单词?

谷歌';s BERT for NLP:替换vocab.txt中的外来字符以添加单词?,nlp,Nlp,我正在微调伯特模型,但需要添加几千个单词。我知道可以替换vocab.txt顶部的~1000[unused#]行,但我也注意到文件中有数千个单外来字符(unicode),我永远不会使用它们。对于微调,是否可以使用my words、fine tune和model来替换它们?未使用的单词权重基本上是随机初始化的,因为它们没有被使用。如果你只是用你自己的词来替换它们,但不在特定领域的语料库上做进一步的预训练,那么它基本上只会是随机的。因此,如果您替换并继续进行微调,在我看来不会有多大好处 让我向你指出这

我正在微调伯特模型,但需要添加几千个单词。我知道可以替换vocab.txt顶部的~1000
[unused#]
行,但我也注意到文件中有数千个单外来字符(unicode),我永远不会使用它们。对于微调,是否可以使用my words、fine tune和model来替换它们?未使用的单词权重基本上是随机初始化的,因为它们没有被使用。如果你只是用你自己的词来替换它们,但不在特定领域的语料库上做进一步的预训练,那么它基本上只会是随机的。因此,如果您替换并继续进行微调,在我看来不会有多大好处

让我向你指出这一点。根据论文作者的说法:

我的建议是只使用现有的单词vocab 并在域内文本上运行更多步骤的预试运行 应该“免费”学习构图。记住这一点 词条词汇基本上没有词汇表外的词汇, 你不知道在训练前看到了哪些单词 而不是。仅仅因为一个单词被单词碎片分开并不意味着 这很少见,事实上,许多被拆分成单字的单词是 在培训前数据中查看了5000多次

但是如果你想增加更多的人声,你可以选择:(a)替换 “[unusedX]”表示您的词汇。因为没有用过 它们被有效地随机初始化。(b) 将其附加到 vocab,并编写一个脚本,生成一个新的检查点 与预先训练的检查点相同,但声音更大 其中新嵌入是随机初始化的(对于初始化 使用了tf.truncated_normal_初始值设定项(stddev=0.02))。这很可能会发生 需要处理一些tf.concat()和tf.assign()调用

希望这有帮助