Alteryxで機械学習、Intelligence Suite編!テキストマイニングしてみよう
こんにちは、スズです。
本エントリは2020年アドベントカレンダー『今日からはじめるAlteryx再入門』の20日目のエントリです。
本日20日目は『Alteryxで機械学習、Intelligence Suite編!テキストマイニングしてみよう』をお届けします。
執筆環境
本エントリの執筆環境は以下の通りです。
- Alteryx Designer 2020.4.5.12471 Non-Admin
- Windows 10 Pro
テキストマイニングって何だろう?
データには、売り上げのように数値で表されるものだけではなく、記述式のアンケートのように文字を扱ったものもあります。アンケートやSNSを分析しようとした際、大量の文字列を扱うことになります。これらの大量の文字列のデータから有益な情報を取り出す分析手法を総称して、テキストマイニングと呼びます。
Alteryxのテキストマイニングって何ができるの?
Alteryxでは追加ライセンスのIntelligence Suiteを使うことで、テキストマイニングの機能を利用できます。ここからはAlteryxのテキストマイニングでできることをご紹介します。
Alteryx Intelligence Suiteのヘルプには各ツールについての紹介がありますので、あわせてご参照ください。
PDFからテキストを読み込む
PDF入力ツールは指定のフォルダにあるPDFを読み込みます。AlteryxはPDFを画像のバイナリファイルとして読み込み、テキストへ変換ツールと組み合わせて使用することで読み込んだ画像を文字列のデータに変換できます。
以下のワークフローで動作を見てみます。
PDF入力ツールではPDFファイルがあるフォルダを指定します。結果ウィンドウではファイルサイズやパスのみ出力されているように見えますが、「pdf」列には画像のバイナリファイルが読み込まれています。
読み込んだPDFファイルの中から「humpty」というファイルだけにしぼり、テキスト変換ツールで処理します。処理した結果では、humptyというファイルから読み込まれたテキストが文字列のデータとして出力されています。
トピックモデリングしてみる
先ほど読み込んだデータを使って、今度はトピックモデリングツールを試してみます。トピックモデリングツールでは対象のデータをレコードごとにトピック(話題)に分類します。
以下のワークフローで試してみます。先ほどのデータは1レコードに集約されていましたので、トピックモデリングツールの前に列分割ツールを使用してレコードに分割しておきます。
トピックモデリングツールでは、トピックの数を指定します。
結果を見てみます。Dの出力アンカーでは、各レコードのトピックの傾向が参照できます。Humpty Dumptyが含まれている方がtopic_1に所属する確率が高く、含まれていない方がtopic_2に所属する確率が高い、というように分けられているようです。
Rの出力アンカーでは、各トピックに含まれている単語の分布が確認できます。
複数のPDFファイルから一部のテキストを抜き出してみる
先ほどはPDFファイルにあるすべてのテキストを文字列のデータに変換しましたが、今度はPDFの一部のテキストを文字列のデータに変換してみます。
用意したPDFは、以下の左の画像のようなデータが含まれています。同じ形式のPDFファイルを3つ(customer1、customer2、customer3)用意しました。3つのファイルから、Comany NameとUser Nameに記載されている名前のみ抜き出します。
以下のようなワークフローで確認してみます。PDF入力ツール、テキストへ変換ツールに加えて、画像テンプレートツールを使用します。
画像テンプレートツールでは、1つのPDFを読み込み、ドラッグして範囲を指定して名前を付けます。ここでつけた名前は、のちの処理で列の名前として使用されます。
画像テンプレートツールでは画像からテキストを抜き出す範囲の指定のみとなるため、別途PDF入力ツールで対象のPDFから画像のバイナリファイルを読み込む必要があります。PDF入力ツールからPDFファイルを読み込み、フィルターツールで「cusotmer」のPDFファイルに絞り込み、テキストへ変換ツールのDの入力アンカーに接続します。画像テンプレートツールからはテキストへ変換ツールのTの入力アンカーに接続して、ワークフローを実行します。結果は以下のように、「company」と「user」の列が作成され文字列が出力されています。
前処理をしてみる
テキスト前処理ツールでは、単語を原形への変換や、数字、句読点、ストップワードのフィルターが行えます。ストップワードは、自然言語を処理する際に対象がとなるものを指します。
ツールを使って動作を見てみます。データにはFree eBooksにあるThe Phantom of the Operaの一部を使用しています。
以下の画像の左の列が処理前の状態、右の列が処理後の状態です。全体の文字が減っているほか、「speeping」が「sleep」というように原形に変換されていることや、句読点が削除されていることが分かります。
感情分析してみる
感情分析ツールでは、文字列から肯定的(ポジティブ)/否定的(ネガティブ)/中立的(ニュートラル)の判定を行います。
前項と同じデータを使って試してみます。なお、感情分析ツールを使う際はテキスト前処理ツールを使わないことが推奨となっていますので、前処理を行っていない元のデータを使用しています。
以下のような結果になりました。左の列から、「negative_sentiment」は否定的な感情、「neutral_sentiment」は中立的な感情、「positive_sentiment」は肯定的な感情を数値で表しています。「compound_sentiment_source」では、3つの感情を合わせたスコアを-1から1の範囲で表します。-1は最も否定的なスコア、0は最も中立的なスコア、1は最も肯定的なスコアです。
ワードクラウドしてみる
ワードクラウドツールでは、文字列の視覚化に利用できます。文中に出てきた単語を、出てきた頻度に応じて大きさや色などで表します。
前項と同じデータを使って試してみます。
以下のような結果になりました。ErikやPersian、daroga、Christineといった単語が多く使われたようです。
さいごに
今日から始めるAlteryx再入門アドベントカレンダー20日目『Alteryxで機械学習、Intelligence Suite編!テキストマイニングしてみよう』をお届けしました。今日から始めるAlteryx再入門アドベントカレンダーにて私が執筆を担当するのは本日が最後となります。今年は例年になく時間ぎりぎりでの執筆に追い込まれましたが、無事に投稿できてほっとしております。
明日21日目は兼本による『Alteryx Serverってなあに : 概要編(仮)』を予定しています。明日もお楽しみに!