我正在尝试从某些文本中提取主题。我有一个名为“文本”的列,例如
34 fino a 2 giorni. è questo il tempo massimo di ...
36 il morbillo è contagioso anche fuori...
44 altra cattiva notizia: il Milan ha perso ...
45 tra persistenza della memoria e del cielo...
49 i ricercatori della university medici...
96 analizzando però 22 ricerche si è messo in luc...
259 ... il melone è molto rinfrescante ...
275 e non perché il governo abbia la capacità ...
287 da qualche ore fino a qualche mese: quanto s...
298 l'esperto ha specificato che l'affermazione ch...
并且我将需要使用lda提取主题。我一直在使用此代码]
from gensim import corpora, models
from nltk.tokenize import word_tokenize
from nltk.tokenize import WordPunctTokenizer
import nltk
df['Texts'] = df.apply(lambda row: nltk.word_tokenize(row['Texts']), axis=1)
dictionary_LDA = corpora.Dictionary(df['Texts'].tolist())
dictionary_LDA.filter_extremes(no_below=3)
corpus = [dictionary_LDA.doc2bow(list_of_tokens) for list_of_tokens in df['Texts'].tolist()]
num_topics = 20
%time lda_model = models.LdaModel(corpus, num_topics=num_topics, \
id2word=dictionary_LDA, \
passes=4, alpha=[0.01]*num_topics, \
eta=[0.01]*len(dictionary_LDA.keys()))
但是,当我使用dictionary_LDA
时,df['Texts'].tolist()
存在问题,并且这不是像[["word1","word2","word3"], ["word4","word5","word6"],...]
这样的令牌列表的列表(我认为应该需要这样的东西)。由于文本中包含停用词,我可能还会得到一些“不好”的结果……但这是另一个故事。
[能否请您告诉我如何获取令牌列表或可以让我使用上面代码的内容?谢谢
我建议这样做
df['Texts_Tokenized'] = df.apply(lambda row: nltk.word_tokenize(row['Texts']), axis=1)
df['Texts_Tokenized']=df['Texts_Tokenized'].apply(lambda x: [item for item in x if item not in stopwords.words('italian')])
它应该工作。