主要内容

准备文本数据进行分析

这个例子展示了如何创建一个函数,清洗和预处理文本数据进行分析。

文本数据可以大噪音,可以包含很多负面影响的统计分析。例如,文本数据可以包含以下:

  • 变化情况下,例如“新”和“新”

  • 词的变化形式,例如“走”和“行走”

  • 的话,添加噪声,例如停止词如“的”、“的”

  • 标点符号和特殊字符

  • HTML和XML标记

这些词云说明词频率分析应用于原始文本数据从工厂报告,和一个预处理相同版本的文本数据。

加载和数据中提取文本

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

文件名=“factoryReports.csv”;data = readtable(文件名,“TextType”,“字符串”);

提取文本的数据字段描述和标签的数据字段类别

textData = data.Description;标签= data.Category;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."

创建标记化的文档

创建一个数组的标记化的文档。

cleanedDocuments = tokenizedDocument (textData);cleanedDocuments (1:10)
ans = 10×1 tokenizedDocument: 10令牌:项目是偶尔陷于扫描器线轴。11令牌:大声作响,声音是来自汇编活塞。11令牌:有削减权力时开始。6代币:油炸电容器的汇编程序。5令牌:搅拌机绊倒保险丝。构建代理10令牌:爆管是喷洒冷却剂。8令牌:保险丝吹混合器。9令牌:事情继续下跌的腰带。7代币:物品从传送带上。13标记:扫描仪卷是分裂,它很快就会开始曲线。

提高词元化,使用词性细节添加到文档addPartOfSpeechDetails。使用addPartOfSpeech函数和lemmatizing之前删除停用词。

cleanedDocuments = addPartOfSpeechDetails (cleanedDocuments);

“一个”这样的词,“和”,“”,“”(即停止词)可以添加噪声数据。删除停止词使用的列表removeStopWords函数。使用removeStopWords函数使用前normalizeWords函数。

cleanedDocuments = removeStopWords (cleanedDocuments);cleanedDocuments (1:10)
ans = 10×1 tokenizedDocument: 7令牌:项目偶尔陷入扫描仪线轴。8令牌:大声作响敲声音汇编活塞。5令牌:开始削减电力厂。4令牌:油炸电容器汇编。4令牌:搅拌机绊了一下保险丝。7代币:破裂管道建设代理喷洒冷却剂。4令牌:保险丝吹混合器。6代币:东西带继续下跌。5令牌:物品传送带。8令牌:扫描仪卷分裂,很快开始曲线。

Lemmatize使用的话normalizeWords

cleanedDocuments = normalizeWords (cleanedDocuments,“风格”,“引理”);cleanedDocuments (1:10)
ans = 10×1 tokenizedDocument: 7令牌:项目偶尔卡住扫描仪线轴。8令牌:大声喋喋不休的爆炸声音来汇编活塞。5令牌:减少力量开始工厂。4令牌:炒电容器汇编。4令牌:搅拌机旅行保险丝。7代币:破裂管道建设代理喷雾冷却剂。搅拌机4令牌:保险丝的打击。6代币:东西带继续下跌。5令牌:秋季项目传送带。8令牌:扫描仪卷分裂,很快开始曲线。

擦除的标点符号文件。

cleanedDocuments = erasePunctuation (cleanedDocuments);cleanedDocuments (1:10)
ans = 10×1 tokenizedDocument: 6令牌:项目偶尔卡住扫描仪线轴7令牌:大声喋喋不休的爆炸声音来汇编活塞4令牌:减少力量开始工厂3令牌:炒电容器汇编3令牌:搅拌机旅行保险丝6令牌:破裂管道建设剂喷雾冷却剂3令牌:保险丝打击搅拌机5令牌:事情继续跌落带4令牌:传送带6项令牌:扫描仪卷筒很快开始分裂曲线

与2或更少的字符删除单词,单词与15或更大的角色。

cleanedDocuments = removeShortWords (cleanedDocuments 2);cleanedDocuments = removeLongWords (cleanedDocuments 15);cleanedDocuments (1:10)
ans = 10×1 tokenizedDocument: 6令牌:项目偶尔卡住扫描仪线轴7令牌:大声喋喋不休的爆炸声音来汇编活塞4令牌:减少力量开始工厂3令牌:炒电容器汇编3令牌:搅拌机旅行保险丝6令牌:破裂管道建设剂喷雾冷却剂3令牌:保险丝打击搅拌机5令牌:事情继续跌落带4令牌:传送带6项令牌:扫描仪卷筒很快开始分裂曲线

创建Bag-of-Words模型

创建一个bag-of-words模型。

cleanedBag = bagOfWords (cleanedDocuments)
cleanedBag = bagOfWords属性:数量:(480×352双)词汇:[1×352弦]NumWords: 352 NumDocuments: 480

删除单词,不会出现超过两次bag-of-words模型。

cleanedBag = removeInfrequentWords (cleanedBag, 2)
cleanedBag = bagOfWords属性:数量:(480×163双)词汇:[1×163弦]NumWords: 163 NumDocuments: 480

等预处理步骤removeInfrequentWords叶空文档bag-of-words模型。确保没有空文档保留在bag-of-words模型预处理后,使用removeEmptyDocuments作为最后一步。

删除空的文件从bag-of-words模型和相应的标签标签

[cleanedBag, idx] = removeEmptyDocuments (cleanedBag);标签(idx) = [];cleanedBag
cleanedBag = bagOfWords属性:数量:(480×163双)词汇:[1×163弦]NumWords: 163 NumDocuments: 480

创建一个预处理函数

它可以用于创建一个函数执行预处理,这样你就可以准备以同样的方式不同的文本数据的集合。例如,您可以使用一个函数,您可以使用相同的步骤进行预处理新数据作为训练数据。

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

  1. 在标记文本使用tokenizedDocument

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

  3. Lemmatize使用的话normalizeWords

  4. 删除标点符号使用erasePunctuation

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

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

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

newText =“分类机是制造大量的噪音。”;newDocuments = preprocessText (newText)
newDocuments = tokenizedDocument: 6令牌:分拣机制造很多噪音

与原始数据

预处理的数据与原始数据进行比较。

rawDocuments = tokenizedDocument (textData);rawBag = bagOfWords (rawDocuments)
rawBag = bagOfWords属性:数量:(480×555双)词汇:[1×555弦]NumWords: 555 NumDocuments: 480

减少计算数据。

numWordsCleaned = cleanedBag.NumWords;numWordsRaw = rawBag.NumWords;= 1 - numWordsCleaned / numWordsRaw减少
减少= 0.7063

比较原始数据和清理数据可视化两个bag-of-words模型使用词云。

图次要情节(1、2、1)wordcloud (rawBag);标题(“原始数据”次要情节(1、2、2)wordcloud (cleanedBag);标题(“清除数据”)

预处理功能

这个函数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);结束

另请参阅

||||||||||

相关的话题