首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Sklearn的TfidfVectorizer变换

使用Sklearn的TfidfVectorizer变换
EN

Stack Overflow用户
提问于 2013-11-22 05:18:44
回答 1查看 53.5K关注 0票数 37

我正在尝试使用Sklearn的TfidfVectorizer对象获取单个文档的tf-idf向量。我根据一些训练文档创建了一个词汇表,并使用fit_transform训练TfidfVectorizer。然后,我希望找到任何给定测试文档的tf-idf向量。

代码语言:javascript
复制
from sklearn.feature_extraction.text import TfidfVectorizer

self.vocabulary = "a list of words I want to look for in the documents".split()
self.vect = TfidfVectorizer(sublinear_tf=True, max_df=0.5, analyzer='word', 
                 stop_words='english')
self.vect.fit_transform(self.vocabulary)

...

doc = "some string I want to get tf-idf vector for"
tfidf = self.vect.transform(doc)

问题是这会返回一个n行的矩阵,其中n是我的文档字符串的大小。我希望它只返回一个代表整个字符串的tf-idf的向量。如何才能将字符串视为单个文档,而不是每个字符都是一个文档?此外,我对文本挖掘非常陌生,所以如果我在概念上做了一些错误的事情,那就太好了。任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-22 05:41:28

如果只想为给定词汇表计算tf-idf,请对TfidfVectorizer构造函数使用vocabulary参数,

代码语言:javascript
复制
vocabulary = "a list of words I want to look for in the documents".split()
vect = TfidfVectorizer(sublinear_tf=True, max_df=0.5, analyzer='word', 
           stop_words='english', vocabulary=vocabulary)

然后,使用fit与给定的corpus (即文档的可迭代)进行拟合,即计算计数

代码语言:javascript
复制
vect.fit(corpus)

方法fit_transform

代码语言:javascript
复制
vect.fit(corpus)
corpus_tf_idf = vect.transform(corpus) 

最后,transform方法接受语料库,因此对于单个文档,您应该将其作为列表传递,否则它将被视为可迭代的符号,每个符号都是一个文档。

代码语言:javascript
复制
doc_tfidf = vect.transform([doc])
票数 48
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20132070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档