睡人亭トップ >> 授業用 >> N-gramモデルを利用したテキスト分析 >> NGSMデータを加工しよう―その2―
最終更新日:
参照

morogramを使う前に

実際にmorogramを使ってみよう

sortlで並び替え

ngmergeで比較しよう

batファイルで楽をしよう

NGSMデータを加工しよう―その1―

NGSMデータを加工しよう―その2―

N-gramインデックス

N-gramモデルを利用したテキスト分析

NGSMデータを加工しよう ―その2―

perlスクリプトで置換作業を半自動化copyコマンドを使って標題を挿入batファイルで手順を半自動化batファイルは使い回そう

ページ先頭

perlスクリプトで置換作業を半自動化

kakou.pl - 秀丸
# ngmerge.pl の出力をExcelで読みやすく加工するためのscript
# perl5.6でこのスクリプトを動かす場合、以下の一行を入れる。
# perl5.8の場合は不要。


use utf8;

# 先頭から順に一行ずつ読み込み

while (<STDIN>) {

# ここから置換開始
# 各区切りの半角空白をタブに置換


tr/ /\t/;

# 半角のパーレン(丸括弧)を削除

s/[()]//g;

# nの後ろに半角の数値が一つ以上続き、半角のセミコロンで終わるデータを削除

s/n[0-9]+://g;

# 連続する二つ以上のタブを一つにまとめる

s/\t\t+/\t/g;

# 段落等の区切りとして段落先頭に■を入れてあるデータを対象にN-gram統計を取ってある場合、
# ■を含んだデータが不要な場合は、これを一行丸ごと削除する。
# もし■を含んだデータが必要ならば、この行の先頭に#を付けてコメントアウトする事

s/^.*■.+\n//g;

# 最後尾の[タブ+改行]を[改行]のみに置換

s/\t\n/\n/g;

# 加工済みの行を出力

print;

}
  1. ダウンロードしたスクリプトを、ngmerge.plで融合したデータがあるフォルダに置いておきます。
  2. 実行方法は以下の通りです。
perl kakou.pl < [ngmerge.plで融合したテキスト] > [加工後のテキスト]
  1. コマンドプロンプト上で実行すると、こんな感じです。
C:\ コマンドプロンプト
C:\D:
D:\>cd temp\morogram
D:\temp\morogram>
perl kakou.pl < ngmerge.txt > kakou.txt
  1. 加工後の結果です。

ページ先頭

copyコマンドを使って標題を挿入

  1. あらかじめ、標題を記入したテキストファイルを用意しておきます。
hyoudai.txt - 秀丸
文字列    牛人    狐憑    中島敦    名人伝    文字禍    山月記
 
  1. 次に、コマンドプロンプトを起動し、以下のように入力してください。
C:\ コマンドプロンプト
C:\D:
D:\>cd temp\morogram
D:\temp\morogram>
copy /Y /B /V hyoudai.txt + kakou.txt kekka.txt
  1. 加工後の結果です。最上行に標題が挿入されています。

ページ先頭

batファイルで手順を半自動化

n-gram.bat - 秀丸
rem morogramでN-gramモデルを構築→ngmerge.plに渡すために加工。

morogram-0.7.1w.exe --p --f=1 --g=1,1 gyujin.txt > m01.txt
sortl -W U -t \t +1 -o n01.txt m01.txt

morogram-0.7.1w.exe --p --f=1 --g=1,1 kitsunetsuki.txt > m02.txt
sortl -W U -t \t +1 -o n02.txt m02.txt

morogram-0.7.1w.exe --p --f=1 --g=1,1 kouhuku.txt > m03.txt
sortl -W U -t \t +1 -o n03.txt m03.txt

morogram-0.7.1w.exe --p --f=1 --g=1,1 meijinden.txt > m04.txt
sortl -W U -t \t +1 -o n04.txt m04.txt

morogram-0.7.1w.exe --p --f=1 --g=1,1 mojika.txt > m05.txt
sortl -W U -t \t +1 -o n05.txt m05.txt

morogram-0.7.1w.exe --p --f=1 --g=1,1 sangetsuki.txt > m06.txt
sortl -W U -t \t +1 -o n06.txt m06.txt

morogram-0.7.1w.exe --p --f=1 --g=1,1 nakajima.txt > m07.txt
sortl -W U -t \t +1 -o n07.txt m07.txt

rem ngmerge.plでNGSMモデルを構築。

perl ngmerge.pl n01.txt n02.txt n03.txt n04.txt n05.txt n06.txt n07.txt > m0kekka.txt

rem kakou.plでNGSMデータを加工。

perl kakou.pl < m0kekka.txt > n0kekka.txt

rem 標題を最上行に挿入。最終データを[nakajima.txt]として出力。

copy /Y /B /V hyoudai.txt + n01kekka.txt nakajima.txt

ページ先頭

batファイルは使い回そう

n-gram2.bat - 秀丸
rem 全てのデータを合体する。合体したファイル名を[00.txt]として保存。
rem このファイル名にしておけば、対象データが増減しても、合体ファイル名を変更する必要が無い。

copy /Y /B /V 01.txt + 02.txt + 03.txt + 04.txt + 05.txt + 06.txt 00.txt

rem morogramでN-gramモデルを構築→ngmerge.plに渡すために加工する。

morogram-0.7.1w.exe --p --f=1 --g=1,1 00.txt > m00.txt
sortl -W U -t \t +1 -o n00.txt m00.txt

morogram-0.7.1w.exe --p --f=1 --g=1,1 01.txt > m01.txt
sortl -W U -t \t +1 -o n01.txt m01.txt

morogram-0.7.1w.exe --p --f=1 --g=1,1 02.txt > m02.txt
sortl -W U -t \t +1 -o n02.txt m02.txt

morogram-0.7.1w.exe --p --f=1 --g=1,1 03.txt > m03.txt
sortl -W U -t \t +1 -o n03.txt m03.txt

morogram-0.7.1w.exe --p --f=1 --g=1,1 04.txt > m04.txt
sortl -W U -t \t +1 -o n04.txt m04.txt

morogram-0.7.1w.exe --p --f=1 --g=1,1 05.txt > m05.txt
sortl -W U -t \t +1 -o n05.txt m05.txt

morogram-0.7.1w.exe --p --f=1 --g=1,1 06.txt > m06.txt
sortl -W U -t \t +1 -o n06.txt m06.txt

rem ngmerge.plでNGSMモデルを構築。

perl ngmerge.pl n01.txt n02.txt n03.txt n04.txt n05.txt n06.txt n00.txt > m0kekka.txt

rem kakou.plでNGSMデータを加工。

perl kakou.pl < m0kekka.txt > n0kekka.txt

rem 合体データの共起頻度上位順に並び替え(これは必要に応じて入れる)

sortl -W U -n -r -t \t +7 -o n01kekka.txt n0kekka.txt

rem 標題を最上行に挿入。最終データを[kekka.txt]として出力。

copy /Y /B /V hyoudai.txt + n01kekka.txt kekka.txt

rem 作業仮定で作成したファイルを削除

del n0*.txt
del m0*.txt

ページ先頭


睡人亭謹製