【发布时间】:2017-02-26 18:12:36
【问题描述】:
我正在对 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 根据它们通过词频与主题列表的关联对文档进行分类,而主题列表又基于它们与词频的关联。
我想将 topic-term-associations 保存到磁盘,以便稍后重新应用它们 - 并采用此处描述的方法 [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,那么我如何返回 H,给定 V 和W?
【问题讨论】:
标签: python scikit-learn tf-idf matrix-decomposition nmf