zoukankan      html  css  js  c++  java
  • 中文文本预处理及表示

    文本分类

    一、建立语料库

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

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

    二、文本预处理

    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形式的标签。
    
  • 相关阅读:
    redis 操作
    Xcode 改时间问题 lua代码没反应问题
    apk 反编译
    mysql远程连接命令
    python 利用三方的xlrd模块读取excel文件,处理合并单元格
    eclipse 新建项目不可选择Java Project 解决方法
    eclipse左边的工程列表窗口不见了解决方案
    python_pycham,连接数据库,执行sql
    Eclipse修改默认的语言编码设置,处理乱码
    httprunner中的分层(api、testcase、testsuite)及实际使用
  • 原文地址:https://www.cnblogs.com/ming-jing/p/10692546.html
Copyright © 2011-2022 走看看