Wekaでテキストマイニング:データの準備

Wekaで日本語の文章を対象にテキストマイニングを行う場合,まず,「分かち書きテキスト」を用意する必要があります.
下図のように,単語の間に空白などを入れない日本語のテキストの単語間に空白を入れたものを「分かち書きテキスト」と呼びます.

分かち書きテキストを作るためには,”単語”の文字列を認識しなくてはなりません.日本語では,単語をテキスト内に認識するため,形態素解析を行います.形態素解析は,本来は,単語だけではなく,単語の品詞,活用形,読みなどを明らかにする解析ですが,分かち書きテキストを得るためには,単語の認識を正しく行った結果が得られることが重要,となります.下記のプログラムのように,代表的な形態素解析器であるMeCabと国立国語研究所が公開している形態素解析用の辞書UniDicを用いて,分かち書きテキストを作ることができます.(※「リンク先を名前を付けて保存」して,Google Colaboratoryをアプリとして追加したGoogle Driveの適当なフォルダにアップロード後,実行(ダブルクリック)してください)

https://github.com/hidenaoA/weka-jp/blob/8f0f6103ec06ba77c99d802518c8a5bc26cc31e3/Weka_TextMining/%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%81%AE%E5%88%86%E3%81%8B%E3%81%A1%E6%9B%B8%E3%81%8D%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E4%BD%9C%E6%88%90.ipynb

上記のプログラムをGoogle Colaboratory上で,各行が1文書(段落やひとまとまりの文章)としたテキストファイルを”ファイル”の領域にアップロードして,”ランタイム”→”すべてのセルを実行”と選んで,実行することで,分かち書きテキストを得ることができます.下図では,テキストファイルtext.txtに対して,分かち書きテキストのファイルtext_wakati.txtが得られたところを表しています.

分かち書きテキストが得られたら,Wekaに読み込ませるARFFファイルを作成します.ARFFファイルには,”@relation”, “@attirbute”, “@data”のヘッダをつける必要がありますので,Visual Studio Codeなどのテキストエディタなどで編集して,UTF-8(国別コードのついたUTF-8N)で保存ください.

以上で作成したARFFファイルをWekaでは,weka.filters.unsupervised.attribute.StringToWordVectorでBag-of-Words(Bag-of-Tokens)で各文書をベクトル化します.これにより,文書を単語の出現頻度(重み付き出現頻度であるTFIDFなど)の数値の列で表すようなデータができます.(※このとき,単語数が多いため,実際のARFFでは,{}で各行を短縮した形式のARFFになります)

なお,日本語を扱う場合,Wekaをインストールした後,日本語表示が可能なようにweka.iniの中にあるencodingの値を”utf-8″とする必要があります.

Explorer上での手順は,
1. 分かち書きファイルをARFF化したファイルを読み込む
2. PreprocessパネルのChooseボタンからfilters→unsupervised→attributeと展開して,StringToWordVectorを選ぶ
3. Chooseボタンの右側の欄をクリックして,StringToWordVectorの設定を行う
 3.1 TFIDFを値として使う場合は,IDFTransformの値をTrueにする
 3.2 minTermFreq(単語の最小出現頻度)を設定する(デフォルトでは1だが,5回以上などにする)
 3.3 tokenizerの設定を確認する(単語を値の基準とする場合はWordTokenizer,そのほか,文字N-gramなども設定可能)
 3.4 (テストファイルを作る際などに使うには)dictionaryToSaveに現在のテキストから得られる単語を辞書として保存するファイル名を記入する
4. Applyボタンを押して,Bag-of-Wordsによるデータを作成

ExplorerのPreprocessパネルで分かち書きテキストをARFF化したファイルを開いて,StringToWordVectorフィルターをChooseボタンから選択したところ
Chooseボタンの横のフィルターの名前などが出ている欄をクリックして各種の設定を行う

Wekaの使い方

投稿ページを利用して,Wekaの使い方について,紹介していきます.

Wekaで日本語テキストのマイニング

  • データの準備:クラスタリングに用いるクラスラベル無しのデータをテキストから作成
  • クラスタリングの実行
  • テキストデータからの訓練データの作成と分類学習(決定木)の実行
  • テキストデータからのテストデータの作成と分類モデルの適用