摘要
主题模型容许对文档中的术语频率产生进行概率建模。拟合模型可用于预计文档之间以及一组指定关键字之间的相似性,这些关键字应用称为主题的额定潜在变量。R 包主题模型提供了基于文本开掘包 tm 中的数据结构拟合主题模型的根本根底构造。
关键词:吉布斯采样,R,文本剖析,主题模型
1. 引言
在机器学习和自然语言解决中,主题模型是生成模型,它们为给定语料库中文档中的术语频率呈现提供了概率框架。仅应用术语“频率”假设单词在文档中呈现的程序能够忽略不计。这个假如也被称为文档中单词的可替换性假如,这个假如导致了词袋模型。
2. 主题模型标准与估算
对于这两种模型(LDA 和 CTM),主题 k 的数量必须先验地固定下来。LDA 模型和 CTM 假如文档 w =(w1,. .,wN)的以下生成过程,该文档蕴含来自在 V 个不同术语组成的词汇表中的 N 个单词,∈ 对于所有 i = 1,. .,N.
对于 LDA,生成模型由以下三个步骤组成。
步骤 1:术语“散布 β 由以下形式确定:
步骤 2:文档 w 的主题散布比例 θ 由下式确定
步骤 3:对于 N 个单词中的每一个 wi
(a)抉择一个主题 zi ∼ 多项式(θ)。
(b)从以主题 zi 为条件的多项式概率分布中抉择一个词 wi:p(wi | 子,β)。
β 是主题的术语散布,蕴含给定主题中单词呈现的概率。
3. 利用:次要函数是 LDA()和 CTM()
包主题模型中用于拟合 LDA 和 CTM 模型的次要性能是 LDA()和 CTM(),别离
LDA(x, k, method = "VEM", control = NULL, model = NULL, ...)
CTM(x, k, method = "VEM", control = NULL, model = NULL, ...)
这两个函数具备雷同的参数。x 是具备非负整数计数条目标适合文档术语矩阵,通常是从包 tm 取得的“文档术语矩阵”。
4. 示例:JSS 论文摘要
在统计软件杂志(JSS)的摘要汇合中进行了演示。
R> JSS_papers\[, "description"\] <- sub(".*\\nAbstract:\\n", "",
+ unlist(JSS_papers\[, "description"\]))
为了后果的可重复性,咱们仅应用截至 2010-08-05 发表的摘要,并省略摘要中蕴含非 ASCII 字符的摘要。
最终数据集蕴含 348 个文档。在剖析之前,咱们应用包 tm 将其转换为“语料库”。希腊字母,下标等摘要中的 HTML 标记应用包 XML 删除。
R> corpus <- Corpus(VectorSource(sapply(JSS_papers\[, "description"\],
文档集应用函数文档术语矩阵从包 tm 导出到文档术语矩阵。应用控制参数对术语进行词干解决,并删除非索引字、标点符号、数字和长度小于 3 的术语。
R> JSS_dtm <- DocumentTermMatrix(corpus,
R> dim(JSS_dtm)
蕴含此术语的文档上的均匀术语频率 - 反向文档频率(tf-idf)用于抉择词汇。
R> summary(col\_sums(JS\_dtm))
R> summary(tem_tidf)
R> summary(col\_sums(J\_dtm))
通过预处理后,咱们有以下文档术语矩阵,其中蕴含缩小的词汇量,咱们能够应用它来适应主题 m
R> dim(JSS_dtm)
在下文中,咱们应用(1)具备预计 α 的 VEM、(2)具备 α 固定的 VEM 和(3)具备 1000 次迭代的预烧的 Gibbs 采样以及记录 1000 次迭代的每 100 次迭代的 30 个主题的 LDA 模型。
在考察了性能后,咱们将主题数量随便设置为 30 个,主题数量从 2 到 200 不等,应用 10 倍穿插验证。
为了比拟拟合模型,咱们首先钻研拟合 VEM 的模型的 α 值,α 预计的 VEM 和 α 固定的模型。
R> sapply(jss_TM
图 1:不同预计办法的所有文档调配到最可能主题的概率的直方图
咱们看到,如果预计 α,则将其设置为远小于默认值的值。
熵度量还可用于批示四种拟合办法的主题散布有何不同。
值越高,示意主题散布散布在主题上越平均。文档的预计主题和主题的预计术语能够应用便当函数主题()和术语()取得。每个文档最可能的主题由以下公式取得
R> Topic <- topics(jss_TM\[\["VEM"\]\], 1)
每个主题的五个最罕用术语由下式取得:
如果文档的任何类别标签可用,则这些标签可用于验证拟合模型。
这些论文之间的相似性体现在以下事实中:大多数论文的主题与其最可能的主题雷同。主题 7 的十个最有可能的术语由下式给出
显然,这个话题与特刊的个别主题无关。这表明拟合主题模型在不应用此信息的状况下胜利地检测了同一特刊中论文之间的相似性。
5. 通讯社数据案例
在下文中,剖析了 1992 年第一次文本检索会议(TREC-1)(Harman 1992)通讯社数据的子集。
R> dim(AssociatedPress)
它由 2246 个文档组成,词汇表曾经被选中,只蕴含呈现在超过 5 个文档中的单词。
该剖析应用 10 倍穿插验证来评估模型的性能。
当折的值从 1,. . . 10 时,咱们用三种不同的变体来预计模型。
主题数量从以下方面不等:
R> topics <- 10 * c(1:5, 10, 20)
对于 α VEM,咱们有:
对于固定 α VEM:
图 2:拟合 VEM 模型的测试数据的困惑。每行对应于 10 倍穿插验证中的一个折叠。
对于 Gibbs 采样,咱们应用 1000 的预烧,而后是 1000 次抽取,并返回所有抽取
+ model = train\[\[which.max(sapply, train, logLik)\]\],
+ control = list(estimate.beta = FALSE, burnin = 1000, thin = 100,
图 2 给出了应用 VEM 拟合的模型的测试数据的困惑度。对于这两种预计办法,倡议将大概 40 个主题作为最佳办法。VEM 预计 α 值在左侧的图 3 中给出。显然,这些值比用作默认值 50/k 的值小得多。同样,请留神,较小的 α 值示意文档上的主题散布大部分权重位于角落。这意味着文档仅蕴含大量主题。对于应用 Gibbs 抽样拟合的模型,还通过确定测试数据的困惑来执行模型抉择。左边的图 3 表明,大概 20-40 个主题是最佳主题。
图 3:左图:应用 VEM 拟合的模型的预计 α 值。右图:应用吉布斯抽样拟合模型的测试数据的困惑度。每行对应于 10 倍穿插验证中的一个折叠
确定具备最小间隔的最佳匹配,并绝对于其八个最有可能的单词进行比拟。
R> terms(AP$VEM, 8)\[,best_match\[1:4\]\]
这四个主题显然是对于同一主题的,并且由十分类似的单词组成。然而,主题之间的这种清晰对应关系仅存在于主题的一小部分中。图 4 中具备匹配主题的间隔图像图也表明了这一点。依据图像,咱们不会冀望最差的四个匹配主题有很多共同点。通过查看每个主题的八个最重要的单词也能够看到这一点。
6. 扩大到新的拟合办法
包主题模型曾经为 LDA 模型提供了两种不同的预计办法,为 CTM 提供了一种不同的预计办法。用户能够通过办法参数扩大办法并提供本人的拟合函数。在下文中,咱们概述了如何应用包 rjags 来拟合 LDA 模型,应用具备不同实现的 Gibbs 采样。
图 4:解决方案的主题与 40 个 VEM 主题和 40 个 Gibbs 采样主题相匹配。
R> BUDEL <-
+ "model {+ for (i in 1:length(W)) {+ z\[i\] ~ dcat(theta\[D\[i\],\]);
+ W\[i\] ~ dcat(beta\[z\[i\],\]);
+ }
以下代码实现了一个新的办法函数,以应用带有包 rjags 的 Gibbs 采样来拟合 LDA 模型。在此用于拟合模型的函数中,未确定语料库中每个单词的对数似然以及最可能的主题成员身份,因而不是返回对象的一部分。
咱们仅将新的拟合函数利用于通讯社数据的一小部分,并且仅执行 Gibbs 采样器的 20 次迭代,以限度所需的工夫。所需的工夫也与吉布斯采样器的 LDA 特定实现进行了比拟。
R> terms(lda_rjags, 4)
从这个例子中能够看出,在包主题模型中增加新的预计办法须要编写一个适合的拟合函数。