中文文本预处理及表示

文本分类

一、建立语料库

文本数据的获取方法一般有两种:

  • 使用别人做好的语料库
  • 爬虫去获取自己的预料数据

二、文本预处理

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

TF-IDF详细介绍参考

2、Word2vec

Word2vec原理可参考

3、Countvectorizer(词袋模型)

可参考原理链接

总结:文本预处理具体步骤

1、分词:一般使用jieba软件。
2、生成词向量词典:可使用word2vec算法对分词后的语料库进行预训练生成词向量词典。其中的字词是不重复的,word2vec会对文本中的字、词和标点基本元素的出现频率进行统计,通过无监督训练,获得作为基础语料基础构成元素的字词对应的指定维度的向量表征。
3、数据集划分:在源代码可将数据集和测试集的划分比例参数设为0.6,60%用来训练集,40%用来测试集和验证集。
4、文本数字化:将分词后语料库文本中对应的字词和2中词向量词典经行对比,获其索引,即在词向量词典对应的序号,这样文档中都以整数索引序号表示从而实现索引形式的数字化,有利于降低文本表示的数据维度。
5、文本向量化:在数据进入模型训练前需按照词的索引序号从2中的词向量词典取出其对应的向量,这样整篇文本被转化为向量的形式。
6、标签:即文本类型,可用one-hot形式的标签。
原文地址:https://www.cnblogs.com/ming-jing/p/10692546.html