Gensim LdaModel 报错: TypeError: sparse matrix length is ambiguous; use getnnz() or shape[0] 解决方法
Gensim LdaModel 报错: TypeError: sparse matrix length is ambiguous; use getnnz() or shape[0] 解决方法
在使用 Gensim LdaModel 处理稀疏矩阵 (如 TF-IDF 矩阵) 时,可能会遇到以下错误:
da_model = gensim.models.ldamodel.LdaModel(tfidf_matrix, num_topics=8, id2word=dict(enumerate(feature_names)), passes=10)
TypeError: sparse matrix length is ambiguous; use getnnz() or shape[0]
该错误提示稀疏矩阵的长度不明确,需要使用 getnnz() 或 shape[0] 获取长度。
解决方法
1. 将稀疏矩阵转换为稠密矩阵
可以使用 todense() 方法将稀疏矩阵转换为稠密矩阵,再传入 LdaModel 中:
da_model = gensim.models.ldamodel.LdaModel(tfidf_matrix.todense(), num_topics=8, id2word=dict(enumerate(feature_names)), passes=10)
2. 在构造稀疏矩阵时指定 dtype 为 float32
直接在构造 TF-IDF 矩阵时指定数据类型为 float32,可以避免此错误:
tfidf_matrix = TfidfVectorizer(max_df=0.95, min_df=2, max_features=n_features, stop_words='english', dtype=np.float32).fit_transform(docs_clean)
da_model = gensim.models.ldamodel.LdaModel(tfidf_matrix, num_topics=8, id2word=dict(enumerate(feature_names)), passes=10)
通过以上两种方法,可以有效解决 Gensim LdaModel 处理稀疏矩阵时遇到的错误。
原文地址: https://www.cveoy.top/t/topic/nJcg 著作权归作者所有。请勿转载和采集!