我正在对 tf-idf 输入执行 NMF 分解以执行主题分析。
def decomp(tfidfm, topic_count):
model = decomposition.NMF(init="nndsvd", n_components=topic_count, max_iter=500)
H = model.fit_transform(tfidfm)
W = model.components_
return W, H
这将返回W,一个由主题到术语分配的模型定义和H,一个文档到主题分配矩阵
到目前为止一切顺利,我可以使用 H 根据它们通过词频与主题列表的关联对文档进行分类,而主题列表又基于它们与词频的关联。
我想将主题术语关联保存到磁盘,以便稍后重新应用它们 - 并采用此处描述的方法 [ https://stackoverflow.com/questions/8955448]来存储 W 的稀疏矩阵表示.
所以我现在想做的是执行相同的过程,只修复主题定义矩阵 W。
在文档中,我似乎可以在调用参数中设置 W 类似的内容:
def applyModel(tfidfm,W,topic_count):
model = decomposition.NMF(init="nndsvd", n_components=topic_count, max_iter=500)
H = model.fit_transform(X=tfidfm, W=W)
W = model.components_
return W, H
我已经尝试过了,但它似乎不起作用。
我已经通过使用不同大小的词汇表编译 W 矩阵进行了测试,然后将其输入到applyModel
函数中,结果矩阵的形状应该由 W 模型定义(或者我应该说,这就是我想要的),但事实并非如此。
这个问题的简短版本是:如何保存从矩阵分解生成的主题模型,以便我可以使用它来分类与最初生成它的文档集不同的文档集?
换句话说,如果V = WH ,那么在给定V和W的情况下,我如何返回H?