使用LDA进行主题提取的标记化

问题描述 投票:0回答:1

我正在尝试从某些文本中提取主题。我有一个名为“文本”的列,例如

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"],...]这样的令牌列表的列表(我认为应该需要这样的东西)。由于文本中包含停用词,我可能还会得到一些“不好”的结果……但这是另一个故事。

[能否请您告诉我如何获取令牌列表或可以让我使用上面代码的内容?谢谢

python nltk lda
1个回答
1
投票

我建议这样做

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')])

它应该工作。

© www.soinside.com 2019 - 2024. All rights reserved.