中文文本预处理流程

ryluo 2020-06-14 01:29:22
自然语言处理

参考刘建平机器学习大佬博客,整理的中文文本预处理流程

在所有的NLP任务中,对于文本的预处理为后续的建模解决实际问题起到了非常中要的作用,因为对于机器学习模型来说,数据的质量和规模决定了模型性能的上限,同时对于数据的预处理也会占据工程中的大部分时间。

1. 数据收集

文本数据的来源一般有两种:

  1. 公用的语料库
  2. 自己爬取的数据

爬虫的开源工具很多,推荐使用beautifulsoup。如果需要对于某个主题的内容进行爬取,称为“主题爬虫”,推荐使用ache。


2. 除去数据中非文本部分

主要是针对自己爬取的数据,由于数据是在网页上爬取的,所以爬取下来的数据中含有大量的html的标签,需要去掉。少量的非文本内容可以直接用Python的正则表达式(re)删除,复杂的可以使用beautifulsoup来去除。只有去除了数据中的非文本部分,才可以进行真正的文本预处理了。


3. 中文分词

常用的中文分词的软件包很多,推荐使用jieba分词。jieba分词入门实践已经在其他的博客中有介绍,下面主要介绍一下分词的一般流程。

  1. 导入jieba包
  2. 打开文档(有时候打开文档报错可能是编码问题)
  3. jiaba分词
  4. 将分词后得到的生成器进行字符串拼接(拼接完之后根据情况处理编码)
  5. 将分词结果写入新的文档

最后将分词之后的结果写入新的文档之后,分词的过程就算是结束了。但是需要注意的是,在分词的时候有时候对于某个领域的专有名词jieba库中没有那个语料所以无法正确的进行分词,可以通过引入用户自己的词典的方式来解决上述问题。


4. 引入停用词

分词之后得到的结果中,有很多词比如“着”,”和”还有一些标点符号在文本分析的时候是没有用的,需要去掉,这些词被称为停用词。常用的中文停用词表是1208个,不过停用词的版本也有很多根据实际情况进行选择。


5. 特征处理

对于文本特征常用的两种特征处理方法为:向量法与Hash Trick. 而向量法用的更加的广泛,因为对文本进行了向量化之后接着可以进行TF-IDF的特征处理。对于向量法详细的学习与介绍会在其他的文章中给出总结。


6. 建立分词模型

有了文本特征之后,就可以对这些数据建立分类模型或者聚类模型(也可以是其他的具体模型)。此时与用机器学习处理其他的数据没有什么两样,很多机器学习算法都可以直接使用。

参考链接:https://www.cnblogs.com/pinard/p/6744056.html