« 耳の文化と目の文化(11)-視覚的な特性(4) - 近刊案内(2009年3月) »

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

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

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

今回は、前回に引き続き、「grep」コマンドのオプションを利用した発展的な使い方を紹介します。

検索した文字列を含む行を表示させるのが、「grep」コマンドの機能でした。前回は、行数をカウントする「c オプション」と、大文字と小文字を区別せずに検索できる「i オプション」の2つを紹介しましたが、今回は、前回の2つのオプションの復習を交えながら、もう1つ新しいオプションを紹介します。

今回紹介するオプションは、多数の正規表現を利用可能にする「E オプション」です。単純に grep コマンドを実行しただけでは、複雑な正規表現を使うことができません。たとえば、動詞の go とその変化形(went と gone)をまとめて検索するというケースを考えてみましょう。正規表現としては、「\b(go|went|gone)\b」と指定することで、3つの表現をまとめてマッチさせることができます。なお、「\b」は、語の境界を示す正規表現です。この「\b」を入れておかないと、ago や good など、目的とは違う表現が混ざってしまいます。

これまでに使用してきたサクラエディタでは、この正規表現を指定するだけで、目的の表現にマッチさせることができますが、grep コマンドを実行する際には、これらの正規表現を入力するしてもマッチさせることはできません。正規表現が使えるようにするために使うのが、「E オプション」です。この E オプションを付けることで、使える正規表現の種類が「拡張」されますので、「Extend の E」と覚えておくとよいでしょう。

それでは、ターミナルを起動し、NICE の学習者の作文データがあるディレクトリ(フォルダ)へと移動した上で、以下のコマンドをターミナルの画面に入力します。なお、オプションは、コマンドと検索文字列の間に、ハイフン付けて入力します。

grep -E “\b(go|went|gone)\b” *.txt [Enter キーを押す](※)

結果として、コマンドを入力した次の行以降から、go とその変化形を含む行が表示されているはずです。試しに、E オプションをつけない状態で grep コマンドを実行しても、何も結果が表示されないということも確認してみてください。厳密には、一言で grep と言っても、複数の種類がありますので、利用しているシステムよって、使えるようになる正規表現は異なります。

ここで、前回の復習もかねて、複数のオプションを同時に指定してみましょう。go とその変化形を対象として、大文字と小文字を区別することなく検索した場合に、各ファイルにどれほどの頻度で出現するかを確かめてみます。それでは、i オプションと c オプションを同時に指定した以下のコマンドを入力してください。

grep -Eic “\b(go|went|gone)\b” *.txt [Enter キーを押す]

Enter キーを押すとすぐ、検索結果として、JPN001.txt:0、JPN002.txt:2、JPN003.txt:0 のように「JPNxxx.txt:数値」という形で、どのファイルに、どれほどの頻度で go とその変化形が出現していたかを確認することができます。

ただし、この検索結果には、母語話者による添削文に含まれる go とその変化形も含まれていますから、学習者が書いた文だけを対象にこのコマンドを実施する必要があります。第10回で紹介した処理を行ってから、上記のコマンドを実行することもできますが、grep コマンドを「連続して実行する」ことによって、より簡単に学習者の文だけを対象にして検索を実行することができます。

次回も、「grep」コマンドのオプションを交えながら、効率的なデータ検索を紹介します。


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


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


※編集部注
当サイト上ではいわゆる全角の引用符が表示されますが、実際の作業ではいずれもいわゆる半角の引用符を入力します。

2009年 2月 24日