keras深度学习框架进行文本分类

近期接手的一个项目就是深度学习文本分类,我选用的是keras深度学习框架,下面把处理过程给大家分享一下,首先是要加载数据,我的数据是在文档里面,首先读取csv文件选取字段。

def laod_csv():
    print('正在加载数据...')
    data = pd.read_csv(r'data\3_9.csv',encoding='gbk')
    target_list = []
    def func(f):
        if f['小类'].values[0] not in target_list:
            target_list.append(f['小类'].values[0])
        f['数字小类类别'] = [target_list.index(f['小类'].values[0])] * len(f['小类'].values)
        return f

    data1 = data.groupby(['小类']).apply(func)
    data1.sort_values(by='数字小类类别', inplace=True)
    label = data1['数字小类类别'].values
    target = []
    for item in data1['反映内容'].values:
        target.append(item.strip())

	return target,label,target_list

之后配置网络结构

def build_netword(dict, catalogue=BINARY_FLAG, embedding_size=50, max_sequence_length=30):
	model = krs.Sequential()
    model.add(krs.layers.Embedding(len(dict.items()), embedding_size, input_length=max_sequence_length))
    model.add(krs.layers.LSTM(256, dropout=0.5, recurrent_dropout=0.5))   #配置神经元个数以及dropout过拟合
    model.add(krs.layers.Dense(97))         #最终类别有多少个
    model.add(krs.layers.Activation("softmax"))         #利用softmax激活函数
    model.compile(loss="categorical_crossentropy", optimizer="adam", metrics=["accuracy"])     #配置损失函数,优化器,评估标准
    
    return model

在多分类问题中我们都是用softmax激活函数,因为会对每一类都有一个预测概率,概率最大的一个即为最好的,在二分类中就用sigmoid激活函数,神经元个数也可以按照自己的模型进行调整,我最后个数为512个,越大的话拟合时间越久。
下面就是数据处理与训练:

# -*- coding: utf-8 -*-
# Created by Jinkey on 2018/1/4.


import tensorflow as tf
import jieba as jb
import numpy as np
import matplotlib.pyplot as plt
from keras.wrappers.scikit_learn import KerasClassifier
from keras.callbacks import TensorBoard
from sklearn.
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值