主要内容

可视化LDA话题之间的相关性和文档标签

这个例子展示了如何适应一个潜在狄利克雷分配(LDA)主题模型和可视化LDA话题之间的相关性和文档标签。

潜在狄利克雷分配(LDA)模型是一种主题模型,发现潜在的主题集合中的文档和推断概率这个词的主题。拟合LDA模型不需要带安全标签的数据。然而,您可以可视化安装LDA话题之间的相关性和文档标签使用平行坐标图。

这个例子符合工厂的LDA模型报告数据集是一组工厂报告详细说明不同的失败事件和识别之间的相关性LDA报告主题和类别。

加载和数据中提取文本

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

数据= readtable (“factoryReports.csv”TextType =“字符串”);头(数据)
ans =8×5表类别描述紧急解决成本_____________________________________________________________________ ____________________ ________ ____________________ _____”项目是偶尔陷入扫描仪卷。”"Mechanical Failure" "Medium" "Readjust Machine" 45 "Loud rattling and banging sounds are coming from assembler pistons." "Mechanical Failure" "Medium" "Readjust Machine" 35 "There are cuts to the power when starting the plant." "Electronic Failure" "High" "Full Replacement" 16200 "Fried capacitors in the assembler." "Electronic Failure" "High" "Replace Components" 352 "Mixer tripped the fuses." "Electronic Failure" "Low" "Add to Watch List" 55 "Burst pipe in the constructing agent is spraying coolant." "Leak" "High" "Replace Components" 371 "A fuse is blown in the mixer." "Electronic Failure" "Low" "Replace Components" 441 "Things continue to tumble off of the belt." "Mechanical Failure" "Low" "Readjust Machine" 38

提取文本的数据字段描述

textData = data.Description;textData (1:10)
ans =10×1的字符串“项目是偶尔陷入扫描仪卷。”"Loud rattling and banging sounds are coming from assembler pistons." "There are cuts to the power when starting the plant." "Fried capacitors in the assembler." "Mixer tripped the fuses." "Burst pipe in the constructing agent is spraying coolant." "A fuse is blown in the mixer." "Things continue to tumble off of the belt." "Falling items from the conveyor belt." "The scanner reel is split, it will soon begin to curve."

从现场提取的标签类别

标签= data.Category;

准备文本数据进行分析

创建一个函数符和预处理文本数据,因此它可以用于分析。这个函数preprocessText中列出,预处理功能部分的例子,执行下面的步骤为:

  1. 在标记文本使用tokenizedDocument

  2. Lemmatize使用的话normalizeWords

  3. 删除标点符号使用erasePunctuation

  4. 删除列表的停止词(如“和”,“的”,和“的”)removeStopWords

  5. 删除与2或更少的字符使用单词removeShortWords

  6. 删除与15个或更多字符使用单词removeLongWords

准备使用的文本数据进行分析preprocessText函数。

文件= preprocessText (textData);文档(1:5)
ans =5×1 tokenizedDocument数组属性:6令牌:项目偶尔卡住扫描仪线轴7令牌:大声作响爆炸声音来汇编活塞4令牌:减少力量开始工厂3令牌:炒电容器汇编3令牌:搅拌机旅行保险丝

创建一个bag-of-words模型的标记化的文档。

袋= bagOfWords(文档)
袋=bagOfWords属性:数量(480×338双):词汇:[1×338弦]NumWords: 338 NumDocuments: 480

把单词从bag-of-words模型,总共不会超过两次。删除任何包含没有单词的文档从bag-of-words模型。

袋= removeInfrequentWords(袋,2);袋= removeEmptyDocuments(袋)
袋=bagOfWords属性:数量(480×158双):词汇:[1×158弦]NumWords: 158 NumDocuments: 480

符合LDA模型

适合7 LDA模型与主题。对于一个例子,演示如何选择主题的数量,看看为LDA模型选择的主题。抑制详细输出,设置详细的选项为0。再现性,集rng“默认”

rng (“默认”)numTopics = 7;mdl = fitlda(袋、numTopics、Verbose = 0);

如果你有一个大的数据集,那么随机近似变分贝叶斯解算器通常是更适合,因为它可以减少通过一个好的模型的数据。默认的解算器fitlda(吉布斯抽样倒塌)可以更准确的在长时间运行的成本。使用随机近似变分贝叶斯设置解算器选项“savb”。为一个例子,演示如何解决LDA进行比较,看看比较LDA解决者

使用词云可视化的话题。

图t = tiledlayout (“流”);标题(t)“LDA的话题”)i = 1: numTopics nexttile wordcloud (mdl,我);标题(“主题”+ i)结束

可视化话题之间的相关性和文档标签

可视化LDA话题之间的相关性和文档标签通过绘制意味着主题概率对每个文档标签。

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

topicMixtures = mdl.DocumentTopicProbabilities;

对于每个标签的文件,计算意味着主题概率。

(团体、groupname) = findgroups(标签);numGroups =元素个数(groupname);i = 1: numGroups idx =组= =我;meanTopicProbabilities(我)=意味着(topicMixtures (idx:));结束

为每个主题,找到三个字。

numTopics = mdl.NumTopics;i = 1: numTopics顶级= topkwords (mdl 3 i);topWords (i) =加入(top.Word,”、“);结束

情节包括意味着主题概率使用平行坐标图。为了可读性,创建一个图,增加图宽度使用位置财产。

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

情节包括意味着主题概率使用parallelplot函数。不正常的输入数据和指定的类别作为团体。坐标标记标签设置为每个主题的前三个词。

p = parallelplot (meanTopicProbabilitiesGroupData = groupname,DataNormalization =“没有”);p。CoordinateTickLabels = topWords;包含(“LDA的话题”)ylabel (“意思是主题概率”)标题(“LDA主题相关性和文档标签”)

并行情节凸显了LDA话题之间的相关性和文档标签。高峰表明很强的相关性之间相应的主题和文档标签。

预处理功能

这个函数preprocessText在订单执行以下步骤:

  1. 在标记文本使用tokenizedDocument

  2. Lemmatize使用的话normalizeWords

  3. 删除标点符号使用erasePunctuation

  4. 删除列表的停止词(如“和”,“的”,和“的”)removeStopWords

  5. 删除与2或更少的字符使用单词removeShortWords

  6. 删除与15个或更多字符使用单词removeLongWords

函数文件= preprocessText (textData)%在标记文本。文件= tokenizedDocument (textData);% Lemmatize的话。= addPartOfSpeechDetails文件(文档);文档= normalizeWords(文档,“风格”,“引理”);%擦掉标点符号。= erasePunctuation文件(文档);%去除停止词的列表。= removeStopWords文件(文档);% 2或更少的字符删除单词,单词和15或更高%字符。文件= removeShortWords(文件,2);= removeLongWords文档(文档、15);结束

另请参阅

|||

相关的话题