准备分析的文本数据

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

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

  • 例外情况,例如“新”和“新”

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

  • 添加噪声的单词,例如停止单词,例如“”和“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令牌:扫描仪卷轴拆分,它很快就会开始曲线。

为了改善lemmatization,将部分语音详细信息添加到文件中addPartOfSpeechDetails。使用addPartOfSpeech在删除停止单词和lemmatizing之前的功能。

cleaneddocuments = addpartofspeechdetails(cleaneddocuments);

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

cleaneddocuments = removestopwords(Cleaneddocuments);清洁剂(1:10)
ans = 10×1令牌Document:7个令牌:偶尔抓住扫描仪线轴的物品。8个令牌:响亮的轰鸣声发出声音即将到来的装配器活塞。5令牌:削减电力起动厂。4令牌:油炸电容器汇编器。4个令牌:搅拌机绊倒的保险丝。7令牌:突发管构建试剂喷涂冷却剂。4令牌:保险丝吹搅拌机。6令牌:事情继续滚动皮带。5个令牌:落下物品输送带。8令牌:扫描仪卷轴拆分,很快开始曲线。

使用的单词释放正常化字

cleaneddocuments = rangerizewords(cleaneddocuments,'风格''引理');清洁剂(1:10)
ans = 10×1令王形化document:7个令牌:物品偶尔会得到卡住扫描仪卷轴。8令牌:大声拨浪鼓声音来了装配器活塞。5令牌:切割电力启动厂。4个令牌:Fry电容器组件。4令牌:搅拌机跳闸保险丝。7令牌:突发管构建试剂喷雾冷却剂。4令牌:保险丝吹气器。6令牌:事情继续滚动皮带。5令牌:秋季物品​​输送带。8令牌:扫描仪卷轴拆分,很快开始曲线。

从文档中删除标点符号。

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令牌:扫描仪卷轴分裂很快开始曲线

创建袋式模型

创建一个单词袋式模型。

cleanedBag = bagOfWords (cleanedDocuments)
CleanedBag =具有属性的BagofWords:计数:[480×352双]词汇:[1×352字符串] num字:352 numfocuments:480

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

cleanedbag = removeinfrequentwords(cleanedbag,2)
CleanedBag =具有属性的Bagofwords:计数:[480×163双]词汇:[1×163字符串] num字:163 numfocuments:480

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

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

[CleanedBag,IDX] =删除贩子(CleanedBag);标签(IDX)= [];清洁袋
CleanedBag =具有属性的Bagofwords:计数:[480×163双]词汇:[1×163字符串] num字:163 numfocuments:480

创建预处理功能

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

创建函数授权并预处理文本数据,以便它可以用于分析。功能PreprocessText.,执行以下步骤:

  1. 使用授权文本tokenizedDocument

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

  3. 使用的单词释放正常化字

  4. 使用擦除标点符号侵蚀

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

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

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

newtext =.“排序机正在制作大量响亮的声音。”;newdocuments = preprocesstext(newtext)
newdocuments = tokenizeddocument:6个令牌:分拣机响亮的噪音

与原始数据进行比较

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

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

计算数据的减少。

numwordscleaned = cleanedbag.numwords;numwordsraw = rawbag.numwords;RESEAST = 1  -  numwordscleaned / numwordsraw
减少= 0.7063

使用Word云可视化两个单词的模型来比较原始数据和清除数据。

图形子图(1,2,1)WordCloud(RawBag);标题(“原始数据”)子图(1,2,2)WordCloud(CleanedBag);标题(“清洁数据”

预处理功能

功能PreprocessText.,按顺序执行以下步骤:

  1. 使用授权文本tokenizedDocument

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

  3. 使用的单词释放正常化字

  4. 使用擦除标点符号侵蚀

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

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

功能文档= preprocessText(TextData)%标记文本。文档= tokenizeddocument(textdata);%删除停止单词列表,然后释放单词。改善%lemmatization,首先使用addpartofspeechdetails。文档= addpartofspeechdetails(文件);文档= Removestopwords(文件);文档= rangerizewords(文档,'风格''引理');%擦除标点符号。文件=侵蚀(文件);%删除2个或更少字符的单词,以及15个或更多字符的单词%字符。文件= removeShortWords(文件,2);= removeLongWords文档(文档、15);结尾

也可以看看

||||||||||

相关的话题