8.3.2 基于LDAvis包的主题模型可视化
虽然LDA主题模型能够通过很多工具实现,但是如何解释模型输出的结果依然是一个难点。下面介绍一个可视化工具——LDAvis包来解释LDA主题模型的输出结果。
读者可参考网址https://mirrors.tuna.tsinghua.edu.cn/CRAN/web/packages/LDAvis/README.html来学习如何使用LDAvis包。R中执行LDA算法的第三方包有很多个,其输出的主题模型结果的形式不同,因此,在使用LDAvis包时应该注意参数是否正确。
通过“A topic model for movie reviews”这个示例可以看到(示例网址:http://ldavis.Cpsievert.me/reviews/reviews.html),LDAvis包主要使用两个函数:createJSON()函数和ser Vis()函数。
createJSON()函数能够返回一个JSON对象,它可作为生成交互式网页的数据。createJSON()函数有以下几个重要参数:
其中,phi为文档-主题分布矩阵;theta为主题-词语分布矩阵;doc.length为每篇文章的长度,也就是词项的个数;vocab为词项列表;term.frequency为词项对应的词频。
ser Vis()函数有以下几个重要参数:
其中,json为createJSON()函数输出的json数据。out.dir为存储html、js、json文件的路径。open.browser是能否打开交互式浏览器的参数,若参数值为TRUE,这个函数将尝试通过server包创建一个本地文件服务器,用于结果预览;若参数值为FALSE,则不能直接预览,这种情况下可以将输出的html、js、json文件放到服务器上进行查看。
下面以第8.3.1节中得到的主题模型结果为例,对主题模型可视化进行分析。
首先加载需要的包,并准备函数需要的几个重要参数,代码如下:
然后,调用createJSON()函数和ser Vis()函数进行可视化,代码如下(结果如图8-7所示):
由图8-7可以发现,网页中出现了乱码,为了解决这个问题,需要将createJSON()函数输出的json文件的编码格式改为UTF-8格式。这里可以采用手动修改的方式,操作如下:打开json文件→单击另存为→窗口下方编码处选择UTF-8格式,如图8-8所示。
我们也可以通过以下代码进行修改:
修改后的主题模型可视化如图8-9所示。由图8-9可以发现,修改json文件编码格式后,乱码问题得到了解决。由图8-9可以看到,左边的气泡有数字,并且大小、远近不一。LDAvis包用数字和气泡大小来表示每个主题出现的概率大小。气泡之间的距离表示主题之间的相似性,气泡之间距离越近,对应主题之间越相似。
在图8-9中,当鼠标悬浮在页面左边的气泡上时,相应气泡的颜色会发生变化,页面右边会出现与该主题相关的词汇,通过对这些词语进行总结,可以归纳出相应主题的含义。
点击气泡选定某个主题后,我们可以通过调节右上角λ的值来调节主题和词语之间的相关性。λ越接近1,说明该主题下出现频率高的词与主题越相关;λ越接近0,说明该主题下更特殊的词汇与主题越相关。
图8-7 主题模型可视化一
图8-8 手动修改json文件的编码格式
图8-9 主题模型可视化二