“词袋模型”一词源自“Bag of words”,简称 BOW ,是构建文档-词项矩阵的基本思想。对于给定的文本,可以是一个段落数组词,也可以是一个文档,该模型都忽略文本的词汇顺序和语法、句法,假设文本是由无序、独立的词汇构成的集合,这个集合可以被直观的想象成一个词袋,袋子里面就是构成文本的各种词汇。例如,文本内容为“经济发展新常态研究”的文档,用词袋模型可以表示为[经济,发展,新常态,研究]四个独立的词汇。词袋模型对于词汇的独立性假设,简化了文本数据结构化处理过程中的计算,被广泛采用,但是另一方面,这种假设忽略了词汇之间的顺序和依赖关系,降低了模型对文本的代表性。

“文档-词项矩阵”一词源自“Document-Term Matrix”,简称 DTM,DTM 矩阵转置后即为 TDM。 我们在第一章简单介绍过文档-词项矩阵的构成,直观来看,矩阵的行代表文档,列代表词汇,矩阵元素即为文档中某一词汇出现的次数。例如,有以下两个文档:文档一[经济,发展,新常态,研究],文档二[大数据,安全,隐私,保护],基于这两个文档构造一个词典:{1:”经济”, 2. “发展”, 3. “新常态”, 4. “研究”, 5. “大数据”, 6. “安全”, 7. “隐私”,8. “保护”},这个词典一共包含 8 个不同的词汇,利用词典的索引号,上面两个文档都可以用一个 8 维的向量表示:(1,1, 1,1,0,0,0,0)和(0,0,0,0,1,1,1,1),向量元素表示对应维度的词汇在文档中出现的次数数组词,两个向量合并在一起即得到文档-词项矩阵。

虽然文档-词项矩阵没有考虑到词汇之间的依存关系,但是这一简单假设也大大简化了后续文本挖掘的计算过程,利用结构化处理的文档-词项矩阵已经可以实现很多有意义的分析过程,如计算文档之间的相关性、文本分类、文本聚类等等。

利用 scikit-learn 库构建文档-词频矩阵

除了常用的机器学习算法外,scikit-learn 库还提供了很多数据结构化处理的工具,将这类结构化处理统称为“Feature Extraction”,即“特征抽取”,文本中的词汇出现的次数就属于“特征”中的一种。通过 sklearn.feature_extraction 包实现相关操作,该包包括从文本和图像中进行特征抽取的方法。

1 sklearn.feature_extraction.text.CountVectorizer

sklearn.feature_extraction.text 是 sklearn.feature_extraction 包中进行文本数据结构化处理的模块,其中定义的 CountVectorizer 类可以同时实现分词处理和词频统计,并得到文档-词频矩阵。 实例化方式为:实例=CountVectorizer(input=u’content’, encoding=u’utf-8′, decode_error=u’strict’, strip_accents=None, lowercase=True, preprocessor=None, tokenizer=None, stop_words=None, token_pattern=u'(?u)bww+b’, ngram_range=(1, 1), analyzer=u’word’, max_df=1.0, min_df=1, max_features=None, vocabulary=None, binary=False, dtype=)

参数说明:

数组词组词语_数组词_数组词多音字

input:有以下三种取值类型

(1)filename:文本内容的文件名

(2)file:有“read”方法的对象,如 file 对象

(3)content:需要处理的文本

数组词_数组词组词语_数组词多音字

encoding:解码参数,默认取值为“utf-8”

decode_error:若需要分析的字符串中包含未能解码字符,可以利用该参数设置处理方案,有以下三种方案:

(1)strict:默认缺失值,出现异常报错

(2)ignore:忽略异常情况

(3)replace

analyzer:指定特征项为词(word)还是 n-grams 字符(按照 n 个字符对语句进行划分),有以下几种取值:

(1)word:指定特征项为词

(2)char:指定特征项为 n-grams 字符

(3)char_wb:仅从文本中词边界创建 n-gram 字符

如果传递一个用来提取特征的可调用函数,那么就按照被传递的函数进行处理

preprocessor:利用可调用函数改写预测处理函数,同时保留分词和 n-grams 的处理过程,默认缺失值为“None”

tokenizer:利用可调用函数改写分词步骤,同时保留预处理和 n-grams 的处理过程,默认缺失值为“None”

ngram_range:设置 n-gram 字符中 “n” 上下界的参数,取值类型为数组(min_n, max_n),所有 min_n

———END———
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: bear68899

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注