主要内容

分析日语文本数据

这个例子展示了如何使用主题模型导入、准备和分析日语文本数据。

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

  • 词形的变化。例如,“難しい”(“困难”)和“難しかった”(“很困难”)

  • 增加噪音的词语。例如,停止词如“あそこ”(“那里”)、“あたり”(“约”)和“あちら”(“”)

  • 标点符号和特殊字符

这些词云说明了夏目漱石对一些来自“吾輩は猫である”的原始文本数据应用的词频分析,以及相同文本数据的预处理版本。

本例首先展示了如何导入和准备日语文本数据,然后展示了如何使用潜狄利克雷分配(Latent Dirichlet Allocation, LDA)模型分析文本数据。LDA模型是一个主题模型,它发现文档集合中的潜在主题,并推断主题中的单词概率。

导入数据

加载示例数据“factoryReportsJP.csv”.数据包含工厂报告,包括每个事件的日语文本描述和分类标签。方法读取表readtable函数并将文本提取为字符串。分配名字“Var1”“Var2”、……“Var5”属性设置为表变量ReadVariableNames选项

文件名=“factoryReportsJP.csv”;数据= readtable(文件名,“TextType”“字符串”“ReadVariableNames”、假);

查看表的前几行。该表包含以下变量:

  • Var1——描述

  • Var2——分类

  • Var3- - -紧急

  • Var4——解决

  • Var5——成本

从变量中提取文本数据Var1并查看前几个报告。

textData = data.Var1;textData (1:10)
ans =10×1的字符串“スキャナのスプルにアテムが詰まることがある。””“アセンブラのピストンからガタガタと大きな音がします。”“工場起動時に電源が切れる。”“アセンブラのコンデンサが飛ぶ。“ミキサ,でヒュ,ズが切れる。”“コンストラクション·エジェントのパプが破裂して冷却水を噴射している。”“ミキサ,でヒュ,ズが飛んだ。””“ベルトから物が続々と落てきます。”“ベルトから物が落下する。“スキャナ,のリ,ルが割れている,すぐにカ,ブし始める。”

在单词云中可视化文本数据。

图wordcloud (textData);

标记文件

使用标记化文本tokenizedDocument并查看前几个文档。

documents = tokenizedDocument(textData);文档(1:10)
ans = 10×1 tokenizedDocument: 11令牌:スキャナーのスプールにアイテムが詰まることがある。12个代币:アセンブラのピストンからガタガタと大きな音がします。8个代币:工場起動時に電源が切れる。6个token:アセンブラのコンデンサが飛ぶ。6个token:ミキサ,でヒュ,ズが切れる。17令牌:コンストラクション・エージェントのパイプが破裂して冷却水を噴射している。7个token:ミキサ,でヒュ,ズが飛んだ。11个token:ベルトから物が続々と落てきます。7个代币:ベルトから物が落下する。14标记:スキャナーのリールが割れている,すぐにカーブし始める。

获取词性标签

获取令牌的详细信息,然后查看前几个令牌的详细信息。

tdetails = tokenDetails(文档);头(tdetails)
ans =8×8表令牌DocumentNumber LineNumber PartOfSpeech引理实体类型语言  ___________ ______________ __________ _______ ________ ____________ ___________ __________ " スキャナー“1 1字母是名词“スキャナー“走眼”の“1 1”字母ja adpositionの“走眼”スプール“1 1字母是名词“スプール“走眼”に“1 1”字母ja adpositionに“走眼”アイテム“1 1字母是名词“アイテム“走眼”が“1 1”字母ja adpositionが“走眼”詰まる“1 1字母是动词“詰まる“走眼”こと字母是“1 1名词“こと”非实体

PartOfSpeech表中的变量包含标记的词性标记。分别创建所有名词和形容词的词云。

图idx = tdetails。PartOfSpeech = =“名词”;tokens = tdetails.Token(idx);次要情节(1、2、1)wordcloud(令牌);标题(“名词”) idx = tdetails。PartOfSpeech = =“形容词”;tokens = tdetails.Token(idx);Subplot (1,2,2) wc = wordcloud(令牌);标题(“形容词”

为分析准备文本数据

删除停止词。

documents = removeStopWords(文档);文档(1:10)
ans = 10×1 tokenizedDocument: 5令牌:スキャナースプールアイテム詰まる。6个token:アセンブラピストンガタガタ大きな音。5个代币:工場起動電源切れる。4个token:アセンブラコンデンサ飛ぶ。4个token:ミキサ,ヒュ,ズ切れる。8个token:コンストラクション·エ.ジェントパ. etc .プ破裂冷却噴射。4个token:ミキサ,ヒュ,ズ飛ん。6个token:ベルト物続々落き。4个token:ベルト物落下。8个token:スキャナ,リ,ル割れ,すぐカ,ブ始める。

删除标点符号。

documents = eraspunctuation(文档);文档(1:10)
ans = 10×1 tokenizedDocument: 4令牌:スキャナースプールアイテム詰まる5令牌:アセンブラピストンガタガタ大きな音4令牌:工場起動電源切れる3令牌:アセンブラコンデンサ飛ぶ3令牌:ミキサーヒューズ切れる6令牌:コンストラクションエージェントパイプ破裂冷却噴射3令牌:ミキサーヒューズ飛ん5令牌:ベルト物続々落ちき3令牌:ベルト物落下6令牌:スキャナーリール割れすぐカーブ始める

使用lemmalize文本normalizeWords

文档= normalizeWords(文档);文档(1:10)
ans = 10×1 tokenizedDocument: 4令牌:スキャナースプールアイテム詰まる5令牌:アセンブラピストンガタガタ大きな音4令牌:工場起動電源切れる3令牌:アセンブラコンデンサ飛ぶ3令牌:ミキサーヒューズ切れる6令牌:コンストラクションエージェントパイプ破裂冷却噴射3令牌:ミキサーヒューズ飛ぶ5令牌:ベルト物続々落ちるくる3令牌:ベルト物落下6令牌:スキャナーリール割れるすぐカーブ始める

一些预处理步骤,如删除停止词和删除标点符号,将返回空文档。方法删除空文档removeEmptyDocuments函数。

documents = removeEmptyDocuments(documents);

Create预处理命令功能

创建执行预处理的函数对于以相同的方式准备不同的文本数据集合非常有用。例如,可以使用与训练数据相同的步骤使用函数对新数据进行预处理。

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

  1. 使用标记化文本tokenizedDocument

  2. 使用删除标点符号erasePunctuation

  3. 使用删除停止词列表(例如“あそこ”,“あたり”和“あら”)removeStopWords

  4. 使用词汇normalizeWords

方法预处理后删除空文档removeEmptyDocuments函数。使用预处理函数删除文档后,可以更容易地从其他来源删除相应的数据,例如标签。

本例中使用预处理函数preprocessText,示例末尾列出,用于准备文本数据。

documents = preprocessText(textData);文档(1:5)
ans = 5×1 tokenizedDocument: 4令牌:スキャナースプールアイテム詰まる5令牌:アセンブラピストンガタガタ大きな音4令牌:工場起動電源切れる3令牌:アセンブラコンデンサ飛ぶ3令牌:ミキサーヒューズ切れる

删除空文档。

documents = removeEmptyDocuments(documents);

拟合主题模型

拟合潜狄利克雷分配(LDA)主题模型的数据。LDA模型发现文档集合中的潜在主题,并推断主题中的单词概率。

要使LDA模型适合数据,首先必须创建单词袋模型。单词袋模型(也称为词频计数器)记录单词在集合的每个文档中出现的次数。使用创建单词袋模型bagOfWords

bag = bagOfWords(文档);

从词袋模型中删除空文档。

bag = removeEmptyDocuments(bag);

拟合7个主题的LDA模型fitlda.若要抑制详细输出,请设置“详细”0

numTopics = 7;mdl = fitlda(包,numTopics,“详细”, 0);

使用词汇云来想象前四个主题。

数字subplot(2,2, I) wordcloud(mdl, I);标题(“主题”+ i)结束

使用堆叠柱状图可视化多个主题混合。随机查看5个输入文档,并可视化相应的主题混合。

numDocuments = numel(文档);idx = randperm(numDocuments,5);文档(idx)
ans = 5×1 tokenizedDocument: 4令牌:ミキサー激しい揺れる音3令牌:ベルト物落下3令牌:コンベアベルト詰まる4令牌:ミキサー冷却あちこちこぼれる3令牌:トランスポートライン動く
topicmixture = transform(mdl,documents(idx));图barh (topicMixtures (1:5),“堆叠”xlim([0 1])“主题混合”)包含(“主题概率”) ylabel (“文档”)传说(“主题”+字符串(1:numTopics),“位置”“northeastoutside”

使用实例预处理

这个函数preprocessText,执行这些步骤:

  1. 使用标记化文本tokenizedDocument

  2. 使用删除标点符号erasePunctuation

  3. 使用删除停止词列表(例如“あそこ”,“あたり”和“あら”)removeStopWords

  4. 使用词汇normalizeWords

函数documents = preprocessText(textData)标记文本。documents = tokenizedDocument(textData);删除标点符号。documents = eraspunctuation(文档);删除一个停止词列表。documents = removeStopWords(文档);把这些词简化。文档= normalizeWords(文档,“风格”“引理”);结束

另请参阅

|||||

相关的话题