中文文本预处理及表示

文本分类

1、创建语料库

文本数据的获取方法通常有两种:html

  • 使用别人作好的语料库
  • 爬虫去获取本身的预料数据

2、文本预处理

一、除去数据中非文本部分

通常能够使用正则表达式去进行删除python

二、处理中文编码问题

因为python2不支持unicode的处理,所以使用python2作中文文本预处理须要遵循的原则是,存储数据都用utf8,读出来进行中文相关处理时,使用GBK之类的中文编码。正则表达式

三、 中文分词

中文分词工具介绍算法

四、 去除停用词
  • 载入停用词
stopwords = pd.read_csv("NLP_project\data\stopwords.txt", index_col=False, quoting=3, sep="\t", 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)

3、文本表示(特征提取)

通常特征提取能够有三种方法转换成向量的形式。app

一、TF-IDF

TF-IDF详细介绍参考工具

二、Word2vec

Word2vec原理可参考测试

三、Countvectorizer(词袋模型)

可参考原理连接编码

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

一、分词:通常使用jieba软件。
二、生成词向量词典:可以使用word2vec算法对分词后的语料库进行预训练生成词向量词典。其中的字词是不重复的,word2vec会对文本中的字、词和标点基本元素的出现频率进行统计,经过无监督训练,得到做为基础语料基础构成元素的字词对应的指定维度的向量表征。
三、数据集划分:在源代码可将数据集和测试集的划分比例参数设为0.6,60%用来训练集,40%用来测试集和验证集。
四、文本数字化:将分词后语料库文本中对应的字词和2中词向量词典经行对比,获其索引,即在词向量词典对应的序号,这样文档中都以整数索引序号表示从而实现索引形式的数字化,有利于下降文本表示的数据维度。
五、文本向量化:在数据进入模型训练前需按照词的索引序号从2中的词向量词典取出其对应的向量,这样整篇文本被转化为向量的形式。
六、标签:即文本类型,可用one-hot形式的标签。
相关文章
相关标签/搜索