如何手动设置gensim中的Tfidf模型的值

时间:2018-05-28 01:17:01

标签: python gensim tf-idf

在Python代码中:

tfidf = models.TfidfModel(corpus)
corpus_tfidf = tfidf[corpus]

我想找到一种方法来手动填充corpus_tfidf的值,因为我已经有了语料库中每个文档的tfidfs列表列表,使用特定的公式计算。

那么,如何使用它们填充corpus_tfidf而不是使用gensim计算重新计算它们。

我想使用我的值传递给gensim LSI和LDA模型。

感谢。

1 个答案:

答案 0 :(得分:1)

在我看来,如果您可以手动分配idfs属性,那么您应该能够在不重新拟合的情况下转换语料库。希望这会有所帮助。

自包含的例子:

from gensim.models import TfidfModel
from gensim.corpora import Dictionary

# trained version
corpus = ['cow', 'brown thing', 'cow thing']
corpus = [x.split() for x in corpus]
dct = Dictionary(corpus)
corpus_as_bow = [dct.doc2bow(x) for x in corpus]
model_trained = TfidfModel(corpus_as_bow)
corpus_tfidf_trained = model_trained[corpus_as_bow]

# not trained version
model_not_trained = TfidfModel()
model_not_trained.idfs = {0: 0.5849625007211562, 1: 1.5849625007211563, 2: 0.5849625007211562}
corpus_tfidf_not_trained = model_not_trained[corpus_as_bow]

# check equivalence
list(corpus_tfidf_trained) == list(corpus_tfidf_not_trained)