最近正在预训练一个中文pytorch版本的bert,模型部分代码是基于huggingface发布的版本,预训练过程还是参考google的代码。
阅读这篇文章之前,希望读者能对BERT有所了解,建议仔细阅读论文。
值得吐槽的是huggingface之前发布的分支名叫pytorch-pretrain-bert,后来又加上了gpt2、XLNet一系列当红模型,结果索性改了个名字叫做pytorch-transformers。
下面是正文部分,整个正文我按照数据生成、预训练、finetune以及其他闲杂部分组织,如有不当的地方还请大家指正。
数据生成
这一部分主要解析预训练bert所需要的数据获取和处理,主要代码来自google官方代码。
首先我只用了wiki语料,bert原始论文中用的都是英文语料,我用的是wiki官方中文语料,下载地址:https://dumps.wikimedia.org/zhwiki/latest/zhwiki-latest-pages-articles.xml.bz2,按照google官方推荐使用了attardi/wikiextractor对文本进行了处理,然后进行了简繁转换(这一步可能不是必要的)。总之,经过简单的处理后,我们有了纯净的训练语料。
google处理好之后的数据是采用换行来分句子,采用空行来分割上下文,我简单粗暴得直接采用了json文件,这个只影响后续文件的读取方式。举个例子,google处理完之后文件应该是人如下形式:
知乎
在知乎寻找知识一定是搞错了什么。
微博
同上。
下一步&#