【发布时间】:2021-03-02 00:20:45
【问题描述】:
我使用 gensim.models.ldamodel.LdaModel() 执行了一些主题建模,我想标记我的数据,以可视化我的发现。
这是我目前所拥有的:
我当前的数据框有以下列:
['text']['date']['gender']['tokens']['topics']['main_topic']
文本只是纯文本数据,日期格式为(yyyy-mm-dd),性别为二进制,女性为1,tokens为预处理后的文本,主题来源于:
df['topics'] = LDA_model.get_document_topics(corpus)
并且 main_topic 与来自 post 的第二个答案略有不同,并且填充如下:
df['main_topic'] = [int(str(sorted(LDA_model[i],reverse=True,key=lambda x: x[1])[0][0]).zfill(3)) for i in corpus]
最后,前 10 行 topic 和 main_topics 看起来像这样(注意 num_topics=30):
topics main_topic
[(0, 0.051341455), (1, 0.21204428), (2, 0.1145254), (4, 0.055585753), (11, 0.20260869), (29, 0.25616828)] 29
[(0, 0.052005265), (1, 0.21128647), (2, 0.08015486), (3, 0.11465485), (29, 0.4478401)] 29
[(0, 0.05355798), (1, 0.1394092), (2, 0.10734849), (4, 0.32699445), (29, 0.273105)] 4
[(0, 0.053568278), (1, 0.22299954), (2, 0.22616898), (11, 0.0959242), (29, 0.2897638)] 29
[(0, 0.05404401), (1, 0.4482777), (4, 0.141311), (29, 0.24849494)] 1
[(0, 0.054245334), (1, 0.18933308), (2, 0.14567153), (4, 0.11169399), (23, 0.05768766), (29, 0.35825193)] 29
[(0, 0.05449035), (2, 0.114870586), (4, 0.13284092), (11, 0.075592585), (23, 0.13247918), (24, 0.06598773), (29, 0.32016253)] 29
[(0, 0.055871632), (1, 0.23100668), (4, 0.06832383), (29, 0.4730603)] 29
[(0, 0.057746172), (1, 0.057121024), (2, 0.07247137), (3, 0.26388222), (13, 0.07291462), (29, 0.34331965)] 29
[(0, 0.057841185), (1, 0.19891246), (2, 0.09586754), (29, 0.5344914)] 29
现在我想要的是:
我想要 30 个新列:“主题 0、主题 1、主题 2、...、主题 29”。对于第一行,我想使用 df['topics'] 并将值保存在新列中,以便:
第 1 行的主题 0 = 0.0513414,第 1 行的主题 1 = 0.21204,第 1 行的主题 2 = 0.11452,第 1 行的主题 3 = 0,依此类推。
但我不知道怎么做。有人可以帮忙吗?
【问题讨论】: