近期接手一个项目,时关于深度学习文本分类,我用的是keras深度学习框架LSTM模型,学习前首先得对数据进行处理,由于文本类别比较多有96类,并且有部分类别数据量比较少,这将会影响算法的拟合,我首先想到的是过采样的方法,但是过采样对文本数据无用,所以得先进行词向量的转换,转换完之后我发现准确率还是上不去,后来看了一下word2vec原理,是按照输入的文本数据进行分词统计,在计算词向量,所以这样利用过采样出来的结果,不能够代表就是与原文本类似的文本,所以这种方法pass掉。之后就找到文本数据增强的方法,下面我把我用到的给分享一下。看代码:
# !/usr/bin/env python
# -*- coding: utf-8 -*-
import jieba
import re
import synonyms
import random
from random import shuffle
random.seed(2019)
# 停用词列表,默认使用哈工大停用词表
f = open('stop_word.txt', encoding='utf-8')
stop_words = list()
for stop_word in f.readlines():
stop_words.append(stop_word[:-1])
# 考虑到与英文的不同,暂时搁置
# 文本清理
'''
import re
def get_only_chars(line):
#1.清除所有的数字
'''
########################################################################
# 同义词替换
# 替换一个语句中的n个单词为其同义词
########################################################################
def synonym_replacement(words, n):
new_words = words.copy()
random_word_list = list(set([word for word in words if word not in stop_words]

在深度学习文本分类项目中,面对96类不平衡数据,尝试了过采样无效后,转向词向量转换。发现过采样后的word2vec无法反映原文本特性,于是采用文本数据增强方法——EDA(包括随机替换、随机插值、随机交换、随机删除),通过调整EDA函数参数来优化文本,以提高模型准确率。
最低0.47元/天 解锁文章
2886





