本文主要参考Coursera上国立高等经济大学的天然语言处理课程。git
在天然语言处理问题中,咱们能够讲文本当成是下述成分组成的序列(sequence
):github
本文主要以 词语 来举例。bash
什么是 token 呢?机器学习
天然语言处理的第一步一般是 tokenization,即将 输入的文本(sequence
)转换为 token 的过程。学习
因为中文的表示与英文不一样,英文中一般有空格来标识每个单词,中文没有明确的标识,因此中文的分词比较复杂;ui
一般使用而言,一些经常使用的分词库已经能够知足大部分需求。spa
eg. 使用 jieba 将一段文本分词。code
import jieba
seg_list = jieba.cut("我来到北京清华大学", cut_all=False)
print("Default Mode: " + "/ ".join(seg_list))
''' 我/ 来到/ 北京/ 清华大学 '''
复制代码
上述例子中的过程就是 tokenization 过程。orm
仅关注中文处理能够仅看概念blog
英文预处理过程当中的第二步叫作 tokenization normalization
这个过程是指 将相同含义可是不一样形式的词转换成同一个词(token
)
eg.
一般有两种方式来实现这个过程:
由于我想主要集中在中文预处理,因此这两个过程就不叙述了,能够经过
nltk.stem.PorterStemmer
和nltk.stem.WordNetLemmatizer
来实现这两种方式。
在将文本转化为 token 的过程当中,标点符号 仅对阅读有用,而对 语义理解 没有太大做用。
eg.
上述两个句子的语义彻底相同,而在 tokenization 过程当中却获得两种不一样的结果。因此在文本预处理过程当中须要 去除标点符号。
和标点符号类似,在文本预处理过程当中还须要去除之如“着”,“和”等一些 对语义理解帮助不大 的词,这些词就被称为 停用词。
经常使用 中文停用词下载地址 见文章末尾。
英文停用词能够直接用 nltk
提供的
import nltk
nltk.download('stopwords')
from nltk.corpus import stopwords
复制代码
能够在停用词中加入标点符号,这样就能够统一两个过程。
本文主要将了文本预处理中的几个概念:
下一篇文章将继续讲解 文本向量化表示的方式(传统机器学习):