kakasiとmorogramとその他。

(未来: 自分のBlogにおける「ひらがなの出現頻度」を、パソコンを使って調べてみよう!(kanji2na+morogram編、244万文字頻度付き) )
(未来:「雑記/えもじならべあそび」における、全2,440,461文字についての2文字連接頻度。)
(未来:「雑記/えもじならべあそび」における、全2,440,461文字についての1〜3文字連接頻度、表計算ドキュメント版。)


 WindowsXPへの導入メモです…忘れると面倒なので。
 MS-DOS時代を知らない人にとって役立つかどうかは微妙。
 Uジローさんの記事「My ☆ カナ出現頻度表!」絡みです。
 (後日追記: http://kirinsystem.net/diary/?date=20050523 も参照いただくと、更に良い感じです)
 (2005年10月13日23:59:50追記 漢字→かな変換に関しては、kakasiなどを使用せずに「Kanji2na」(これはGUIベースなので、コマンドプロンプトを使用しなくともよい)を使用するという方法もあります。使い方はみのりさんによる解説を参照願います。)

  • kakasi
    • http://kakasi.namazu.org/ から「Win32用 バイナリパッケージ 正式公開版: Web ( kakasi-2.3.4.zip とか言う名前)」をgetする。保存先は…Cドライブのルート(c:\)で良いでしょ。
    • 解凍する。ツールがないときはlhaplusをダウンロードして使うと良い感じ。解凍すると、 c:\ の下に kakasi というフォルダが出来る。さっきの .zipファイルはもう要らないので、とりあえずは出来たばかりの kakasi フォルダに移動しておくと見た目には良い感じ。
    • kakasi フォルダ内の README-ja.win32 を開く…内容はテキストファイルなので、メモ帳(notepad)で開く。
    • 書いてあるとおりに環境変数を設定する。
      • XPの場合は、[ WindowsNT/2000 の環境設定 ]を見る。
      • 環境によっては「(スタート -> )マイコンピュータ -> コントロールパネル -> パフォーマンスとメンテナンス -> システム -> 環境」になりうるので、設定項目を見逃さないように。
      • 変数「Path」のところは、「C:\kakasi\bin;%PATH%に書き換える」…のではなく、既に書かれているパスの前に【C:\kakasi\bin;】を追記するという言う意味です。間違えて今までのパスを消さないように。
      • KANWADICTPATHとITAIJIDICTPATH は新規に設定するから、そのまま指定して良い。
  • kakasi単体の動作テスト方法、一例。
    • スタート→ファイル名を指定して実行→ cmd (enter)
    • c:(enter)
    • cd \kakasi(enter)
    • type readme-ja.win32 | kakasi -w | kakasi -JH -KH(enter)
      • ファイル名はくそまじめに打たず、rまで打ってtabキーを叩いていれば、そのうち出ます。kakasiのオプションは大文字・小文字を間違えると上手く動作しないみたい。
    • 上の例は「readme-ja.win32 を標準出力に投げて、まずは分かち書きして、それから漢字→かな変換とカナ→かな変換をする」という事。 | はシフト+\です。
      • 結果を保存したい場合は、↓みたいにファイル名を指定してリダイレクトしてください。
        • type readme-ja.win32 | kakasi -w | kakasi -JH -KH > hogehoge.txt(enter)
    • 上手く動作したら、 exit(enter)でDOS窓を閉じてください。
  • morogram
    • ダウンロードするべきファイルは「morogram-0.7.1xCJKT_r1.36.zip」です。CJKTってついてないヤツは、UTFしか処理できないのでちょっと厄介。
    • 導入に関して難しい点は…ないかな。単に解凍すると.exeが出るだけだし。今回の場合は…c:\kakasiに解凍しても良さそう。以下、c:\kakasiに解凍したものとして書きます。
    • オプションは --g だけを覚えれば良さそう。--g2,4 とすると、2文字から4文字の連なりを提示してくれる…けど、混ぜられるとあとが大変なので、--g2,2 で2文字連を出して、次に--g3,3 を…とかやる方が良いと思う。
  • morogram単体の動作テスト方法、一例。
    • スタート→ファイル名を指定して実行→ cmd (enter)
    • c:(enter)
    • cd \kakasi(enter)
    • type readme-ja.win32 | kakasi -w | kakasi -KH -JH > hogehoge.txt(enter)
    • morogram-0.7.1xCJKT.exe --w --g=2,2 --I=sjis --O=sjis hogehoge.txt > hindo.txt(enter)
    • morogram-0.7.1xCJKT.exe --g=2,2 --I=sjis --O=sjis hogehoge.txt > hindo.txt(enter)
      • morogramの.exeまでについても、ファイル名はくそまじめに打たず、mだけ打ってtabキーを叩いていれば、そのうち出ます。
      • hindo.txtを確認してみてください。
      • 結果をソートする場合は、この中身を OpenOffice.org-Calc(表計算ソフト)あたりにコピペして、OOo上で並べ替える方が楽ですな(いや、別にexcelでも良いんだけど、個人的にはOOoの方が好きなので…)。
    • 上手く動作したら、 exit(enter)でDOS窓を閉じてください。

一つtipsを。

  • for %f in (1 2 3 4 5 6 7 8 9 10 11 12 12 13 14 15) do morogram-0.7.1xCJKT.exe --g=%f,%f --I=sjis --O=sjis hogehoge.txt > hindo.%fgram.txt(enter)

morogram-0.7.1xCJKT.exe --w --g=%f,%f --I=sjis --O=sjis hogehoge.txt > hindo.%fgram.txt(enter)
 こんな感じで書くと、N=1〜15までのN-gram解析をパッチ的に処理できます(%fに1〜15が代入されて、計15回コマンドが実行される。出力先のファイル名もhindo.%fgram.txtなどとして変数を含ませるのがポイント…これで分別済みのファイルが15個生成される)。
 コマンドラインの文字数制限があるので、それに引っ掛からない程度に分割しなければなりませんが、それでも大体10〜15回分はこの1行で処理できます。
 …ってゆーか、15-gramなんて出るのか微妙ですから、この一回で全て賄えそうな気はしますが。

オマケ。

 テキスト中から半角英数文字英字を除去するには、次のスクリプトを通して下さい。
 (※ jgawk を使いますので、ダウンロードしてきて c:\windows あたりに突っ込んでおく必要があります。また jgawk は短いファイル名(8+3形式)にしか対応していないようなので、リダイレクト先のファイル名は必ず8+3形式にして下さい)

  • type export.kana | jgawk '{gsub(/[!-~]/,"")}{print $0}' > export.kan
    • 最初の export.kana は、kakasi分かち書きしたあとでも分かち書きする前でも、どちらのソースでも構いません。
    • jgawk での'{gsub(/[!-~]/,"")}{print $0}'では、!から~までの文字列を除去しつつ、残りをそのまま標準出力にスルーします。


 もう一方の問題…カナ→かな変換については、正直言ってさくらエディタの変換機能を使う方が楽だと思います。