主要内容

可视化LDA主题和文档标签之间的关联

此示例演示如何拟合潜在的Dirichlet分配(LDA)主题模型,并可视化LDA主题和文档标签之间的相关性。

Latent Dirichlet Allocation (LDA)模型是一种主题模型,它发现文档集合中的底层主题,并推断主题中的单词概率。拟合LDA模型不需要标记数据。但是,您可以使用并行坐标图来可视化合适的LDA主题和文档标签之间的关联。

此示例将LDA模型与Factory Reports数据集相匹配,Factory Reports数据集是详细说明不同故障事件的Factory报告的集合,并确定LDA主题和报告类别之间的相关性。

加载和提取文本数据

加载示例数据。该文件factoryReports.csv包含工厂报告,包括每个事件的文本描述和分类标签。

数据=可读(“factoryReports.csv”,文本类型=“字符串”);头(数据)
ans=8×5表类别描述紧急解决成本  _____________________________________________________________________ ____________________ ________ ____________________ _____ " 项目是偶尔陷入扫描仪卷。”“机械故障”、“中等”、“重新调整机器”、“组装器的活塞发出响亮的咔嗒咔嗒和砰砰的声音。”“机械故障”“中等”“调整机器”“启动工厂时电源被切断”“电子故障”“高”“完全更换”“16200”“组装器内电容器烧毁”“电子故障”“高”“更换元件”“352”“混频器跳闸保险丝。”“电子故障”“低”“列入观察名单”“55”施工剂中爆管正在喷洒冷却剂。"泄漏" "高" "更换部件" 371 "混合器内保险丝熔断"“电子故障”“低”“更换部件”“东西不断从传送带上掉下来。”“机械故障”“低”“重新调整机

从字段中提取文本数据描述

textData=data.Description;文本数据(1:10)
ans=10×1串“物品偶尔会卡在扫描仪的线轴上。”“组装器的活塞发出响亮的咔嗒咔嗒和砰砰的声音。”“启动核电站时,电力会被切断。”“组装器里的电容器被炸了。”“搅拌机把保险丝弄坏了。”"爆破管道中施工剂正在喷洒冷却剂""搅拌机里的保险丝烧断了"“事情继续从腰带上滑落。”“从传送带上掉下来的东西。”扫描卷轴一旦分开,很快就会开始弯曲。

从字段中提取标签类别

标签=数据。类别;

准备文本数据进行分析

创建一个函数,用于标记和预处理文本数据,以便用于分析。功能预处理文本,列于预处理函数部分,依次执行以下步骤:

  1. 使用标记化文档

  2. 用英语把单词语法化normalizeWords

  3. 使用删除标点符号删除标点符号

  4. 删除使用停止词的列表(如“and”,“of”和“the”)移除单词

  5. 删除使用2个或更少字符的单词除去短文

  6. 删除超过15个字符的单词removeLongWords

为分析准备文本数据预处理文本函数。

文档=预处理文本(textData);文档(1:5)
ans=5×1 tokenizedDocument数组的属性:6代币:物品偶尔卡住扫描仪滑阀7代币:巨大的卡嗒卡嗒声传来装配机活塞4代币:切断电源启动设备3代币:fry电容器装配机3代币:混合器跳闸保险丝

从标记化文档创建一个单词包模型。

bag=bagOfWords(文件)
包=具有属性的bagOfWords:计数:[480×338双]词汇:[1×338字符串]NumWords:338 NumDocuments:480

从文字袋模型中删除总共出现不超过两次的文字。从文字袋模型中删除任何不包含文字的文档。

bag=删除常用词(bag,2);bag=删除空文档(bag)
包=具有属性的bagOfWords:[480×158 double] Vocabulary: [1×158 string] NumWords: 158 NumDocuments: 480

符合LDA模型

使LDA模型适合7个主题。有关如何选择主题数量的示例,请参阅选择LDA模型的主题数.要抑制verbose输出,请设置冗长的选项为0。再现性,集rng“默认值”

rng(“默认值”)numTopics=7;mdl=fitlda(包,numTopics,详细=0);

如果您有一个大数据集,那么随机近似变分贝叶斯解算器通常更适合,因为它可以在更少的数据传递中拟合一个好的模型fitlda(坍塌的吉布斯抽样)可以更准确,但代价是运行时间更长。使用随机近似变分贝叶斯,设置解算器选择“savb”.有关如何比较LDA求解器的示例,请参见比较LDA解决者

使用单词云可视化主题。

图t = tiledlayout(“流”);标题(t)“LDA主题”i=1:numTopics Nextile wordcloud(mdl,i);头衔(“主题”+(一)终止

可视化主题和文档标签之间的关联

通过绘制针对每个文档标签的平均主题概率,可视化LDA主题和文档标签之间的关联。

从文档中提取文档主题混合物DocumentTopicProbabilitiesLDA模型的属性。

topicMixtures=mdl.DocumentTopicProbabilities;

对于每个标签的文档,计算平均主题概率。

(团体、groupname) = findgroups(标签);numGroups =元素个数(groupname);i=1:numGroups idx=groups==i;meanstopicprobabilities(i,:)=平均(topicmixes(idx,:);终止

对于每个话题,找出前三个词。

numTopics = mdl.NumTopics;i = 1:numTopics top = topkwords(mdl,3,i);topWords (i) =加入(顶部。词,", ");终止

使用平行坐标图绘制每个类别的平均主题概率。控件创建图形并增加图形宽度,以提高可读性位置财产。

f =图;f.Position (3) = 2 * f.Position (3);

图每个类别的平均主题概率使用parallelplot函数。不要将输入数据规范化,并将类别指定为组。将坐标标记设置为每个主题的前三个单词。

p = parallelplot (meanTopicProbabilities...GroupData = groupname,...DataNormalization =“没有”);p.Coordinatedicklabels=主题词;xlabel(“LDA的话题”)伊拉贝尔(“意思是主题概率”)头衔(“LDA主题和文档标签相关性”

平行图突出显示了LDA主题和文档标签之间的相关性。高峰值表示相应的主题和文档标签之间有很强的相关性。

预处理函数

功能预处理文本,按顺序执行以下步骤:

  1. 使用标记化文档

  2. 用英语把单词语法化normalizeWords

  3. 使用删除标点符号删除标点符号

  4. 删除使用停止词的列表(如“and”,“of”和“the”)移除单词

  5. 删除使用2个或更少字符的单词除去短文

  6. 删除超过15个字符的单词removeLongWords

作用文档=预处理文本(文本数据)%标记文本。文档=标记化文档(textData);将单词义化。documents=addPartOfSpeechDetails(documents);文档=规范化日志(文档、,“风格”“引理”);%删除标点符号。文件=标点符号(文件);%删除停止词列表。= removeStopWords文件(文档);%删除包含2个或更少字符的单词,以及包含15个或更多字符的单词%人物。documents=removeShortWords(documents,2);documents=removeLongWords(documents,15);终止

另请参阅

|||

相关话题