- morogramの出力結果を複数テキスト同士で比較すると、テキストの大まかな傾向を見る事が出来ます。
- これを、NGSM(N-gram Based System for Multiple Documents)と呼びますが、ここではNGSM比較用ファイルを生成するためのperl scriptであるngmerge.lを利用してみましょう。
ngmergeとは?
- ngmergeとは、青山大学の近藤泰弘氏の開発にかかる、NGSMファイルを生成するための、perl scriptです。
- 近藤氏のWebサイトにて公開されています。
- 特徴として、以下の事が挙げられます。
- 複数のngram結果を融合して出力する。
- morogramのようなutf-8のデータファイルでも結合可能。
- 融合するファイル数の限界がない。
- 動作がそこそこ軽い。
- ngmerge.plで結合するmorogram実行データファイルは、事前に[文字コード毎に並べ替えておく]必要があります。
- 並べ替えの方法は、こちらを参照してください。
ngmerge.plの使い方
- ngmerge.plはperl scriptなので、実行にはperl実行環境をインストールしておく必要があります。
- 立命では、CygwinというUNIXの実行環境を擬似的に再現したソフトウェア(厳密に言うとちょっと違うんですが…)がインストールされていますので、そこに含まれているperl実行環境を、Cygwinのbash上もしくはコマンドプロンプト上で利用します。
- ngmerge.plは、近藤氏のWebサイトにて公開されています。
- 公開されているファイルは、perl script形式そのままです。解凍する必要はありません。
- ダウンロードの際、ブラウザによっては勝手に拡張子をTXT等に書き換えてしまう場合があります(中身がテキストファイルなので、そう判断されます)。その場合は、拡張子をplに変更しておきましょう。
- morogramと一緒に使う事を前提にするならば、ngmerge.plをオリジナル版morogram、もしくは実行ファイル版morogramがあるフォルダにコピーすればよいでしょう。
- ngmerge.plをコピーしたら、[スタートメニュー]→[プログラム]→[コマンドプロンプト]を選択してコマンドプロンプトを起動します。
- コマンドプロンプトが表示されたら、morogramの実行ファイルのあるフォルダに移動します。
- 以下の画面に従って入力してください。
C:\ コマンドプロンプト
C:\D:
D:\>cd temp\morogram
D:\temp\morogram>
- これで、morogramのあるフォルダに移動しました。
- ngmerge.plで融合したいmorogram実行結果は、必ずngmerge.plと同じフォルダに置いてください。
- ngmerge.plの実行書式は以下の通りです。
perl ngmerge.pl [一つ目の入力ファイル] [二つ目の入力ファイル]… > [出力ファイル]
- 出力ファイルは、元の結合するファイルと同じ文字コードになります。
実際の使用例
- 使い方の例として、中島敦の『狐憑』(kitsunetsuki.txt)・『牛人』(gyujin.txt)・『山月記』(sangetsuki.txt 新字・新仮名)・『南島譚・幸福』(kouhuku.txt)・『名人伝』(meijinden.txt 新字・新仮名)・『文字禍』(mojika.txt)を対象に、「gram数2」「頻度数1以上」でmorogramを実行し、それをsortlで並べ替えてから、ngmerge.plを実行してみま す。
- 初めに[gyujin.txt]を対象にmorogramを実行し、結果を[mgyujin.txt]に保存します。
C:\ コマンドプロンプト
morogram-0.7.1W.exe --f=1 --g=2,2 gyujin.txt > mgyujin.txt
- 次に[mgyujin.txt]の文字列部分を、sortlを使って文字コード順に並び替え、結果を[ngyujin.txt]に保存します。
C:\ コマンドプロンプト
sortl -W U -t \t +1 -o ngyujin.txt mgyujin.txt
- 以下、残りのテキストを対象に1.2.の操作を実行します。
C:\ コマンドプロンプト
morogram-0.7.1W.exe --f=1 --g=2,2 kitsunetsuki.txt > mkitsunetsuki.txt
sortl -W U -t \t +1 -o nkitsunetsuki.txt mkitsunetsuki.txt
morogram-0.7.1W.exe --f=1 --g=2,2 kouhuku.txt > mkouhuku.txt
sortl -W U -t \t +1 -o nkouhuku.txt mkouhuku.txt
morogram-0.7.1W.exe --f=1 --g=2,2 meijinden.txt > mmeijinden.txt
sortl -W U -t \t +1 -o nmeijinden.txt mmeijinden.txt
morogram-0.7.1W.exe --f=1 --g=2,2 mojika.txt > mmojika.txt
sortl -W U -t \t +1 -o nmojika.txt mmojika.txt
morogram-0.7.1W.exe --f=1 --g=2,2 sangetsuki.txt > msangetsuki.txt
sortl -W U -t \t +1 -o nsangetsuki.txt msangetsuki.txt
- 最後に生成された[n*.txt]をngmerge.plで融合し、その結果を[ngmerge.txt]に保存します。
C:\ コマンドプロンプト
perl ngmerge.pl ngyujin.txt nkitsunetsuki.txt nkouhuku.txt nmeijinden.txt nmojika.txt nsangetsuki.txt > ngmerge.txt
- コマンドプロンプトを終了するには、「exit」と入力して[Enter]キーを押してください。
C:\ コマンドプロンプト
d:\temp\morogram>exit
- 下図は[ngmerge.txt]の一部分です。
- [ngmerge.txt]はutf-8で保存されています。
- 文字化けして表示されてしまった場合は、メニューの[ファイル]→[閉じて開く]を選択し、ダイアログボックスが表示されたら「ngmerge.txt」を選択し、[文字コード]を[utf-8]を選択して[開く]を左クリックしましょう。
- これを見ると、『南島譚・幸福』(nkouhuku)ではまんべんなく使われている[人+某]という文字列が、『牛人』(ngyujin)や『山月記』(nsangetsuki)では、使われていないのが わかります。
- このように、NGSMを利用する事でN-gram結果を一度に比較検討する事が可能になります。
- NGSMを実行する一連のプログラムの実行手順は、上記のように全てコマンドプロンプト上で実行されます。
- 一つ一つの手順を直接入力してもよいのですが、[batファイル]と呼ばれる幾つかの手順をまとめて実行するためのファイルを作成しておいて、一気に実行した方が効率的 に作業が行えます。
- では次に、batファイルを利用してこの一連の手順を実行する方法について解説します。