赞
踩
记录一下困扰了我几乎五天的问题,最近手撸了一个BERT+BiLSTM+CRF的代码,在构建之时最难的就是train和dataload,model模块基本都有现成的很快就写好了。但之后却出现了一个问题,我使用的数据集是huggingface的weibo_ner_knowledge_V3_wc数据集,其中用于标识无关内容的标签16占了多数。果不其然,跑了好几次,每次模型最后都只会预测标签16,其他标签都不会预测,给人感觉是模型觉得只预测16便能得到很高的准确率所以它只预测16。
但你这耍我呢,我肯定要你预测其他标签呀,所以这几天疯狂检查,model和dataload基本都重置了一次问题依旧存在。(但这里也要注意,使用了huggingface的berttokenizer处理文本时返回内容会自动添加起始符和结束符标签,那label也要做相应的处理标识出起始符和结束符)搞了那么多天无用功,结果今天我不小心把batch_size和学习率调小了居然跑通了,它居然能基本正确预测出实体标签了。就现在而言我只能认为是这个数据集中含有很多标签16,甚至有些样例全是16,导致模型学习时出现了问题。所以现在把我的解决方案放在这里,希望能和广大网友探讨下这个问题。
源码发布在gitee:https://gitee.com/sky-zhu-chang/bert_lstm_crf.git
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。