前言:本文是对特征工程中文本分词进行介绍,并用代码实例进行演示。
特征工程-Featuring Engineering
什么是特征工程?
简单的理解,特征工程可以看做数据分析中的数据处理和变换,把分析的内容转换成机器学习算法能读懂和工作的形式。针对不同的知识领域和任务,需要的特征不同,因此机器学习算法,还需要和领域内的知识相结合。
文本特征
文本的处理可以看做是自然语言处理的内容,它包括以下几个基础的特征:
(1)自动分词
英文句子中有空格,很容易分词。
(2)词根提取和词性还原
(3)词性标注
美国宾夕法尼亚州树库词性标注规范: 一共列出了36种词性
http://www.ling.upenn.edu/courses/Fall_2003/ling001/penn_treebank_pos.html
(4)句法分析
下面列出几个自然语言处理的包:
* NLTK
* Text Processing API:http://text-processing.com/
它无需安装任何程序,需要联网将文本送入接口,可以返回结果。
支持以下功能:
* 基于Curl访问Text Processing API:https://curl.haxx.se/
Curl是一个命令行工具,可以下载Curl来进行自然语言处理。
* 更为复杂的开源 TextBlob :https://github.com/sloria/TextBlob
* 中文处理工具 jieba: https://github.com/fxsjy/jieba
向量空间模型及文本相似度计算
词袋模型BOW和向量空间模型VSM:
举例说明:
BOW词袋模型只是一批文档的集合,VSM在17个词上构建向量空间,同一空间下的向量为分析文集的相似度建立条件。
停用词:
N-gram模型:
之前的VSM模型是建立在单个词上的,也可以建立在N-gram上。
计算文档的相似度:
为什么要计算文档相似度?
在对话和问答系统中,我们问的很多问题和对话其实是会有重复的答案,如果判断两个较为不同的描述是同一个问题,那么就可以直接把答案推过去,避免了重复提问和解答,以及减少找到解答的时间。
当把文档转换为空间向量,时我们可以用向量间的距离和余弦值来计算文本的相似度。
文档间的欧氏距离:
欧氏距离也就是在n维空间找到一个二维平面,两个点间的直线距离;距离越近,相似度就越大。
文档间的余弦相似度:
Tf-idf词条权重计算:
TF是词频(Term Frequency),IDF是逆文本频率指数(Inverse Document Frequency)。
词条t重复的次数越多,那么它作为分类的特征作用越小,因此需要降低这个词条的权重,idf和tf成反比。
nd表示文档总数,df(t)表示包含该词条t的文档数,为了防止分母df(t)为0,可以通过数据平滑来避免。
Tf-idf 词条权重计算举例:
Counts 是基于词频的一个特征向量文集,有六行也就是六个文档 nd=6,有三列,空间里的维度为3.
L2归一化处理后,将向量中的点的范围控制在[0,1],方便计算。
文档向量化的实例