1

在 LM 培训期间仅掩盖特定单词的最佳策略是什么?

我的目标是在批处理时仅动态屏蔽我之前在列表中收集的感兴趣的单词。

我已经查看了 中的mask_tokens()函数DataCollatorForLanguageModeling class,该函数实际上是在每批期间屏蔽标记,但我找不到任何有效且智能的方法来仅屏蔽特定单词及其相应的 ID。

我尝试了一种简单的方法,包括将每个批次的所有 ID 与要屏蔽的单词 ID 列表进行匹配。但是,for 循环方法对性能有负面影响。

.


关于单词前缀空格的附带问题 - 已修复

感谢 @amdex1 和 @cronoik 帮助解决一个附带问题。之所以出现这个问题,是因为标记器不仅将单个单词拆分为多个标记,而且如果该单词没有出现在句子的开头,它还会添加特殊字符。例如:

“女武神”一词:

  • 在句子的开头被拆分为 ['V', 'alky', 'ria'] 并具有相应的 ID:[846, 44068, 6374]。
  • 而在句子中间为 ['ĠV', 'alky', 'ria'] 对应的 ID:[468, 44068, 6374],

它是通过add_prefix_space=True在标记器中设置来解决的。

4

0 回答 0