« 人名用漢字以外を子供の名づけに使うには (9) - 『三省堂国語辞典』のすすめ その70 »

UNIX によるコーパスデータの処理 (10)

2009年 6月 2日 火曜日 筆者: 阪上 辰也

学習者コーパス入門 第26回

今回も、先回に引き続き、複数のコマンドの組み合わせについて紹介します。

UNIX のコマンドは、これまで見てきたように、その1つ1つは、単純な機能しかありません。例えば、sort コマンドなら、並び替えるだけですし、uniq コマンドなら、重複行をまとめるだけです。それぞれのコマンドだけでは、行える作業は限られてしまいますが、簡単なコマンドを組み合わせることで、複雑な処理を実行することができるようになります。裏を返せば、複雑な処理というのは、実は、単純な機能の組み合わせの結果とも言えます。

前回の記事でも少し触れましたが、語彙頻度一覧表を作るには、ヘッダー情報などを除いて産出された作文を整形し、1行1単語の状態にして、並び換えおよび重複行の削除を行うという一連の作業が必要です。

今回は、産出された作文のみのデータがあるという前提で、一気に語彙頻度表を作成できるコマンドの組み合わせを紹介します。前回は、語彙とその頻度求めるため、sort コマンドと uniq コマンドを利用しましたが、それらに加えて、cat コマンドと、tr コマンドも使用します。学習者の作文だけを抽出したデータ(nice_nns_all.txt)を準備し、そのファイルに対して、以下のコマンドを実行します(学習者の作文だけを抽出する手順は、第10回の記事を参照してください)。

cat nice_nns_all.txt | tr ‘ ‘ ‘\n’ | sort | uniq -c | sort -nr [Enter キーを押す]

第21回の記事でも紹介したように、「パイプ」を使い、今回は5つのコマンドを1行にまとめて実行しています。それぞれのコマンドにより処理結果が引き継がれながら、次のコマンドが実行され、結果的に、複数のコマンドがまとめて実行されることになります。

上記のコマンドでは、まず cat コマンドにより、ファイルの中身を表示させ(実際には、次の tr コマンドに引き継がれるため、表示されることはありません)、その表示内容を次のコマンド、つまり、tr コマンドで利用できるようにします。tr コマンドでは、引き継がれたデータに対し、「スペースがあったら改行に置換する」という処理を行っています。ここまでで、1行1単語の状態に整形されていることになります。その後のコマンドは、前回と同様の処理ですので、詳しい説明は割愛します。なお、この一連の処理の結果をファイルに保存する場合は、以下のように、ファイル名を指定してからコマンドを実行します。

cat nice_nns_all.txt | tr ‘ ‘ ‘\n’ | sort | uniq -c | sort -nr > freq_kekka.txt [Enter キーを押す]

今回は、5つのコマンドが組み合わさっていますが、これまで個別に見てきたものを組み合わせたであるということを知っていれば、複雑に見えることはないだろうと思います。また、今回紹介したコマンドの組み合わせは、NICE 以外での英語コーパスでも利用可能なものです。

次回は、UNIX によるコーパスデータの処理についてのまとめです。


▼お知らせ
2008年10月4日に、学習者コーパス「NICE」の正式版を公開しました。2009年4月9日にはバージョンアップを行い、ver. 1.1 を公開しました。無償で利用可能で、特別な手続きは必要ありませんので、ぜひ研究調査にご利用ください。詳しくは、こちらのサイトをご覧ください。


■筆者プロフィール
阪上辰也(さかうえ・たつや)
名古屋大学大学院 国際開発研究科 特任助教。
専門は、コンピュータを利用した外国語教育。
ウェブサイトは、sakauetatsuya.net

2009年 6月 2日