Main Content

トピック モデリング入門

この例では、トピック モデルをテキスト データに当てはめて、トピックを可視化する方法を示します。

潜在的ディリクレ配分 (LDA) モデルは、文書のコレクションに内在するトピックを発見するトピック モデルです。単語の分布によって特徴付けられるトピックは、共通して共起する単語のグループに対応します。LDA は教師なしトピック モデルです。これは、ラベル付きデータを必要としないことを意味します。

テキスト データの読み込みと抽出

サンプル データを読み込みます。ファイル factoryReports.csv には、各イベントの説明テキストとカテゴリカル ラベルを含む工場レポートが格納されています。

関数 readtable を使用してデータをインポートし、Description 列からテキスト データを抽出します。

filename = "factoryReports.csv";
data = readtable(filename,'TextType','string');
textData = data.Description;

解析用のテキスト データの準備

テキスト データをトークン化して前処理し、bag-of-words モデルを作成します。

テキストをトークン化します。

documents = tokenizedDocument(textData);

モデルの当てはめを改善するには、句読点とストップ ワード ("and"、"of"、"the" などの単語) を文書から削除します。

documents = removeStopWords(documents);
documents = erasePunctuation(documents);

bag-of-words モデルを作成します。

bag = bagOfWords(documents);

LDA モデルを当てはめる

関数 fitlda を使用して、トピック数 7 の LDA モデルを当てはめます。詳細出力を抑制するには、'Verbose' オプションを 0 に設定します。

numTopics = 7;
mdl = fitlda(bag,numTopics,'Verbose',0);

トピックの可視化

ワード クラウドを使用して、最初の 4 つのトピックを可視化します。

figure
for topicIdx = 1:4
    subplot(2,2,topicIdx)
    wordcloud(mdl,topicIdx);
    title("Topic " + topicIdx)
end

Figure contains objects of type wordcloud. The chart of type wordcloud has title Topic 1. The chart of type wordcloud has title Topic 2. The chart of type wordcloud has title Topic 3. The chart of type wordcloud has title Topic 4.

テキスト解析の次のステップとして、さまざまな前処理ステップを使用してトピックの混合を可視化し、モデルの当てはめを改善できます。例については、トピック モデルを使用したテキスト データの解析を参照してください。

参考

| | | | |

関連するトピック