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 处理稀疏矩阵时遇到的错误。

Gensim LdaModel 报错: TypeError: sparse matrix length is ambiguous; use getnnz() or shape[0] 解决方法

原文地址: https://www.cveoy.top/t/topic/nJcg 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录