在Pyhton中可以采用两种工具包实现文本词袋模型:Scikit-learn工具包和Gensim工具包。
1.采用Scikit-learn工具包实现词袋模型
1)CountVectorizer类
在Scikit-learn工具包中提供实现BOW模型CountVectorizer类,描述如下:
(1)参数:
详细参数请参考相关文档,一般情况下采用默认即可,这里对几个参数进行说明。
ngram_range:词组切分的长度范围,默认值为(1,1),也可以是(1,2)、(2,2)。(1,1)表示1-gram,(2,2)表示2-gram,(1,2)表示1-gram和2-gram。
max_df:在构建特征词典时,如果某个词的document frequence大于max_df,这个词不会被当作关键词。其值可设置float,也可设置为int。如果是float,其范围为[0.0,1.0],默认值为1.0。如果这个参数是float,则表示词出现的次数与语料库文档数的百分比;如果是int,则表示词出现的次数。如果参数中已经给定了vocabulary,则这个参数无效。
min_df:在构建特征词典时,如果某个词的document frequence小于min_df,这个词不会被当作关键词。其值可设置float,也可设置为int。如果是float,其范围为[0.0,1.0],默认值为1。如果这个参数是float,则表示词出现的次数与语料库文档数的百分比,如果是int,则表示词出现的次数。如果参数中已经给定了vocabulary,则这个参数无效。
max_features:在构建特征词典时,对关键词按照词频进行降序排列,选取前max_features个词作为关键词。默认值为None,可设为int,如果参数中已经给定了vocabulary,则这个参数无效。
vocabulary:是一个特征词和索引值的特征词典,如果没有指定则根据输入文档决定。
(2)常用属性:
vocabulary_:特征词典。
(3)常用方法:
①fit_transform(self,raw_documents[,y])。
功能:将文本中的词转换为词频矩阵。
②get_feature_names(self)。
功能:根据特征词的索引值返回特征词表。
2)基于Scikit-learn词袋模型的文本特征选择和表示
采用Scikit-learn词袋模型进行文本特征选择和表示,首先引入相应的类:
运行结果如下:
(1)词典。采用Scikit-learn获取来的词典:词和词的索引值。
注意:
(2)特征词列表。
(3)文本词频矩阵。通过fit_transform方法将文本中的词语转换为词频矩阵,矩阵元素a[i][j]表示j词在第i个文本中的词频,即各个词语出现的次数。
(4)词频矩阵(稀疏表示)。采用“(文本号,词的索引号)出现频率”表示。例如“(0,0)1”:表示文本号为0文档中0号词的出现次数为1次。文本“李明是清华大学计算机专业学生,李强是清华大学数据专业学生。”中的词“专业”出现频率为1。
通过BOW模型,文本文档将为特征词频的数值表示,即上述语料集D中的两个文本通过上述方式表示成统一的11维向量,随着文本数量增多,词典急剧增大,可采用根据词频的大小对文本集中的特征进行选择,减少词典中词的个数,减少向量维度。
文档集级的特征选择是根据特征词在所有文档中的出现频率来选择,即可以采用根据词频的大小选择排序靠前的6个特征词作为词典,其中关键的调用语句:
其结果为:
(1)词典。
(2)特征词列表。
(3)词频矩阵(稀疏表示)。
(4)文本词频矩阵。(www.xing528.com)
文本可表示为统一的6维向量,降低了向量的维度。这种采用文档集级的特征选择方法可以选择出整个文档集中的重要特征。如果需要选择某个文本文档中的关键特征,也可以采用文档级的特征选择方法,即根据每个文档中特征的词频大小选择文档特征。
2.采用Gensim工具包实现词袋模型
1)Dictionary类
在Gensim工具包中提供实现BOW模型的Dictionary类,获取语料库的词典,为每个词指定一个索引号,并可实现词典中词的词频统计。其描述如下:
(1)参数:
documents:iterable类型,可选参数,用来初始化和收集语料库统计信息的文档。
prune_at:int类型,可选参数,词典在映射时将尽量不超过prune_at个单词,以限制内存占用。
(2)常用属性:
token2id:词典,格式为“词,索引号”。
(3)常用方法:
①doc2bow(document,allow_update=False,return_missing=False)。
功能:把文本文档转换成词袋格式,为(词索引号,词频)的元组列表。
参数:
document:list类型,指输入的文档列表。
allow_update:bool类型,可选参数,指可以通过添加文档中的新词和更新内部语料统计来更新本身。
return_missing:bool类型,可选参数,返回缺失的词。
②filter_extremes(no_below=5,no_above=0.5,keep_n=100000,keep_tokens=None)。
功能:按频率筛选词典中的词。
参数:
no_below:int类型,可选参数。保留至少包含在no_below个文档中的分词。
no_above:float类型,可选参数,保留包含在不超过no_above文档中的标记(占总语料库大小的比例,而不是一个绝对数值)。
keep_n:int类型,可选参数。保留前keep_n个最频繁分词。
keep_tokens:iterable或str类型。在筛选后必须保留在词典中的分词。
2)基于Gensim词袋模型的文本特征选择和表示
采用Gensim工具包实现词袋模型的代码如下:
运行结果如下:
(1)词列表。
(2)语料库词典,给出了词和词的索引号。
(3)文本0和文本1的向量化表示。
返回的类型是(词索引号,词频)的元组列表,如(0,1)表示在词典中的0号词“李明”文本0中出现1次。
注意:其表示方式与Scikit-learn有类似的地方,但在向量化的表示上有所不同。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。