使用Sklearn的TfidfVectorizer转换

2024-05-13 23:30:30 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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。我怎样才能将字符串看作一个单独的文档,而不是将每个字符看作一个文档?另外,我对文本挖掘还很陌生,所以如果我在概念上做错了什么,那就很好了。如有任何帮助,我们将不胜感激。


Tags: to字符串文档selffortftransform向量
1条回答
网友
1楼 · 发布于 2024-05-13 23:30:30

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

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)

然后,要拟合,即计算计数,使用给定的corpus,即一个iterable文档,请使用fit

vect.fit(corpus)

方法fit_transform

vect.fit(corpus)
corpus_tf_idf = vect.transform(corpus) 

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

doc_tfidf = vect.transform([doc])

相关问题 更多 >