'numpy.int64' 使用潜在狄利克雷分配时对象不可迭代

'numpy.int64' object is not iterable when using latent dirichlet allocation

我正在尝试将潜在狄利克雷分配算法应用于从 Twitter 数据中检索到的 .csv 文件。

目前我运行跨越错误:

Traceback (most recent call last):
  File "...Python\Python39\lib\tkinter\__init__.py", line 1884, in __call__
    return self.func(*args)
  File "...\src\project.py", line 262, in topic-modelling-lda
    for i in top_topic_words:
TypeError: 'numpy.int64' object is not iterable

我使用的库:

import pandas as pd
import numpy as np
import re, random
from nltk.corpus import stopwords
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.decomposition import LatentDirichletAllocation

这是我为该功能编写的代码

def topic-modelling-lda(self):
        df = pd.read_csv('sample_dataset.csv')

        vect = CountVectorizer(max_df=0.6, min_df=4, stop_words='english')
        matrix = vect .fit_transform(df)

        LDA = LatentDirichletAllocation(n_components=5, random_state=50)
        LDA.fit(matrix)

        first_topic = LDA.components_[0]
        top_topic_words = first_topic.argsort()[-10]
        for i in top_topic_words:
            print(count_vect.get_feature_names()[i])

第 262 行是 for i in top_topic_words:

我不确定我将如何解决这个问题。

我相信你想要 select 前 10 个单词,但你使用了错误的语法。你只是 select 排名第 10 的词,它是不可迭代的。将第 261 行更改为 select 前 10 名而不是仅 select 第 10 名:

top_topic_words = first_topic.argsort()[-10:]