近期接手一个项目,时关于深度学习文本分类,我用的是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个单词为其同义词
###########################