主要内容

准备分析的文本数据

此示例显示如何创建清除和预处理文本数据进行分析的函数。

文本数据可能很大,并且可以包含大量影响统计分析的噪声。例如,文本数据可以包含以下内容:

  • case的变体,例如"new"和"new"

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

  • 添加噪声的单词,例如停止单词,例如“”和“of”

  • 标点符号和特殊字符

  • HTML和XML标签

这些单词云示出了从出厂报告的一些原始文本数据应用的词频率分析,以及相同文本数据的预处理版本。

加载和提取文本数据

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

filename =.“factoryReports.csv”;数据= readtable(文件名,'texttype'“字符串”);

从字段中提取文本数据描述,以及来自现场的标签数据类别

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

创建标记化的文档

创建一系列令牌文档。

cleanedDocuments = tokenizedDocument (textData);清洁剂(1:10)
ans = 10×1令牌Document:10个令牌:物品偶尔地陷入扫描仪线轴上。11个令牌:响亮的嘎嘎声和敲打声来自瓶子活塞。11令牌:启动工厂时会导致电力。6令牌:汇编器中的油炸电容。5令牌:搅拌机跳过保险丝。10令牌:构建剂中的突发管是喷涂冷却剂。8令牌:熔断器吹入混合器中。9令牌:事情继续滚动皮带。7令牌:从传送带的下降物品。13令牌:扫描仪卷轴拆分,它很快就会开始曲线。

要改进词源化,请在使用的文档中添加部分语音细节addPartOfSpeechDetails。使用addPartOfSpeech函数在删除停止词和词根化之前。

cleanedDocuments = addPartOfSpeechDetails (cleanedDocuments);

像“a”、“and”、“to”和“the”这样的词(也就是停止词)会给数据增加干扰。删除使用的停止词列表removeStopWords功能。使用removeStopWords使用前使用正常化字功能。

cleaneddocuments = removestopwords(Cleaneddocuments);清洁剂(1:10)
ans = 10×1 tokenizedDocument: 7 token:物品偶尔会卡在扫描器卷轴上。8代币:组装器活塞发出的响亮的咔哒咔哒的砰砰声。5代币:切断电源启动工厂。4代币:油炸电容器组装器。4令牌:混合器触发保险丝。7令牌:爆管施工剂喷涂冷却剂。4令牌:熔断器熔断。6代币:东西继续从皮带上掉下来。5代币:掉落物品传送带。令牌:扫描仪卷轴分裂,很快开始曲线。

使使用的词义化正常化字

cleanedDocuments = normalizeWords (cleanedDocuments,'风格''引理');清洁剂(1:10)
ans = 10×1 tokenizedDocument: 7 token:物品偶尔会卡在扫描仪卷轴上。8代币:响亮的响声来组装活塞。5代币:切断电源启动电站。4代币:油炸电容器组装器。4令牌:混合器脱扣保险丝。7令牌:爆管施工剂喷淋冷却剂。4令牌:熔丝吹混器。代币:东西继续滚下皮带。5代币:掉落物品传送带。令牌:扫描仪卷轴分裂,很快开始曲线。

把文件上的标点符号擦掉。

CleanedDocuments =侵蚀(清洁剂);清洁剂(1:10)
ANS = 10×1令牌Document:6个代币:物品偶尔得到扫描仪卷轴7令牌:响亮的拨浪鼓隆重声音箱子活塞4令牌:切割电源启动工厂3令牌:FRY电容器汇编器3代币:搅拌机跳闸熔断器6令牌:爆破管道构建试剂喷雾冷却剂3令牌:保险丝吹长搅拌机5令牌:事物继续翻滚带4令牌:秋季物品​​输送带6令牌:扫描仪卷轴分裂很快开始曲线

删除具有2个或更少字符的单词,以及具有15个或更大字符的单词。

CleanedDocuments = RemoveShortworts(CleanedDocuments,2);cleaneddocuments = removelongwords(清洁剂,15);清洁剂(1:10)
ANS = 10×1令牌Document:6个代币:物品偶尔得到扫描仪卷轴7令牌:响亮的拨浪鼓隆重声音箱子活塞4令牌:切割电源启动工厂3令牌:FRY电容器汇编器3代币:搅拌机跳闸熔断器6令牌:爆破管道构建试剂喷雾冷却剂3令牌:保险丝吹长搅拌机5令牌:事物继续翻滚带4令牌:秋季物品​​输送带6令牌:扫描仪卷轴分裂很快开始曲线

创建Bag-of-Words模型

创建一个词汇袋模型。

cleanedBag = bagOfWords (cleanedDocuments)
cleanedBag = bagOfWords with properties: Counts: [480×352 double

删除在文字袋模型中不会出现两倍以上的单词。

cleanedbag = removeinfrequentwords(cleanedbag,2)
cleanedBag = bagOfWords with properties: Counts: [480×163 double] Vocabulary: [1×163 string] NumWords: 163 NumDocuments: 480

一些预处理步骤,如removeinfrequentwords.在单词袋模型中留下空文档。要确保预处理后单词袋模型中没有空文档,请使用删除程序作为最后一步。

从单词袋模型中删除空文档和相应的标签标签

[cleanedBag, idx] = removeEmptyDocuments (cleanedBag);标签(idx) = [];cleanedBag
cleanedBag = bagOfWords with properties: Counts: [480×163 double] Vocabulary: [1×163 string] NumWords: 163 NumDocuments: 480

创建预处理功能

创建一个执行预处理的函数是很有用的,这样您就可以以相同的方式准备不同的文本数据集合。例如,您可以使用一个函数,以便使用与训练数据相同的步骤对新数据进行预处理。

创建一个函数,用于标记和预处理文本数据,以便用于分析。这个函数preprocessText,执行以下步骤:

  1. 使用标记文本tokenizedDocument

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

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

  4. 删除标点符号使用erasePunctuation

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

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

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

newtext =.“排序机正在制作大量响亮的声音。”;newDocuments = preprocessText (newText)
newDocuments = tokenizedDocument: 6 token:排序机发出很大的噪音

与原始数据进行比较

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

Rawdocuments = tokenizeddocument(textdata);Rawbag = Bagofwords(Rawdocuments)
Rawbag =具有属性的Bagofwords:Counts:[480×555双]词汇:[1×555字符串] numwords:555 numfocuments:480

计算数据的减少。

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

使用词云将两个词袋模型可视化,比较原始数据和清理后的数据。

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

预处理功能

这个函数preprocessText,依次执行以下步骤:

  1. 使用标记文本tokenizedDocument

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

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

  4. 删除标点符号使用erasePunctuation

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

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

函数文件= preprocessText (textData)标记文本。文件= tokenizedDocument (textData);删除一个停止词列表,然后对这些词进行lemmalize。改善%词源化,首先使用addpartfspeech details。= addPartOfSpeechDetails文件(文档);= removeStopWords文件(文档);文档= normalizeWords(文档,'风格''引理');%擦掉标点符号。= erasePunctuation文件(文档);%删除2个或更少字符的单词,以及15个或更多字符的单词%字符。文件= removeShortWords(文件,2);= removeLongWords文档(文档、15);结束

也可以看看

||||||||||

相关的话题