此示例显示如何使用n克频率计数分析文本。
n-gram是一个元组 连续的单词。例如,双字母组合(当的情况 )是一对连续的词,如“大雨”。一个unigram(案件何时 )是一个单词。一个n-grams模型记录了不同n-gram出现在文档集合中的次数。
使用bag-of-n-grams模型,您可以在原始文本数据中保留更多关于单词排序的信息。例如,bag-of-n-grams模型更适合捕捉出现在文本中的短语,如“heavy rainfall”和“雷暴wind”。
创建一个n-grams模型,使用Bagofngrams.
。你可以输入Bagofngrams.
对象到其他文本分析工具箱函数中,例如WordCloud.
和菲达
。
加载示例数据。文件factoryreports.csv.
包含出厂报告,包括每个事件的文本描述和分类标签。用空报告删除行。
filename =“factoryReports.csv”;数据= readtable(文件名,'texttype'那'细绳');
从表中提取文本数据并查看前几个报告。
textdata = data.description;TextData(1:5)
ANS =.5×1字符串“物品偶尔会陷入扫描仪线轴上。”“响亮的嘎嘎声和敲打声来自瓶子活塞。”“在开始植物时,有能力削减到电力。”“汇编器中的油炸电容器。”“搅拌机绊倒了保险丝。”
创建一个函数,用于标记和预处理文本数据,以便用于分析。这个函数preprocessText
在示例的末尾列出,执行以下步骤:
将文本数据转换为小写使用较低的
。
使用授权文本tokenizedDocument
。
删除标点符号使用erasePunctuation
。
删除使用的停止单词列表(例如“和”,“和”和“该”)的列表removeStopWords
。
使用2个或更少字符删除单词removeShortWords
。
使用15个或更多字符删除单词removelongwords.
。
使使用的词义化正常化字
。
使用示例预处理功能preprocessTest
准备文本数据。
文档= preprocesstext(textdata);文件(1:5)
ans = 5×1令牌Document:6个代币:物品偶尔得到卡住扫描仪卷轴7令牌:响亮的拨浪鼓响起来了,响亮的拨浪鼓爆炸声音箱子活塞4令牌:切割电源启动工厂3令牌:Fry电容器汇编3令牌:搅拌机跳闸熔断器
通过首先使用一个n-grams模型来创建Bigrams的单词云Bagofngrams.
,然后将模型输入WordCloud.
。
要计算长度为2的n-g(双格),请使用Bagofngrams.
使用默认选项。
袋= bagofngrams(文件)
[1×351 string] Ngrams: [941×2 string] ngramlength: 2 NumNgrams: 941 NumDocuments: 480
使用单词云可视化n-grams模型。
图wordcloud(袋);标题(文本数据:预处理双字图的)
Latent Dirichlet Allocation (LDA)模型是一种主题模型,它发现文档集合中的底层主题,并推断主题中的单词概率。
创建包含10个主题的LDA主题模型菲达
。该函数通过将n-grams作为单个单词处理来拟合LDA模型。
mdl = fitlda(袋子,10,“详细”, 0);
将前四个主题可视化为Word云。
数字为了I = 1:4 subplot(2,2, I) wordcloud(mdl, I);标题(“LDA的话题”+ i)结尾
在LDA主题中,单词clouds突出了常见的共现双字。函数根据特定LDA主题的概率绘制具有大小的双格图。
要使用更长的短语分析文本,请指定'ngramlengths'
选项Bagofngrams.
是一个更大的价值。
使用时间更长的短语时,可以在模型中保持停止单词是有用的。例如,要检测短语“不开心”,请在模型中保持停止单词“是”和“不是”。
预处理文本。使用标点符号erasePunctuation
,并标记使用tokenizedDocument
。
CleanTextData =侵蚀(TextData);文档= tokenizeddocument(cleantextdata);
计算长度3的n-gram(三rigrams),使用Bagofngrams.
并指定'ngramlengths'
是3。
袋= bagofngrams(文件,'ngramlengths',3);
使用单词云可视化n-grams模型。Trigrams的单词云更好地显示了个别单词的背景。
图wordcloud(袋);标题(“文本数据:三元模型”的)
查看前10个三个三重奏及其频率计数topkngrams
。
台= topkngrams(袋,10)
TBL =10×3表Ngram计数NgramLength __________________________________ _____ ___________ " ”“”“搅拌机”14 3“在”“”“扫描仪”13 3“吹”“在”“9 3”“机器人”“手臂”7 3”“”“”“6 3”是“喷洒”“冷却剂”6 3”“时间”“6 3”时间”“”“时间”6 3”听到“”“”“6 3”的“地板”6 3
这个函数preprocessText
按顺序执行以下步骤:
将文本数据转换为小写使用较低的
。
使用授权文本tokenizedDocument
。
删除标点符号使用erasePunctuation
。
删除使用的停止单词列表(例如“和”,“和”和“该”)的列表removeStopWords
。
使用2个或更少字符删除单词removeShortWords
。
使用15个或更多字符删除单词removelongwords.
。
使使用的词义化正常化字
。
函数文件= preprocessText (textData)%将文本数据转换为小写。cleanTextData =低(textData);标记文本。文档= tokenizeddocument(cleantextdata);%擦掉标点符号。= erasePunctuation文件(文档);%删除停止单词列表。文档= Removestopwords(文件);%删除2个或更少的单词,以及15个或更大的单词%字符。文件= removeShortWords(文件,2);= removeLongWords文档(文档、15);%lemmatize单词。= addPartOfSpeechDetails文件(文档);文档= normalizeWords(文档,'风格'那'引理');结尾
tokenizedDocument
|Bagofwords.
|removeStopWords
|erasePunctuation
|removelongwords.
|removeShortWords
|Bagofngrams.
|正常化字
|topkngrams
|菲达
|ldamodel.
|WordCloud.
|addPartOfSpeechDetails