6

我想examples/run_lm_finetuning.py在预训练的 Bert 模型上使用Huggingface Transformers 存储库中的。但是,从遵循文档来看,语料库文件的结构并不明显(除了引用 Wiki-2 数据集)。我试过了

  • 每行一个文档(多个句子)
  • 每行一个句子。文档以空行分隔(我在一些较旧的 pytorch-transformers 文档中找到了这一点)

通过查看代码examples/run_lm_finetuning.py并不能直接看出下一句预测目标的序列对是如何形成的。该--line-by-line选项在这里有帮助吗?如果有人能给我一些提示文本语料库文件的外观,我将不胜感激。

非常感谢和欢呼,

头脑

4

1 回答 1

10

首先,我强烈建议也将其作为一个问题在 huggingface 库中打开,因为他们可能最有兴趣回答这个问题,并且可能会将其视为他们应该更新/澄清他们的文档的标志。

但是要回答您的问题,似乎这个特定的示例脚本基本上是返回 a LineByLineTextDataset(如果您通过--line_by_line培训),否则返回 a TextDataset,请参阅 ll。脚本中的 144-149 (稍微格式化以提高可见性):

def load_and_cache_examples(args, tokenizer, evaluate=False):
    file_path = args.eval_data_file if evaluate else args.train_data_file
    if args.line_by_line:
        return LineByLineTextDataset(tokenizer, args, 
                           file_path=file_path, block_size=args.block_size)
    else:
        return TextDataset(tokenizer, args, 
                           file_path=file_path, block_size=args.block_size)

ATextDataset简单地将文本拆分为具有特定(令牌)长度的连续“块”,例如,它会每隔 512 个令牌(默认值)剪切您的文本。

Next Sentence Prediction 任务仅针对默认的 BERT 模型实现,如果我没记错的话(似乎与我在文档中找到的一致),不幸的是它不是这个特定微调脚本的一部分。lm_finetuning据我所知,脚本中使用的BERT 模型都没有使用该特定任务。

于 2020-01-31T10:24:20.747 回答