我使用潜在Dirichlet分配(sklearn实现)分析了大约500篇科学文章摘要,得到了包含最重要单词的主题(德语)。我的问题是如何解释这些与最重要的词语相关的价值观。我假设每个主题的所有单词的概率加起来等于1,但事实并非如此。
我如何解释这些值?例如,我想知道为什么主题#20中的单词比其他主题的值高得多。它们的绝对高度与贝叶斯概率有关吗?该主题在语料库中更常见吗?我还不能把这些值和LDA背后的数学结合起来。
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.decomposition import LatentDirichletAllocation
tf_vectorizer = CountVectorizer(max_df=0.95, min_df=1, top_words=stop_ger,
analyzer='word',
tokenizer = stemmer_sklearn.stem_ger())
tf = tf_vectorizer.fit_transform(texts)
n_topics = 10
lda = LatentDirichletAllocation(n_topics=n_topics, max_iter=5,
learning_method='online',
learning_offset=50., random_state=0)
lda.fit(tf)
def print_top_words(model, feature_names, n_top_words):
for topic_id, topic in enumerate(model.components_):
print('\nTopic Nr.%d:' % int(topic_id + 1))
print(''.join([feature_names[i] + ' ' + str(round(topic[i], 2))
+' | ' for i in topic.argsort()[:-n_top_words - 1:-1]]))
n_top_words = 4
tf_feature_names = tf_vectorizer.get_feature_names()
print_top_words(lda, tf_feature_names, n_top_words)
Topic Nr.1: demenzforsch 1.31 | fotus 1.21 | umwelteinfluss 1.16 | forschungsergebnis 1.04 |
Topic Nr.2: fur 1.47 | zwisch 0.94 | uber 0.81 | kontext 0.8 |
...
Topic Nr.20: werd 405.12 | fur 399.62 | sozial 212.31 | beitrag 177.95 |
从文件中
组件-主题词分布的变分参数。由于主题词分布的完整条件是一个Dirichlet,因此可以将分量_[i,j]视为伪计数,表示单词j被分配给主题i的次数。它还可以被视为在标准化:模型之后每个主题词的分布。组件/模型。组成部分。总和(axis=1)[,np.newaxis]
。
因此,如果您对组件进行规范化,以评估主题中每个术语的重要性,那么这些值可以被视为一个分布。AFAIU不能使用伪计数来比较语料库中两个主题的重要性,因为它们是应用于术语主题分布的平滑因子。
我试图了解如何gensim包在Python实现潜在Dirichlet分配。我正在做以下工作: 定义数据集 删除stopwords后,我创建了字典和语料库: 然后我定义了LDA模型。 然后我打印主题: 我无法从这个结果中了解太多。它是否提供了每个单词出现的概率?还有,主题1、主题2等的含义是什么?我期待着一些或多或少像最重要的关键词。 我已经查阅了gensim教程,但它并没有起到多大作用。 谢谢。
问题内容: 我有一个json文件,如下所示: 该文件是由另一个程序自动创建的。如何使用Python解析? 问题答案: 我无法想象一个 “由其他程序自动创建” 的json文件将在其中包含注释。因为json规范根本没有定义任何注释,而这是设计使然,所以没有json库将输出带有注释的json文件。 这些评论通常是由人后来添加的。在这种情况下也不例外。OP在他的帖子中提到:。 因此,真正的问题应该是,如何
在我的项目中,我有一些重构逻辑的公共接口。看起来是这样的: 然后,当我需要编写一些重构时,我用方法实现这个接口,标记类,如组件,Spring-in-loop评估每个接口实现并将其注册到数据库中。但是我们有很多重构(每年有200-300个新的)。很难手动禁用旧的实现,我们在spring上下文中有很多bean。我们可以做些什么吗,例如,使用一些注释-这将在某些条件下禁用组件创建? 例如: 此注释的工作
问题内容: 为简单起见,请设想这种情况,我们有一台2位计算机,它具有一对称为r1和r2的2位寄存器,并且仅适用于立即寻址。 假设位序列 00 表示 添加 到我们的CPU中。也 01 的装置将数据移动到R 1和 10组 的装置将数据移动到R2。 因此,这台计算机和一个汇编器都有一种汇编语言,其中的示例代码将像 简而言之,当我将此代码汇编成本地语言时,文件将类似于: 上面的12位是以下代码的本机代码:
问题内容: 有两种通过play框架创建海关标签的方法。 通过在app / view / tags中定义一个Groovy模板 通过在类中直接扩展FastTag直接在纯Java中 没有最新的文件。 问题答案: 因此,类似于JavaExtensions通过扩展JavaExtensions类的工作方式,要创建FastTag,您需要创建一个扩展FastTags的类。您要作为标记执行的每个方法都必须符合以下方
我在onCreate中创建的SQLite数据库中有三个表。我没有数据记录,只需要查询表进行计算并显示在屏幕上。这是我需要做的sql来获取我需要的3个变量。sql只返回一条记录不是列表。 Rawquery研究并认为这是最好的解决方案,但不知道如何运行sql,当我将这些参数传递给sql并获得我需要的三个变量时,是否有人能向我详细解释一下,以便我能够理解并应用到这里?