LDA主题模型简介

在机器学习领域,LDA是两个常用模型的简称:Linear Discriminant Analysis和LatentDirichletAllocation。本文的LDA仅指代LatentDirichletAllocation.即潜在狄利克雷分布。作为基于贝叶斯学习的话题模型,是潜在语义分析模型和概率潜在语义分析模型的扩展,在文本数据挖掘、图像处理、生物信息处理等领域被广泛使用。LDA认为一篇文章是有多个主题的,而每个主题又对应着不同的词。一篇文章的构造过程,首先是以一定的概率选择某个主题,然后再在这个主题下以一定的概率选出某一个词,这样就生成了这篇文章的第一个词。不断重复这个过程,就生成了整篇文章。当然这里假定词与词之间是没顺序的。”LDA的使用是上述文档生成的逆过程,它将根据一篇得到的文章,去寻找出这篇文章的主题,以及这些主题对应的词。

上边一大串复杂的概念解释可能有些绕,通俗的解释是通过对一篇文章中词语词义的提炼,最终凝练形成几个主要的主题,即这篇文章主要讲了哪几个方面的内容,就像我现在写的这篇文章,如果进行分析的话没可能提炼出来就是,LDA的简介,在护理中的应用,实例分析等几个主题。听着和质性研究中的主题提取有一些像。但是两者还是有着本质的区别。质性研究中主题提取过于主观,要求研究者要有较高相关领域的知识。而LDA是一种无监督的自动化分析主题模型,并且具有更大是数据分析量。例如质性研究,对30例访谈资料分析已经是很大的工作量了,但是LDA可以针对几万或几十万条的文本数据进行主题分析,这样得出的结果会更加精准。这只是LDA的优势之一,另外,LDA对主题的确定更加科学,他基于困惑度和一致性进行主题确定,而不是依靠研究者主观判断。

这么一听像是质性研究主题分析的升级版,实际上LDA的作用不止于此,包括护理研究热点的识别,也可以基于LDA实现,尽管现在citespace也是护理研究热点分析的主流软件之一,但是基于LDA的主题分析,相比于citespace的传统聚类方式,会更加精准。

LDA主题模型在护理中的应用

(一)在线健康信息需求分析

近年来,随着网络和社交媒体的普及,越来越多人热衷于在网络上在线问诊,以及在论坛中提问,包括疾病知识询问,以及患病体验的分享。那么,基于网络爬虫将这些知识寻求信息爬取下来,通过LDA进行分析,是否可以了解这一类患者的主要需求在哪些方面呢?尽管通过质性研究也可以获取,但是因为质性研究有了“观察者”这个角色的存在,使得很多时候获得的信息是被引导出来的,或是被刻意削弱的(尽管引导是不对的,但临床实际中很多人会这样做)。与质性研究中患者的被动回答不用,在线健康信息寻求平台抓取的信息是患者主动提问的,这实际上更加反映了患者的真实需求,并且这些在线数据常常达到了几万条或几百万条,这是质性研究无法比拟的。一些患者常常还会在网络上分析一些自己的患病体验,或是家人患病后自己的真实体验,通过对这些大数据做LDA,得出的结果会更加令人信服。因此,从这个方面来看,可以基于LDA挖掘在线平台中患者的健康信息需求,以更加真实的了解这类患者的需求和体验。博主曾经基于百度贴吧中“造口吧”的主题进行抓取,分析了造口患者的患病体验和健康信息需求,发现造口患者更多关注自身的渗漏,以及粪水性皮炎等并发症。当然这还是我2021年分析的了,数据不知道被我放哪里了。不提了

(二)相关人群的关注点和态度

这也是可以关注的一个点,所谓关注点,也就是一个一个的主题,这和上边的在线健康信息需求其实有一些像,所以主要还是在态度上,所谓态度,即对待某件事情的情感,可能是积极的,消极的,也可能是中立的。例如山东大学一位学者研究了公众对网约护士的态度。他的主要做法是通过抓取微博中与网约护士相关的话题以及每个话题下的前几百条评论(具体多少我忘记了),通过情感分析来判断大众对网约护士上门的情感态度。发现大众对网约护士持弱积极态度,之后采用LDA主题模型分析了大家主要关注点在人身安全,医疗事故责任认定等方面。但是该作者其实做的还不够好。因为他既然分析了态度,就应该根据态度进行分类后进行LDA主题挖掘。例如:持积极态度的人主要关注点在哪些方面,持消极态度的人关注点在哪些方面。这样做会更有意义,也更加体现态度在其中的作用。因为世界镇痛日是每年10月17日,每年这时候无痛分娩都会登陆热搜成为主流话题。博主之前也曾在当天抓取了大概1.7万条主要评论,通过情感分析确定了大家对于无痛分娩的态度,以及大家的关注点。也是去年10月份的事情了,识别主题的图就不放了,放一张总的词云图吧。我当时是做着玩的,没有深入分析,实际上,应该分析男性和女性对无痛分娩的态度有什么不同,或者他们的关注点有哪些差异。
wutongfenmian.png

(三)护理研究热点的分析

这个地方不过多介绍了,大家应该都知道基于citespace的文献计量学分析,现在都被做烂了,但是LDA主题模型的优势是主题聚类更加真实,更加可靠。具体我就不多讲了,我没做过,可以去看看北京中医药大学段红梅老师的几篇文章。

实现LDA主题模型和情感分析的主要步骤

(一)数据采集

这个好理解,既然要分析,就要获取数据,可以获取数据的平台:微信,知乎,39健康网,好大夫在线网等等,这些数据都可以抓取,工具呢?可以基于R语言或Python实现,但这两个对初学者来说有点难,大家可以利用现成的爬虫工具抓取,例如:八爪鱼。等我最近更新一期八爪鱼抓取评论的视频或博客

(二)数据清洗

主要包括空缺值的填补、噪音数据的去除,重复记录的删除,不同数据源数据的集成等。。这也好理解,你抓取的数据里边包含了很多乱七八糟的内容,看下图,里边又有表情,又有标点符号,这些都不是我们需要的,我们需要的只是文字,其他的,比如表情,还有类似于(!,’)这些都是不要的,还有用户名,都要删掉,所以这个就叫数据清洗,一条两条手动改就可以了,几十万条,当然需要软件来实现,这个不难,我后期出个文章专门教大家。
yuliao.png

(三)分词和去除停用词处理

所谓分词,很好理解,就是将一句话分成词语的最小单位,这和质性研究中还有点像呢。例如一句话“Seven是个特别喜欢钓鱼的人”,对这句话分词之后可以得到以下结果。

"Seven","是","个","特别","喜欢","钓鱼","的","人"

这样一段话分成了8个词,但是我们发现,实际上这句话里最核心的几个词包括”Seven“,”喜欢“,”钓鱼“。而其他几个词基本上都是语气词和形容词,这些词有的时候不是我们需要的,因此可以将这些词设置成停用词,从一句话中删除,仅保留核心内容。当然有的一些标点符合也是在这个地方删除的。
需要注意的是:在分词时,有的时候分词会出现一些错误,例如“这真是人类之光啊”。在这句话中“人类之光”应该算作一个词,而不是“人类”,“之”,“光”这样3个词,如何保证这样的成语或专有名词不被分词切割呢。这就要用在用户词典中纳入人类之光作为一个词。具体的后边的操作中会教给大家。

(四)文本特征提取

通过将抓取的几十万条评论进行分词后,形成了一些关键词,因此,这一步主要是统计这些关键词的特征,例如词频,也就是在这个大的主题中被提到最多的词。看我上边放的无痛分娩的词云图,可以看到“无痛”,“医生”,“麻醉师”是被提及最多的词。将这些词频通过可视化,就形成了词云图。事实上从此频来看,护理被提及的内容较少,因此我们可以思考护士,或者助产士在无痛分娩中扮演了哪些角色?如何提高护理在无痛分娩中的作用?等等。当然词频统计只是一个方面。还包括一些优化,比如词语的合并。例如卒中,脑出血,脑梗死在很多时候都可以合并为脑卒中一个词。通过对词语的合并可以使后期得到的主题更真实可靠。

(五)LDA主题模型的训练

在进行文本特征提取后,就可以基于python或R语言进行主题模型训练了,这一步主要是为了确定最佳主题模型数,其实类似于bootstrap重复抽样。LDA训练中主要关注的指标包括困惑度,当然还有其他的,但是没有困惑度用的多一些。一般在训练时会形成一条曲线,或者说开口向上的抛物线,最低点对应的主题数即为最佳主题模型数,当然有时候会发现曲线是一直上升的,这涉及到其他一些知识,我后期细讲。

(六)主题聚类及结果解读

这一步主要是根据确定的最佳主题数进行聚类,然后根据每个类别关键词特征进行类别命名,最后就是结果解读了
点击这里看这篇文章
这个是最终可视化的LDA主题模型,这是我好久之前做的,按理说应该是分3类的,但是这个当时为了测试分了好多类,找了很久才找到这个图,先用着,大家知道一下大概是什么就行了,后期我再做一个精准一些的。

LDA主题模型应用中存在的一些问题

实际上LDA主题模型在护理领域有很大的应用前景,不只是我说的这些。当然,这里边还有一些问题需要大家注意。在进行数据采集的时候,尤其是微博采集时,不要仅使用单一关键词或仅在一个话题下搜索,这会导致你的结果过于一致,最终确定主题个数时出现困惑度一直上升的现象。其次,LDA主题模型在分词过程中需要不断调整优化,才能保证最终结果准确,不是一蹴而就的。然后就是,我建议大家用这个模型挖掘在线社区的健康需求,尽量别用这个做文献热点分析,虽然有优势,但我觉得文章不好发,健康信息需求更好一些。至于LDA的其他用法,等我后期发现了再更新给大家。

小结

今天主要介绍了护理近期比较热门的LDA主题模型的一些内容,包括我的一些想法。现在着手开始做还不晚。我检索了一下,目前基于LDA主题模型的在线社区HIV患者健康信息需求挖掘还没有人做过,HIV确诊后终生服药,作为慢性病患者,又面临疾病的恐惧,对这类患者的健康需求挖掘有一定意义,可以尝试做一下。我之前爬取了一些数据,但是我不准备做,最近比较忙,有想做的可以考虑哦。今天主要讲了LDA,情感分析其实是独立于LDA的,但是常常和LDA同时出现在一篇文章里,后期直接把教程给大家,这个比较简单。巧妇难为无米之炊,获取数据是进行LDA的第一步,下一期先教大家如何用八爪鱼软件在网络上获取我们需要的数据,今天就到这里。有问题或者不了解的可以评论区留言,谢谢!