MALLET がインストールされて使える状態になっていると、モード設定でトピック M が選択できるようになり、MALLET を使った分析が行えます。
ここではすでに、テキストの前処理でファイルの分割をして保存したフォルダがコーパスフォルダに登録されている状態になっています。
とりあえず分析してみたい場合は、デフォルトのオプションのまま、分析したいコーパスを選択して実行ボタンをクリックしてください。コーパスの大きさにもよりますが、数分で処理が終わるはずです。ここでは、機能語などは分析に含めたくないため、ストップワード除去のオプションはオンにしています。
実行をクリックすると、分析結果の出力ファイルを保存するフォルダを指定するように促されるので、どのコーパスの分析かがわかるような名前をつけた新規のフォルダを用意して指定します。ここでは、FROWN コーパスを分析するので、FROWN という名前のフォルダを作って指定しています。
分析が終わると、左上の分析結果のリストに登録されます。結果出力のフォルダには、MALLET の実行ファイル (import_script.sh とtrain_script.sh)、中間ファイル (topic-input.mallet) と出力されたファイル群、それらの結果データを読み込んだ sqlite データベースファイル (mallet_data.db) が保存されているはずです。同じ分析を行いたい場合は、import_script.sh と train_script.sh を順番にターミナル.app で実行するか、これらの中のファイルを直接実行することで再現ができます。ただ、乱数の初期値 (乱数シード) を指定していない場合は、毎回結果が微妙に変わります。
ここからは、MALLET のオプションについて説明していきます。
まず、分析に使うコーパスを指定します。コーパスは、テキストの前処理で行ったように、テキストファイル処理ツールでの出力を直接登録することもできますが、すでに処理されたコーパスファイルがある場合は、それを含むフォルダをコーパスフォルダのテーブルに直接ドラッグ&ドロップしても追加できます。テーブルに追加されると、コーパスのポップアップボタンの選択肢として追加したフォルダが現れます。
ここで 1 つ注意が必要なのは、MALLET は指定したフォルダ (ここではコーパスフォルダ) に入っているすべてのファイルを処理してしまいます。そのため、ドラッグ&ドロップで登録する場合は、不要なファイルがないように気をつけてください。macOS がファイル表示のために作る不可視ファイルである .DS_Store は、分析実行前に削除するようになっています。
MALLET の処理オプションは、次のものが指定できます。
まずは、分析に使うテキストの扱いについてのオプションです。
単語配列を保持 - 文章などの普通のテキストファイルを使う場合は、チェックを入れたままにします。
大文字小文字の区別を保持 - 大文字と小文字で別の意味を持つ場合など、区別して分析したい場合はこのオプションにチェックを入れます。普通の文章の場合は、文頭が大文字になったものもそのまま別の単語として処理されるので、通常はチェックを外したままにしてください。
ストップワード除去 - ストップワードを除去して分析します。デフォルトは英語のストップワードリストが登録されています。別のストップワードリストが使いたい場合や英語以外の言語の分析を行う場合は、1 行 1 単語のストップワードリストを含むファイルを用意して、選択をクリックしてそのファイルを選んでください。
次は分析のオプションです。
トピック数 - 分析で抽出するトピック数を指定します。単一と複数が選べます。複数については下で説明します。デフォルトでは、50 トピックを抽出するようになっています。
上位単語数 - トピックごとにそのトピックに特徴的な単語を抽出しますが、その語数を指定します。単語数が多くなるほど処理に時間がかかります。
並列処理数 - 同時に使用する CPU のコアの数を指定します。大きなコーパスや多くのファイルを分析する場合、並列処理数が多いほど早く処理が終わるはずです。Apple Silicon Mac では、最低でも 6 から 8 コアは使えるはずです。
繰り返し数 - トピックモデルの分析は、単語をランダムに抽出して分析し、それを繰り返します。回数が多いほど分析の精度は高くなりますが、処理時間がかかります。
最適化 - モデルの最適化を行うオプションです。常時オンにしてください。推奨される値は、間隔が 10 で、Burn-in はその倍の値 (20) とされています。
乱数シード - 上にあるように、単語をランダムに抽出して分析しますが、乱数の初期値 (乱数シード) を指定することで、同じ結果が得られます。
トークン正規表現 - 単語として扱う文字列を正規表現で指定できます。品詞タグがついたテキストを扱う場合に、特定の品詞タグのついた単語のみを分析する場合などにここで指定します。デフォルトの正規表現は、文字 (\p{L}) と装飾文字 (\p{M}) の連続という意味になります。
メモリ割り当て - 分析に利用するメモリの割り当てを変更できます。大きなコーパスを分析する場合は、、増やした方がいいかもしれません。
トピック数には、単一と複数のオプションがあります。単一は、指定したトピック数で 1 度だけ分析を行います。複数では、最小トピック数と最大トピック数を指定して、その間で何トピックごとに分析を行うかをステップで指定します。分析は、最小トピック数から始まり、ステップ数ごとのトピック数で分析を行なって、最大トピック数を超えないところで終わります。
下の例では、40 から 60 まで 5 刻みで分析を行うので、40, 45, 50, 55, 60 トピックの分析結果が得られます。
この設定で実行すると、結果の出力で指定したフォルダの中に指定したフォルダの名前とトピック数の組み合わせで名前をつけたサブフォルダが作られて、そこに結果の出力が保存されます。ここでは、FROWN というフォルダを用意して、それを出力先として指定しています。
通常、トピックモデル分析は探索的に行うため、あらかじめ何トピックがデータに適合するかはわかっていないため、1 度の分析で終わることはありません。そこで、複数のトピック数で分析を行い、結果を比較した上で最適なトピック数を決めるという手順を踏みます。一般には、小さなコーパスではトピック数を 1 ずつ変化させるなど細かく見ていき、大きなコーパスでは、5 刻みなどざっくりと見るという感じになるようです。トピック数の決定は、分析で算出される統計値 (Diagnostics) なども比較しますが、最終的には、研究目的に照らして解釈が可能かどうかなど、研究者が判断することになります。
少し特殊な使い方
通常あまりこのような使い方はしないとは思いますが、すでに MALLET での分析をターミナルなどで行なって、出力ファイルが 1 つのフォルダにまとまっている場合、左上の MALLET 分析結果のテーブルにドラッグ&ドロップすることで追加できます。
分析に使ったコーパスのフォルダがある場合は、右側のコーパスリストテーブルに追加して、そのコーパスを、結果リストテーブルに追加した外部処理した結果に割り当てることもできます。コーパスリストテーブルのコーパスをクリックして、結果リストテーブルのコーパスを追加したい結果にドロップしてください。
ただ、このままでは CasualConc では MALLET の出力を扱えないので、追加した結果を選んでコンテクストメニューからデータベースを再構築を選んで、結果のデータベースを作成してください。これで、CasualConc で処理した結果と同様に扱えるようになります。
出力ファイル
MALLET で出力するファイルを選びます。デフォルトでチェックが入っているものは、CasualConc で利用するものです。それ以外で出力させたいものにチェックを入れてください。CasualConc で分析するだけなら、変更する必要はありません。CasualConc で利用する出力については、MALLET の結果の扱いで提示します。