tensorflow2.0 + transformers EWECT微博情绪分类大赛第三名Bert-Last_3embedding_concat最优单模型复现
前言
最近正在实现网易云评论情绪分类,用于评论社区研究,在搜索相关比赛的实现方法,看到了为数不多的单模型也能达到较好效果的情况,因此拿来复现作为第一版模型。
复现模型:微博情绪分析评测(smp2020-ewect)No.3 拿第一导师请吃肯德基 usual语料部分情绪分类最优单模型。
模型结构:
代码部分
tensorflow : 2.0
transformers : 3.1.0
话不多说直接上代码
import numpy as np
import pandas as pd
import tensorflow as tf
from sklearn import model_selection
from transformers import *
from tokenizers import BertWordPieceTokenizer, ByteLevelBPETokenizer
from sklearn.metrics import f1_score
from sklearn.model_selection import train_test_split
import os
import tensorflow.keras.backend as K
class BertNerModel(TFBertPreTrainedModel):
dense_layer = 512
class_num = 6
drop_out_rate = 0.5
def __init__(self, config, *inputs, **kwargs):
super(BertNerModel,self).__init__(config, *inputs, **kwargs)
config.output_hidden_states = True
self.bert_layer = TFBertMainLayer(config, name='bert')
self.bert_layer.trainable = True
self.liner_layer = tf.keras.layers.Dense(self.dense_layer,activation='relu')
self.soft_max = tf.keras.layers.Dense(self.class_num,activation='softmax')
self.drop_out = tf.keras.layers.Dropout(self.drop_out_rate)
def call(self, inputs):
hidden_states = self.bert_layer(inputs)
tensor = tf.concat((hidden_states[2][-1][:,0],hidden_states[2][-2][:,0],hidden_states[2][-3