《Python机器学习基础教程》处理文本数据

《Python机器学习基础教程》笔记


一、文本数据中的数据类型

一般有如下四种类型:

分类数据:来自固定列表中的数据(例如,红、黄、蓝)。

可以在语义上映射为类别的自由字符串:表达上自由发挥,但归根结底能与固定的类别对应(例如,倾国倾城的烈焰红色——红)。

结构化字符串数据:不与固定的类别对应(例如,地址,人名,地名)。

文本数据:由单词组成的文本(例如,一篇文章)


二、将文本数据表示为词袋

对于文档语料库,计算词袋表示包括三个步骤:

分词:将每个文档划分为出现在其中的单词。

构建词表:收集一个词表,里面包含出现在任意文档中的所有词,并对它们进行编号。

编码:对于每个文档,计算词表中每个单词在该文档中出现的频次。

词袋表示保存在一个Scipy稀疏矩阵中,这种数据格式只保存非零元素。


三、停用词

有些单词因为出现次数太多以致于没有信息量,删除没有信息量的单词有两种主要方法:

①使用特定语言的停用词列表

②舍弃那些出现过于频繁的单词

Scikit-Learn的feature_extraction.text模块中提供了英语停用词的内置列表。


四、用tf-idf缩放数据

       按照预计的特征信息量大小来缩放特征,而不是舍弃那些认为不重要的特征,最常见的做法就是使用词频-逆向文档频率方法。这一方法对某个特定文档中经常出现的术语给予很高的权重,但对在语料库的许多文档中都经常出现的术语给予的权重却不高。

       Scikit-Learn在两个类中实现了tf-idf方法:TfidfTransformer和TfidfVecorizer,前者接收CountVectorizer生成的稀疏矩阵并将其变换,后者接受文本数据并完成词袋特征提取与tf-idf变换。单词w在文档d中的tf-idf分数计算公式为:

其中N是训练集中的文档数量,N_{_{_{_{w}}}}是训练集中出现单词w的文档数量,tf(词频)是单词w在查询文档d中出现的次数。

tf-idf是一种无监督技术

tf-idf较小的特征要么是在许多文档里都很常用,要么就是很少使用


五、n元分词

        使用词袋表示的主要缺点之一是完全舍弃了单词顺序,为了将单词顺序考虑进来,引入了n元分词概念,不仅考虑单一词例的计数,而且还考虑相邻的两个或三个词例的计数。

        可以通过改变Scikit-Learn中的CountVectorizer或TfidfVectorizer的ngram_range参数来改变作为特征的词例范围。ngram_range参数是一个元组,包含要考虑的词例序列的最小长度和最大长度。


六、高级分词——词干提取与词形还原

词干提取:使用基于规则的启发法来实现(例如删除常见的后缀)。

词性还原:使用由已知单词形式组成的字典,并且考虑了单词在句子中的作用。

一般来说,词形还原比词干提取更复杂。

 

你可能感兴趣的:(《Python机器学习基础教程》处理文本数据)