bert生成句子向量
BERT本质上是一个两段式的NLP模型。第一个阶段叫做:Pre-training,跟WordEmbedding类似,利用现有无标记的语料训练一个语言模型。第二个阶段叫做:Fine-tuning,利用预训练好的语言模型,完成具体的NLP下游任务。
1. bert中文语料库下载
Google已经投入了大规模的语料和昂贵的机器帮我们完成了Pre-training过程
bert中文模型链接:https://storage.googleapis.com/bert_models/2018_11_03/chinese_L-12_H-768_A-12.zip.
这里分两步介绍bert的使用:第一怎么使用bert的词向量,第二如何fine-tuning做其他任务。
- 如何使用bert的词向量
- 如何用fine-tuning作文本分类
2. 如何使用bert的词向量
传统的句向量采用词向量的方式求加权平均,无法解决一词多义对句子的影响,bert向量由于包含了上下文信息,从理论来看要比传统方法好。
3.直接使用bert源码生成词向量
1.下载bert项目
下载地址:https://github.com/google-research/bert
其中extract_features.py文件为bert句向量生成文件
2.下载中文预训练模型
下载地址:https://storage.googleapis.com/bert_models/2018_11_03/chinese_L-12_H-768_A-12.zip
3.加载下载的预训练模型参数进行句向量特征提取
--input_file="./data/input.txt"
--output_file="./data/output.jsonl"
--vocab_file="./chinese_L-12_H-768_A-12/vocab.txt"
--bert_config_file="./chinese_L-12_H-768_A-12/bert_config.json"
--init_checkpoint="./chinese_L-12_H-768_A-12/bert_model.ckpt"
--layers=-2
--max_seq_length=128
--batch_size=8
layers: 是输出那些层的参数,-1就是最后一层,-2是倒数第二层,一次类推
max_seq_length: 是最大句子长度,根据自己的任务配置。如果你的GPU内存比较小,可以减小这个值,节省存储
输出结果为(None,768)
{"linex_index": 1, "features": [{"token": "[CLS]", "layers": [{"index": -1, "values": [-0.2844, 0.450896, 0.285645, 0.421341, 0.411053, ...