这个例子说明了如何利用潜在狄利克雷分配(LDA)主题模型来分析文本数据。
潜在狄利克雷分配(LDA)模型是一个发现的文件和推断的主题字的概率集合中潜在的主题主题模型。
加载的示例数据。文件factoryReports.csv
包含工厂报告,包括文字说明和明确的标签为每个事件。
数据= readtable(“factoryReports.csv”,'TextType','串');头(数据)
ANS =8×5表说明类别紧急分辨率成本_____________________________________________________________________ ____________________ ____________________ ________ _____“的相关文件偶尔会卡在扫描器卷轴。”“机械故障”,“中等”,“重新调整机” 45“大声剑拔弩张和敲打的声音从汇编活塞都来了。”“机械故障”,“中等”,“重新调整机” 35“有削减电力启动设备时。”“电子故障”“高”“完全替代” 16200“在汇编炒电容器。”“电子故障”“高”“替换组件” 352“混音器跳闸保险丝。”“电子故障”“低”“添加到收藏” 55“在构建代理爆管被喷洒冷却液。”“泄漏”“高”“替换组件” 371“A熔丝在混合器吹”。“电子故障”“低”“替换组件” 441“事情继续翻滚带了。”“机械故障”,“低”,“重新调整机” 38
从现场提取的文本数据描述
。
的TextData = data.Description;的TextData(1:10)
ANS =10×1串“项目是偶尔被陷在扫描仪卷轴。”“大声剑拔弩张和敲打的声音从汇编活塞的到来。”“有削减电力启动设备时。”“在汇编炒电容器。”“混色器跳闸保险丝。”“在构建剂突发管喷射冷却剂”。“A熔丝在混合器吹”。“事情继续翻滚带了。”“从输送带落下项目”。“扫描仪卷轴是分裂,它很快就会开始曲线”。
其创建和标记化预处理的文本数据,因此它可以被用于分析的功能。功能preprocessText
在该示例的末尾列出的,进行下述顺序的步骤:
使用令牌化文本tokenizedDocument
。
Lemmatize使用的话normalizeWords
。
擦除使用标点符号erasePunctuation
。
除去的停止词列表(例如,“和”,“中”,和“该”),使用removeStopWords
。
使用2个或更少的字符删除话removeShortWords
。
使用15个或更多字符的删除单词removeLongWords
。
使用预处理功能preprocessText
准备文本数据。
文档= preprocessText(的TextData);文件(1:5)
ANS = 5×1 tokenizedDocument:6个令牌:项偶尔会被卡住扫描器滑阀7级的令牌:响的格格声砰声来汇编活塞4级的令牌:切功率起始植物3个标记:鱼苗电容器汇编3个标记:混合器跳闸保险丝
创建一个从标记化文档的袋的词模型。
包= bagOfWords(文档)
袋= bagOfWords具有属性:计算:[480×351双]词汇:[1×351串] NUMWORDS:351个NumDocuments:480
从有没有出现在总的两倍多袋的词模型中取出的话。除去含从袋的词模型中没有任何文字文件。
袋= removeInfrequentWords(袋,2);袋= removeEmptyDocuments(袋)
袋= bagOfWords具有属性:计算:[480×162双]词汇:[1×162串] NUMWORDS:162个NumDocuments:480
配合7个主题的LDA模型。有关说明如何选择的主题数示例,请参见选择主题的LDA型号数。为了抑制详细的输出,集“放牧”
为0。
numTopics = 7;MDL = fitlda(袋,numTopics,“放牧”,0);
如果你有一个大的数据集,则上述随机近似变分贝叶斯解算器通常更适合,因为它可以适合在数据较少遍了良好的典范。默认解算器fitlda
(折叠Gibbs抽样)可以是在拍摄更长的时间来运行的成本更准确。使用随机近似变贝叶斯,设置“求解”
选项'SAVB'
。有关说明如何比较LDA求解器示例,请参见比较LDA求解器。
您可以使用云字,每个主题中的最高概率来查看的话。使用可视化云字头四个主题。
数字;对于topicIdx = 1:4副区(2,2,topicIdx)wordcloud(MDL,topicIdx);标题(“话题 ”+ topicIdx)结束
用转变
在文档转换为话题的概率向量。
新建文档= tokenizedDocument(“冷却液池下方分拣机。”);topicMixture =变换(MDL,新建文档);图巴(topicMixture)xlabel(“主题索引”)ylabel(“可能性”)标题(“文档主题概率”)
使用堆积条形图显示多重话题混合物。可视化的前5个输入文档的话题混合物。
图topicMixtures =变换(MDL,文档(1:5));BARH(topicMixtures(1:5,:),“叠加”)XLIM([0 1])标题(“主题混合”)xlabel(“主题概率”)ylabel(“文件”)图例(“话题 ”+串(1:numTopics),'位置','northeastoutside')
功能preprocessText
,进行下述顺序的步骤:
使用令牌化文本tokenizedDocument
。
Lemmatize使用的话normalizeWords
。
擦除使用标点符号erasePunctuation
。
除去的停止词列表(例如,“和”,“中”,和“该”),使用removeStopWords
。
使用2个或更少的字符删除话removeShortWords
。
使用15个或更多字符的删除单词removeLongWords
。
功能文档= preprocessText(的TextData)%记号化的文字。文档= tokenizedDocument(的TextData);%Lemmatize的话。文档= addPartOfSpeechDetails(文件);文档= normalizeWords(文档,'样式','引理');%擦除标点符号。文档= erasePunctuation(文件);%删除停用词列表。文档= removeStopWords(文件);%与2个或更少的字符删除词语,并用15或更大的话%字符。文档= removeShortWords(文件,2);文档= removeLongWords(文件,15);结束
addPartOfSpeechDetails
|bagOfWords
|fitlda
|ldaModel
|removeEmptyDocuments
|removeInfrequentWords
|removeStopWords
|tokenizedDocument
|转变
|wordcloud