当前位置:   article > 正文

使用未标注数据训练BERT_如何用未进行bio标注的数据训练bert模型进行ner

如何用未进行bio标注的数据训练bert模型进行ner

说来惭愧,BERT等预训练模型用来做下游任务做了这么久了,居然一直不知道怎么用未标注数据训练它们,这里以BERT为例子介绍一下如何使用自己的未标注数据快速训练预训练模型。

其实也很简单,BERT的github上面就有:https://github.com/google-research/bert

分为两步,第一步:准备一个txt文件,这个文件就是你要训练BERT的自己的数据。训练的目的其实就是让BERT能对你数据中的那些黑话(专有名词等)有所熟悉。格式大改这样就行:

然后执行:

  1. python create_pretraining_data.py \
  2. --input_file=./sample_text.txt \
  3. --output_file=/tmp/tf_examples.tfrecord \
  4. --vocab_file=$BERT_BASE_DIR/vocab.txt \
  5. --do_lower_case=True \
  6. --max_seq_length=128 \
  7. --max_predictions_per_seq=20 \
  8. --masked_lm_prob=0.15 \
  9. --random_seed=12345 \
  10. --dupe_factor=5
max_predictions_per_seq是每个序列的最大屏蔽LM预测数,应该将其设置为max_seq_length*masked_lm_prob左右(脚本不会自动执行此操作,因为需要将确切的值传递给两个脚本)。

预训练数据准备好了就执行第二步:训练模型。这里我们是从头开始的预训练,所以init_checkpoint要设置为None。模型配置(包括vocab大小)在bert_config_file中指定。num_train_steps可以设置为10000步或更多步。传递给run_pretraining.py的max_seq_length_和max_predicts_per_seq参数必须与create_pretraining_data.py相同。

  1. python run_pretraining.py \
  2. --input_file=/tmp/tf_examples.tfrecord \
  3. --output_dir=/tmp/pretraining_output \
  4. --do_train=True \
  5. --do_eval=True \
  6. --bert_config_file=$BERT_BASE_DIR/bert_config.json \
  7. --init_checkpoint=$BERT_BASE_DIR/bert_model.ckpt \
  8. --train_batch_size=32 \
  9. --max_seq_length=128 \
  10. --max_predictions_per_seq=20 \
  11. --num_train_steps=20 \
  12. --num_warmup_steps=10 \
  13. --learning_rate=2e-5

上面的路径替换成自己storage下的目录,跟作者一样,同样建议将vocab_file以及bert_config_file改为官方本身就有的路径,这样比自己传省时间空间。

最后,你会得到一个像这样的输出:

  1. ***** Eval results *****
  2. global_step = 20
  3. loss = 0.0979674
  4. masked_lm_accuracy = 0.985479
  5. masked_lm_loss = 0.0979328
  6. next_sentence_accuracy = 1.0
  7. next_sentence_loss = 3.45724e-05

完事。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/352033
推荐阅读
相关标签
  

闽ICP备14008679号