Bert实战文本分类

文本分类三步走:
一是对数据进行处理
二是模型设计
三是模型训练
四是结果预测

import numpy as np
from tqdm import tqdm #tqdm可以实时输出处理进度
from keras import backend as K  #清除GPU内存用
from transformers import AutoTokenizer, TFAutoModel
#导入预训练模型BERT的tokenizer
tokenizer = AutoTokenizer.from_pretrained("bert-base-chinese")

#第一步:数据的处理

labels = []
token_list = []
with open("C:/Users/lupo/kg/data/ChnSentiCorp.txt",mode="r",encoding="UTF-8") as emotion_file:
    for line in tqdm(emotion_file.readlines()):		#读取txt文件
        line = line.strip().split(",")				#将每行数据以“,”进行分隔
        labels.append(int(line[0]))				#读取分类label

        text = line[1]						#获取每行的文本
        token = tokenizer.encode(text)

        token = token[:80] + [0] * (80 - len(token))  # 以80个字符为长度对句子进行截取

        token_list.append(token)

labels = np.array(labels)
token_list = np.array(token_list)

#第二步:模型设计

import tensorflow as tf
#导入训练的bert模型
model = TFAutoModel.from_pretrained("bert-base-chinese")

input_token = tf.keras.Input(shape=(80,),dtype=tf.int32)
#使用bert模型作为特征提取层
#注意model生成的embedding格式
embedding = model(input_token)[0]

embedding = tf.keras.layers.Flatten()(embedding)
output = tf.keras.layers.Dense(2,activation=tf.nn.softmax)(embedding)
model = tf.keras.Model(input_token,output)

model.compile(optimizer=tf.keras.optimizers.Adam(1e-5), loss=tf.keras.losses.sparse_categorical_crossentropy, metrics=['accuracy'])

#第三步:模型训练

# 模型拟合,即训练,需要注意这里的batch_size的设置
model.fit(token_list, labels,batch_size=1,epochs=5)
K.clear_session()

数据集下载提取:
链接:https://pan.baidu.com/s/1FIh2xn1-P8iIbKhwPBg8KA
提取码:1234
不妨试一下

你可能感兴趣的:(自然语言处理,神经网络,python)