主要内容

创建简单的文本分类模型

这个例子展示了如何培养一个简单的文本分类器在使用bag-of-words词频统计模型。

您可以创建一个简单的分类模型,该模型使用单词频率计数作为预测因子。这个例子火车一个简单的分类模型来预测工厂报告的类别使用文本描述。

加载和数据中提取文本

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

文件名=“factoryReports.csv”;data = readtable(文件名,“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

转换的标签类别列表格的分类和视图类的分布数据中使用直方图。

数据。类别=分类(data.Category);图直方图(data.Category)包含(“类”)ylabel (“频率”)标题(“类分配”)

分区数据输入训练分区和伸出测试集。指定抵抗百分比为10%。

本量利= cvpartition (data.Category,“坚持”,0.1);dataTrain =数据(cvp.training:);人数(=数据(cvp.test:);

从表中提取文本数据和标签。

textDataTrain = dataTrain.Description;textDataTest = dataTest.Description;YTrain = dataTrain.Category;欧美= dataTest.Category;

准备文本数据进行分析

创建一个函数符和预处理文本数据,因此它可以用于分析。这个函数preprocessText在订单执行以下步骤:

  1. 在标记文本使用tokenizedDocument

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

  3. Lemmatize使用的话normalizeWords

  4. 删除标点符号使用erasePunctuation

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

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

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

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

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

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

删除单词bag-of-words模型,总共不会超过两次。删除任何包含没有单词的文档在bag-of-words模型中,并删除相应的条目标签。

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

监督分类器训练

火车监督分类模型使用这个词的频率计数bag-of-words模型和标签。

火车使用多级线性分类模型fitcecoc。指定计数财产bag-of-words模型预测,和事件类型标签的响应。指定学习者是线性的。这些学习者支持稀疏数据输入。万博1manbetx

XTrain = bag.Counts;mdl = fitcecoc (XTrain YTrain,“学习者”,“线性”)
mdl = CompactClassificationECOC ResponseName:“Y”类名:[电子泄漏机械故障软件失败]ScoreTransform:“没有一个”BinaryLearners:{6×1细胞}CodingMatrix: 4×6双属性,方法

为了更好的配合,你可以指定不同的参数的线性学习者。线性分类学习者模板上更多的信息,请参阅templateLinear

测试分类器

预测的标签使用训练模型和测试数据计算分类精度。分类精度的比例模型预测正确的标签。

预处理测试数据作为训练数据使用相同的预处理步骤。编码生成的测试文档的矩阵根据bag-of-words词频统计模型。

documentsTest = preprocessText (textDataTest);XTest =编码(袋、documentsTest);

预测的标签使用训练模型和测试数据计算分类精度。

XTest YPred =预测(mdl);acc = (YPred = =次)/元素个数之和(欧美)
acc = 0.8542

预测使用新数据

新工厂报告的事件类型进行分类。创建一个字符串数组,其中包含新工厂的报告。

str = [“冷却池下面分选机。”“在启动分选机把保险丝烧断了。”“有一些非常响亮的哒哒声来自汇编程序。”];documentsNew = preprocessText (str);XNew =编码(袋、documentsNew);XNew labelsNew =预测(mdl)
labelsNew =3×1分类泄漏电子机械失败

例子预处理功能

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

  1. 在标记文本使用tokenizedDocument

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

  3. Lemmatize使用的话normalizeWords

  4. 删除标点符号使用erasePunctuation

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

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

函数文件= preprocessText (textData)%在标记文本。文件= tokenizedDocument (textData);%将停止单词然后lemmatize单词的列表。改善%词元化,首先使用addPartOfSpeechDetails。= addPartOfSpeechDetails文件(文档);= removeStopWords文件(文档);文档= normalizeWords(文档,“风格”,“引理”);%擦掉标点符号。= erasePunctuation文件(文档);% 2或更少的字符删除单词,单词和15个或更多%字符。文件= removeShortWords(文件,2);= removeLongWords文档(文档、15);结束

另请参阅

|||||||||

相关的话题