【问题标题】:How to train BERT with custom (raw text) domain-specific dataset using Huggingface?如何使用 Huggingface 使用自定义(原始文本)特定领域数据集训练 BERT?
【发布时间】:2021-03-28 12:59:43
【问题描述】:

我想用一些自己的数据集训练/微调 BERT 模型,这些数据集只包含来自特定领域的原始数据,类似于 BioBERT。第一步,我只想用这些原始数据训练 BERT,而不用任何特定的 NLP 任务进行微调。所以,我想建立一个基础,我可以潜在地使用带注释的训练数据对特定任务(例如 NER 等)进行微调。 这是否可能以我计划的方式进行?

我尝试使用 Huggingface 的示例脚本:https://github.com/huggingface/transformers/tree/master/examples/language-modeling

我使用 run_mlm 脚本的方式如下:

python run_mlm.py \
    --model_name_or_path bert-base-uncased\
    --train_file /path/to/text_file.txt \
    --do_train \
    --output_dir /out

我得到了一些输出,但如何评估生成的模型? 有一些内在的评估方法我想尝试但我失败了,比如单词相似度或单词类比。

如果你能帮助我的方法,我将非常感激。

【问题讨论】:

  • 你想做什么样的评价?
  • 我想用我的原始数据以任何可能的方式评估我的模型,没有任何标记的测试数据。我在Revisiting Correlations between Intrinsic and Extrinsic Evaluations of Word Embeddings 中读到了一些东西,并认为我可以例如在一般 BERT 模型中比较我的特定领域中某些给定单词的单词相似度,然后在我的自定义模型中比较,看看我的模型是否取得了更好的结果。在稍后阶段,我将使用(自动生成的?)NER 或类似任务的训练数据进行微调。

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


【解决方案1】:

要评估掩码语言模型,有两种策略:

  • 内在评估,您在问题中提到。这通常以困惑度作为衡量标准,并在 BERT 等论文中有所提及。
  • 外部评估:这是对 GLUE 等基准集的微调。

虽然您要求一种内在评估方法,但我建议您也执行一些微调任务。这可以是 GLUE,也可以是您的 NER 任务。

【讨论】:

  • 感谢您的回答。我查看了困惑度指标,但不幸的是,不建议将其用于 BERT:huggingface.co/transformers/perplexity.html 我找到了一篇关于评估 BERT 的论文,称为 BertScore,它还有一个包含代码的 GitHub 存储库。我认为他们使用余弦相似度来表示词嵌入之间的距离。如果你有兴趣这里是链接:github.com/Tiiiger/bert_score
猜你喜欢
  • 2022-06-29
  • 1970-01-01
  • 1970-01-01
  • 2022-08-15
  • 2020-10-16
  • 2022-11-08
  • 1970-01-01
  • 2017-10-09
  • 2022-09-27
相关资源
最近更新 更多