CountVectorizer()类解析

Posted zz22--

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CountVectorizer()类解析相关的知识,希望对你有一定的参考价值。

 

主要可以参考下面几个链接:

1.sklearn文本特征提取

2.使用scikit-learn tfidf计算词语权重

3.sklearn官方中文文档

4.sklearn.feature_extraction.text.CountVectorizer

 

补充一下:CounterVectorizer()类的函数transfome()的用法

它主要是把新的文本转化为特征矩阵,只不过,这些特征是已经确定过的。而这个特征序列是前面的fit_transfome()输入的语料库确定的特征。见例子:

1 >>>from sklearn.feature_extraction.text import CountVectorizer
2 >>>vec=CountVectrizer()
3 >>>vec.transform([Something completely new.]).toarray()

错误返回 ,sklearn.exceptions.NotFittedError: CountVectorizer - Vocabulary wasn‘t fitted.表示没有对应的词汇表,这个文本无法转换。其实就是没有建立vocabulary表,没法对文本按照矩阵索引来统计词的个位数

corpus = [
     ‘This is the first document.‘,
    ‘This is the second second document.‘,
   ‘And the third one.‘,
   ‘Is this the first document?‘]
X = vec.fit_transform(corpus)
X.toarray()

 vocabulary列表

>>>vec.get_feature_names()
 [‘and‘, ‘document‘, ‘first‘, ‘is‘, ‘one‘, ‘second‘, ‘the‘, ‘third‘, ‘this‘]

 

 得到的稀疏矩阵是

array([[0, 1, 1, 1, 0, 0, 1, 0, 1],
       [0, 1, 0, 1, 0, 2, 1, 0, 1],
       [1, 0, 0, 0, 1, 0, 1, 1, 0],
       [0, 1, 1, 1, 0, 0, 1, 0, 1]], dtype=int64)

建立vocabulary后可以用transform()来对新文本进行矩阵化了

>>>vec.transform([‘this is‘]).toarray()
 array([[0, 0, 0, 1, 0, 0, 0, 0, 1]], dtype=int64)
>>>vec.transform([‘too bad‘]).toarray()
array([[0, 0, 0, 0, 0, 0, 0, 0, 0]], dtype=int64)

简单分析‘this is‘在vocabulary表里面,则对应词统计数量,形成矩阵。而‘too bad‘在vocabulary表中没有这两词,所以矩阵都为0.

 


以上是关于CountVectorizer()类解析的主要内容,如果未能解决你的问题,请参考以下文章

Android 逆向使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 创建反汇编解析器实例对象 | 设置汇编解析器显示细节 )(代码片段

CountVectorizer 但用于文本组

如何在片段类而不是活动类中使用底页?

片段(Java) | 机试题+算法思路+考点+代码解析 2023

sklearn CountVectorizer

从 CountVectorizer 按类别提取 n 个最高频率