在Python代码中:
tfidf = models.TfidfModel(corpus)
corpus_tfidf = tfidf[corpus]
我想找到一种方法来手动填充corpus_tfidf的值,因为我已经有了语料库中每个文档的tfidfs列表列表,使用特定的公式计算。
那么,如何使用它们填充corpus_tfidf而不是使用gensim计算重新计算它们。
我想使用我的值传递给gensim LSI和LDA模型。
感谢。
答案 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)
真