文本分类
一、建立语料库
文本数据的获取方法一般有两种:
- 使用别人做好的语料库
- 爬虫去获取自己的预料数据
二、文本预处理
1、除去数据中非文本部分
一般可以使用正则表达式去进行删除
2、处理中文编码问题
由于python2不支持unicode的处理,因此使用python2做中文文本预处理需要遵循的原则是,存储数据都用utf8,读出来进行中文相关处理时,使用GBK之类的中文编码。
3、 中文分词
4、 去除停用词
- 载入停用词
stopwords = pd.read_csv("NLP_projectdatastopwords.txt", index_col=False, quoting=3, sep=" ", names=['stopword'],encoding='utf-8')
stopwords = stopwords['stopword'].values
- 去停用词
def preprocess_text(content_lines, sentences, category):
for line in content_lines:
try:
segs = jieba.lcut(line)
segs = list(filter(lambda x: len(x) > 1, segs))
segs = list(filter(lambda x: x not in stopwords, segs))
sentences.append((" ".join(segs), category)) #sentence是列表。里面是一个元祖,category是该内容的一个标签
except BaseException:
print(line)
三、文本表示(特征提取)
一般特征提取可以有三种方法转换成向量的形式。
1、TF-IDF
2、Word2vec
3、Countvectorizer(词袋模型)
总结:文本预处理具体步骤
1、分词:一般使用jieba软件。
2、生成词向量词典:可使用word2vec算法对分词后的语料库进行预训练生成词向量词典。其中的字词是不重复的,word2vec会对文本中的字、词和标点基本元素的出现频率进行统计,通过无监督训练,获得作为基础语料基础构成元素的字词对应的指定维度的向量表征。
3、数据集划分:在源代码可将数据集和测试集的划分比例参数设为0.6,60%用来训练集,40%用来测试集和验证集。
4、文本数字化:将分词后语料库文本中对应的字词和2中词向量词典经行对比,获其索引,即在词向量词典对应的序号,这样文档中都以整数索引序号表示从而实现索引形式的数字化,有利于降低文本表示的数据维度。
5、文本向量化:在数据进入模型训练前需按照词的索引序号从2中的词向量词典取出其对应的向量,这样整篇文本被转化为向量的形式。
6、标签:即文本类型,可用one-hot形式的标签。