当前位置:  开发笔记 > 编程语言 > 正文

如何使用sklearn的CountVectorizer进行矢量化和反矢量化?

如何解决《如何使用sklearn的CountVectorizer进行矢量化和反矢量化?》经验,为你挑选了1个好方法。



1> Jakub Macina..:

要将句子向量化为整数,可以使用transform函数。此函数的输出是具有每个术语计数的向量-特征向量。

vec = CountVectorizer()
vec.fit(a)
print vec.vocabulary_

new_sentence = "dolor nulla enim"
mapped_a = vec.transform([new_sentence])
print mapped_a.toarray() # sparse feature vector

tokenizer = vec.build_tokenizer()
# array of words ids
for token in tokenizer(new_sentence):
    print vec.vocabulary_.get(token)

问题的第二部分不是那么简单。CountVectorizer具有inverse_transform用于此目的的功能,将稀疏的特征向量作为输入。但是,在您的示例中,您想创建一个句子,在该句子中可能会出现相同的术语,而使用该功能是不可能的。

但是,解决方案是使用词汇(单词到id)并基于其构建逆词汇(单词到单词)。CountVectorizer默认情况下为no inverse_vocabulary,您必须基于创建它vocabulary

input = [2,9,9]

# 1. inverse_transform function
# create sparse vector
sparse_input = [1 if i in input else 0 for i in range(0, len(vec.vocabulary_))]
print vec.inverse_transform(sparse_input)
> ['aliquam', 'commodo']


# 2. Inverse vocabulary - custom solution
terms = np.array(list(vec.vocabulary_.keys()))
indices = np.array(list(vec.vocabulary_.values()))
inverse_vocabulary = terms[np.argsort(indices)]

for i in input:
    print inverse_vocabulary[i]
> ['aliquam', 'commodo', 'commodo']

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有