mallet.instances It- mallet.import(documents$id, documents$text, "./R/stoplist.csv", FALSE)
然后必须创建一个训练对象,并将要生成的主题数量作为参数传递给该对象。
topic.model It-MalletLDA(num.topics=53)
主题.模型$loadDocuments(mallet.实例)>
按照 Jockers 的说法,现在可以“调整优化超参数”,即指定“老化迭代”的次数和“优化之间的迭代”的次数,其默认值分别为 200 和 50。
主题.模型$setAlphaOptimization(40,80)
乔克斯在脚注中指出:“重置这些价值观的后果超出了本章的范围” [30],并引用了瓦拉赫、米姆诺和麦卡勒姆的一篇文章。[31]为了创建本文的主题模型,采用了 Matthew Jockers 使用的参数,但并没有理解或至少能够估计由此产生的后果。看一下 Jockers 推荐的论文,很快就会发现其中讨论的考虑需要更深入的数学和统计学理解,这里仅在某些情况下尝试充分理解。
主题.模型$train(400)
该命令启动主题建模过程并执行400次。正如 Jockers 所说,模型的质量应该随着每次迭代而提高,但他自己的实验表明,经过一定次数的迭代后,结果的质量又开始下降。[32]
4.4 可视化分析
执行完最后一条命令后,应该对这样生成并存储在 R 对象中的 Thun 对应关 阿根廷电报数据 系的主题模型进行分析。针对此处要进行的实验,主要需要回答两个问题:首先,要检查机器生成的主题是否可以合理地分配主题或含义。其次,必须能够检查哪些主题在哪些文本或文本部分中得到了何种程度的体现。
为了回答第一个问题,需要一个列表来提供有关每个主题中哪些词出现频率的信息。这样的列表会生成函数,该函数将训练过的主题模型作为参数,并输出一个矩阵,其中行表示主题,列表示数据材料整个词汇表中的单词,而字段表示每个主题的单词频率。包含 53 个主题和 17,173 个已处理的不同单词(不包括停用词),因此形成了 910,169 个字段的矩阵。