具体项目代码和项目文件介绍以及部署请查看master分支,注意本项目基于 https://github.com/taishan1994/pytorch_bert_coreference_resolution 进行部署,做了以下几点工作:
1、更新了数据集,基于OntoNote5.0数据集重构了数据集,训练数据量可以达到1.7GB左右,实际训练中为了减少时间成本,只选择了文本长度小于300的样本进行重构,所以数据量减了很多;
2、加入了机器学习方法SVM、决策树、k-means,深度学习模型VGG16、Inception、LeNet5、LSTM、TextCNN进行分类;
3、重建了原项目中的数据处理方法,分别从BERT的最后一层和每一层抽取数据合并输入到上述模型中,根据处理方法不同,上述的几个深度学习模型也有有一维卷积和二维卷积的区别,细节请查看代码和原理图;
4、加入了BERT输出向量可视化的代码;
5、加入了训练过程的日志记录,包括train_acc、train_loss、dev_loss、dev_acc、recall、precision、recall等
在中文中我们将使用到下图所示的模型
中文选用预训练模型
使用transformers下载上述模型,使用BertTokenizer以及BertModel加载,而不是RobertaTokenizer/RobertaModel,您可以在这里找到这些信息。
tokenizer = BertTokenizer.from_pretrained("MODEL_NAME")
model = BertModel.from_pretrained("MODEL_NAME")
英文模型使用从huggingface下载的预训练模型,你可以通过下面的python代码获取,huggingface地址 please download it in windows to obtain pytorch_model.bin file
# Import generic wrappers
from transformers import AutoModel, AutoTokenizer
# Define the model repo
model_name = "SpanBERT/spanbert-base-cased"
# Download pytorch model
model = AutoModel.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)
# Transform input tokens
inputs = tokenizer("Hello world!", return_tensors="pt")
# Model apply
outputs = model(**inputs)
从BERT的最后一层获取向量
从BERT的每一层获取向量
从最后一层获取输入到一维卷积的网络中中文
从最后一层获取输入到一维卷积的网络中英文
从每一层获取输入到一维卷积的网络中中文
从每一层获取输入到一维卷积的网络中英文
从每一层获取输入到一维卷积的网络中混淆矩阵中文
从每一层获取输入到一维卷积的网络中混淆矩阵英文
从最后一层获取输入到全连接网络中文
从最后一层获取输入到全连接网络英文
从最后一层获取输入到全连接网络混淆矩阵