'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:]
我正在尝试将潜在狄利克雷分配算法应用于从 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:]