主要内容

使用主题模型分析文本数据

此示例显示如何使用潜在Dirichlet分配(LDA)主题模型分析文本数据。

Latent Dirichlet Allocation (LDA)模型是一种主题模型,它发现文档集合中的底层主题,并推断主题中的单词概率。

加载和提取文本数据

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

数据= readtable (“factoryReports.csv”'texttype''细绳');头(数据)
ans =8×5表描述类别紧急解析成本__________________________________________________________________________________________“物品偶尔地陷入扫描仪线轴上。”“机械故障”“中等”“Readjust机器”45“响亮的嘎嘎声和敲打声音来自瓶子活塞。”“机械故障”“中等”“Readjust机器”35“在开始工厂时会导致电力。”“电子故障”“高”“”完全更换“16200”油炸电容器在装配器中。““电子故障”“高”“替换组件”352“搅拌机跳过保险丝。”“电子故障”“低”“添加到观看列表”55“突发管在构造代理中喷洒冷却剂。”“泄漏”“高”“替换组件”371“在混合器中吹入保险丝。”“电子失败”“低”“替换组件”441“的东西继续滚动皮带。”“机械故障”“低”“ReadJust Machine”38

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

textData = data.Description;textData (1:10)
ans =.10×1的字符串“物品偶尔会陷入扫描仪线轴上。”“响亮的嘎嘎声和敲打声来自装配者活塞。”“在开始植物时,有能力削减到电力。”“汇编器中的油炸电容器。”“搅拌机绊倒了保险丝。”“构造剂中的突发管是喷涂冷却剂。”“融合在搅拌机中的熔丝。”“事情继续摔倒腰带。”“从传送带的下降物品。”“扫描仪卷轴是拆分的,它很快就开始曲线。”

准备分析的文本数据

创建一个函数,用于标记和预处理文本数据,以便用于分析。这个函数preprocessText在示例的末尾列出,按顺序执行以下步骤:

  1. 使用标记文本tokenizedDocument

  2. 使使用的词义化正常化字

  3. 删除标点符号使用erasePunctuation

  4. 删除使用的停止单词列表(例如“和”,“和”和“该”)的列表removeStopWords

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

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

使用预处理功能preprocessText准备文本数据。

文件= preprocessText (textData);文档(1:5)
ANS = 5×1令牌Document:6个代币:物品偶尔抓住扫描仪SPOOL 7令牌:响亮的拨浪鼓轰隆声了瓶装活塞4令牌:切割电源启动工厂3令牌:FRY电容器组件3代币:搅拌机跳闸保险丝

从标记化的文档创建单词袋模型。

BAG = BAGOFWORDS(文件)
BAG =具有属性的BagofWords:计数:[480×351双]词汇:[1×351字符串] num字:351 numfocuments:480

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

袋= removeInfrequentWords(袋,2);袋= removeEmptyDocuments(袋)
bag = bagOfWords with properties: Counts: [480×162 double

适合LDA模型

拟合7个主题的LDA模型。有关如何选择主题数量的示例,请参见选择LDA模型的主题数。要抑制详细输出,请设置“详细”为0。

numtopics = 7;mdl = fitlda(袋子,numtopics,“详细”, 0);

如果你有一个大的数据集,那么随机近似变分贝叶斯求解器通常是更好的选择,因为它可以在更少的数据中适合一个好的模型。的默认解算器菲达(倒塌的Gibbs采样)可以以更长时间运行的成本更准确。要使用随机近似变分贝叶,请设置“规划求解”选项“savb”。出于展示如何比较LDA求解器的示例,请参阅比较LDA求解器

使用词云可视化主题

您可以使用单词云来查看每个主题中概率最高的单词。使用词云将前四个主题形象化。

图;为了topicIdx = 1:4 subplot(2,2,topicIdx) wordcloud(mdl,topicIdx);标题(“主题”+ topicIdx)结尾

查看文档主题的混音

使用变换将文档转换为主题概率向量。

newdocument = tokenizeddocument(“冷却剂在分拣机下面汇集。”);newDocument topicMixture =变换(mdl);图酒吧(topicMixture)包含(“主题指数”) ylabel (“概率”)标题(“文档主题概率”

使用堆叠条形图可视化多个主题混合物。可视化前5个输入文档的主题混合。

图主题=变换(MDL,文档(1:5));Barh(主题:1:5,:),'堆积') xlim([0 1]) title(“主题混合”)包含(“主题概率”) ylabel (“文档”) 传奇(“主题”+字符串(1:numTopics),“位置”“东北朝”

预处理功能

这个函数preprocessText,按顺序执行以下步骤:

  1. 使用标记文本tokenizedDocument

  2. 使使用的词义化正常化字

  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);结尾

也可以看看

|||||||||

相关的话题