MEGAN R. BRETT,Topic Modeling: A Basic Introduction,原文见:https://journalofdigitalhumanities.org/2-1/topic-modeling-a-basic-introduction-by-megan-r-brett/梅根·R·布雷特(Megan R. Brett),乔治梅森大学历史与艺术史系博士。在其博士论文中,布雷特以弗吉尼亚州的莫里家族和利物浦家族为案例,探讨了革命后时期美国家庭战略与民族身份形成的交集。布雷特的学术研究兴趣涵盖了十八世纪英国大西洋沿岸的漫长历史、物质文化以及家庭网络。本文的目的是帮助解释主题建模的一些基本概念,介绍一些主题建模工具,并指出一些关于主题建模的其他文章。预期的读者群体是历史学家,但希望它对广大读者也能有所帮助。什么是主题建模?主题建模是一种文本挖掘形式,用于识别语料库中的模式。您将语料库输入一个工具,该工具会将语料库中的词汇分组为“主题”。米里亚姆·波兹纳(Miriam Posner)将主题建模描述为“一种在大量文本中发现和追踪词汇群(简称为‘主题’)的方法(a method for finding and tracing clusters of words (called “topics” in shorthand) in large bodies of texts)”。那么,什么是主题呢?在一次关于主题建模的会议中,有人在Twitter上给出了一个定义,将主题描述为“重复出现的共现词汇模式(a recurring pattern of co-occurring words)”。主题建模工具会在语料库中寻找这些词汇群,并通过相似性的过程(稍后将详细介绍)将它们归类在一起。在一个优秀的主题模型中,主题内的词汇是有意义的,例如“海军、船只、船长”和“烟草、农场、作物”。它是如何工作的?想象一下,你手拿一套荧光笔阅读一篇文章。当你读到文章中某个主题的关键词时,就用不同颜色的荧光笔进行标记。阅读完毕后,你可以按照你分配的颜色将这些词分组抄写下来。这样,每组词就构成了一个主题,每种颜色则代表不同的主题。需要说明的是,这种描述是受到大卫·布莱(David Blei)在其文章中的一张插图的启发,这是目前我所见过的对主题概念最好的视觉阐释(1)。实际上,主题建模的过程是由数学决定的。许多关于主题建模的文章都会包含一些方程式来解释数学原理,但我本人无法理解这些方程式。在2012年11月,由马里兰人文技术研究所和国家人文基金会举办的主题建模会议上,大卫·米姆诺(David Mimno)给出了至少一个主题建模程序如何将单词分配给主题的最好的非方程式解释。正如他在会议中解释的(大约从9分钟开始),计算机会将文档中的主题出现频率与其它文档中单词的分配情况进行比较,以寻找最佳匹配(你可以在他的网站上找到米姆诺的幻灯片)。米姆诺所解释的模型是潜在狄利克雷分配(LDA),这似乎是在人文学科中最广泛使用的模型。LDA有其优势和局限性,可能并不适用于所有项目。但它是MALLET的基础,MALLET是一个开源且相对易于使用的主题建模工具。想要了解更多关于主题建模工作原理及其应用方法的详细信息,请查看MITH/NEH会议上其他演讲者的视频。泰德·安德伍德(Ted Underwood)在他的一篇名为《主题建模:简单到刚刚好》(Topic Modeling Made Just Simple Enough)的文章中解释了这个过程是如何工作的。斯科特·B·温加特(Scott B. Weingart)撰写了一篇关于当前主题建模学术研究的优秀概述,其中包含了从主题建模的寓言式解释到深入探讨技术层面的文章的链接。许多更复杂的文章和帖子都包含了复杂的方程式,但实际上,即使不知道如何解开这些方程式,也是可以理解主题建模的基础知识的。主题建模需要什么?1.语料库,最好是大型语料库如果你只想对一个较短的文档进行主题建模,或许使用一套荧光笔或一个优秀的PDF注释工具会更合适。主题建模适用于大规模的文本集合。Paper Machines(一种允许你对Zotero图书馆进行主题建模的工具)的开发者建议,你想要建模的图书馆或收藏中至少应有1000个项目。“多大”或“多小”的问题最终是主观的,但我认为你的语料库中至少应该有数百份文档,如果不是至少1000份的话。请记住,你对工具中的“文档”有定义权。如果你有一部特别长的作品,你可以将其分割成几部分,并把每部分视为一个文档。对于一些工具,你需要在进行主题建模之前准备语料库。本质上,你需要做的是将文本进行分词,通过去除标点符号和消除字母大小写,将人类可读的句子转换成单词序列。你也可以设置让它忽略你定义的“停用词”,这些通常包括像a、the、and等词。你(希望)最终得到的是一个没有大小写、标点符号或数字的文档,以免干扰算法。有多种方法可以清理你的文本以用于主题建模(和文本挖掘)。例如,你可以使用Python和正则表达式、命令行(终端)和R语言。如果你想尝试主题建模,但还没有自己的语料库,可以寻找大型数据源。比如,你可以从古腾堡计划(Project Gutenberg)下载查尔斯·狄更斯(Charles Dickens)的全部作品,这些作品以文本文件的形式提供,古腾堡计划提供大量公共领域的作品。JSTOR Data for Research(需要注册)允许你将搜索结果下载为csv文件,这适用于MALLET和其他主题建模及文本挖掘过程。2.熟悉语料库如果您计划利用主题建模来深入了解一个大型语料库,那么可能会觉得先了解语料库内容的要求有些违反直觉。然而,至少对语料库应包含的内容有一个概念是非常重要的。主题建模绝不是一门精确的科学。要判断结果是否有用或者是否严重偏离预期,唯一的方法就是对应该看到的内容有一个大致的了解。大多数人可能会在“烟草、农场、农作物、海军”这样的主题中发现异常,但更复杂主题的异常可能就不那么明显了。3.进行主题建模的工具无论你打算如何进行主题建模,都需要决定使用什么工具,并掌握使用它的方法。许多人文学者使用MALLET,并由此扩展到LDA。MALLET特别适合那些习惯于在命令行中工作的人,它会自动为你处理文本的分词和停用词。Programming Historian提供了一个教程,引导你了解如何使用MALLET的基础知识。斯坦福自然语言处理小组创建了一个可视化界面,用于操作MALLET,即斯坦福主题建模工具箱(Stanford Topic Modeling Toolbox)。如果你选择使用TMT,那么应该阅读米里亚姆·波兹纳(Miriam Posner)的博客文章,了解如何从主题建模工具中解读结果的基本策略。如果你安装了WordPress并且熟悉Python,可以查看彼得·奥尔根西亚克(Peter Organisciak)关于如何处理WordPress导出数据以供MALLET使用的文章。重要的是要意识到你需要对这些工具进行训练。主题建模工具只会返回你指定数量的主题;你指定50、5或500个主题是有区别的。如果你把主题建模想象成一个布满开关和旋钮的面板,那么就需要通过调整这些开关和旋钮来训练它们,而且这通常需要通过试错来进行,直到结果变得有用。如果你使用Zotero,可以使用Paper Machines来对特别大的文档集合进行主题建模。Paper Machines是一个开源项目,由Jo Guldi和Chris Johnson-Roberson合作开发,得到了Google Summer of Code、William F. Milton Fund和哈佛metaLAB @ Harvard的支持。你可以使用Paper Machines进行出色的可视化操作,但进行主题建模至少需要1000个文档。幸运的是,你可以使用JSTOR Data for Research的数据来扩充你的Zotero图书馆。4.如何理解你的结果主题建模的输出并不完全适合人类阅读。解程序传达的信息的一种方式是通过可视化,但务必确保你懂得如何解读这些可视化信息。主题建模工具并非完美无缺,如果算法存在问题,它们可能会产生一些非常奇怪的结果。本·施密特(Ben Schmidt)正在使用k-means聚类方法对捕鲸航行进行分类。他将自己的数据输入LDA(潜在狄利克雷分配)中,以展示模型可能产生的最终毫无意义的结果。他的帖子解释了臆想模型的危险,即当两个集群意外地结合在一起时(比如将“猫、鱼、老鼠”与“枪、钓竿、打猎”混为一谈)。主题建模与历史主题建模不一定直接作为证据,但它是一个极好的发现工具。卡梅隆·布莱文斯(Cameron Blevins)撰写了一系列文章,介绍他如何对玛莎·巴拉德(Martha Ballard)的日记进行文本挖掘和主题建模。他将自己的发现与劳雷尔·撒切尔·乌尔里希(Laurel Thatcher Ulrich)手工完成的研究进行了比较,两者的结果大致相符。布莱文斯的工作对于理解主题建模的潜力和局限性尤为宝贵,因为许多历史学家已经通过阅读乌尔里希的著作《助产士的故事》(A Midwife's Tale)(2)而对原始材料有所了解。布莱文斯和乌尔里希都必须对日记的内容及其历史背景有所熟悉,才能解释他们的研究成果。主题建模的结果有助于揭示文本中已经存在的证据。报纸已被证明是主题建模的热门对象,因为它提供了一种从日常来源追踪随时间变化的方法。计算机科学家大卫·J·纽曼(David J. Newman)与历史学家莎伦·布洛克(Sharon Block)合作,共同对《宾夕法尼亚公报》进行了主题建模。(3)他们的文章中的表4列出了最有可能出现在某个主题中的词汇以及他们为这些主题分配的标签;有些主题一目了然,但其他一些则表明,要理解结果,就必须了解语料库的上下文。另一个历史报纸主题建模的例子是弗吉尼亚州里士满大学(University of Richmond)的“挖掘调度”(Mining the Dispatch)项目。该项目的目标是探索内战期间里士满的社会和政治生活。该网站允许你与主题模型进行互动,并提供了一些解释。浏览这个网站可能会帮助你理解如何在主题建模工具中调整设置以改变输出。主题建模复杂而可能混乱,但非常有用,甚至有趣。理解其工作原理的最好方法是亲自尝试。不要害怕失败或得到不理想的结果,因为这些将帮助你找到能够带来良好结果的设置。输入一些数据,看看会发生什么。[1]Blei, D. 2012. “Probabilistic Topic Models.” Communications of the ACM 55 (4): 77–84. doi: 10.1145/2133806.2133826 Available at http://www.cs.princeton.edu/~blei/papers/Blei2012.pdf.↩[2]Laurel Thatcher Ulrich, A Midwife’s Tale (New York: Alfred A. Knopf, 1990).↩[3]David J. Newman and Sharon Block, “Probabilistic Topic Decomposition of an Eighteenth-Century American Newspaper” Journal of the American Society for Information Science and Technology, 57(6):753-767, 2006. Available at http://www.ics.uci.edu/~newman/pubs/JASIST_Newman.pdf↩