【问题标题】:How exactly should the input file be formatted for the language model finetuning (BERT through Huggingface Transformers)?输入文件应该如何格式化以进行语言模型微调(BERT 通过 Huggingface Transformers)?
【发布时间】:2020-05-16 23:51:08
【问题描述】:

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

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

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

非常感谢和欢呼,

nminds

【问题讨论】:

    标签: python pytorch huggingface-transformers bert-language-model


    【解决方案1】:

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

    但要回答您的问题,似乎这个特定的示例脚本基本上是返回一个 LineByLineTextDataset(如果您将 --line_by_line 传递给培训),否则返回一个 TextDataset,请参阅 ll。 the script 中的 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)
    

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

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

    【讨论】:

    • 好点,谢谢 - 我也会把它带到问题上。根据this,尽管您只能使用一组默认的基本 Bert 模型,但可以对蒙面语言和下一句预测目标进行训练。似乎没有提供从磁盘加载您自己的预训练模型。
    • 没错,如果你只使用 BERT,这完全没问题(虽然我找不到任何即时实现),但当前大部分代码的编写方式也支持RoBERTa、XLM 等
    • @dennlinger 如果你能回答,我有 2 个问题。 1)什么方法会更好? 2)我应该制作一个语料库的文本文件,一行一个文件?如果文档长度超过 512 怎么办?
    • 就个人而言,我总是更喜欢使用逐行的方法,因为这样你就会在行之间有明显的(语义)差异,因为在任意点分割并不能保证一个句子实际上完成了。对于2),我很少看到包含超过512个token的句子,否则我会把它们分成两半,或者继续阻塞策略......
    猜你喜欢
    • 2021-10-31
    • 2021-03-31
    • 2020-06-03
    • 1970-01-01
    • 2020-08-12
    • 2020-08-11
    • 1970-01-01
    • 2020-02-25
    • 2021-11-21
    相关资源
    最近更新 更多