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

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

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

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

第17回から、前回の第26回にわたり、UNIX を用いた基本的なコーパス処理の方法を紹介してきました。grep や wc などのコマンドを利用することで、学習者コーパスの分析でよく行われる語数や文の数のカウントが効率よく行えることを説明しました。

学習者コーパスに限ったことではなく、コーパスの分析においては、「テキスト処理」がほぼ必須の作業であると言えます。そして、調査の目的に応じて、不要な情報の削除や分析の効率を上げるための置換といった、データの整形処理を行うことになります。

第17回の記事でも少し触れましたが、幸いなことに、コーパス検索のためのソフトウェアがインターネット上で入手できます。実際のところ、これまでに紹介した処理は、決して楽なものではありませんから、データ処理に不慣れな場合、その過程を飛ばすことのできるソフトウェアは、とても有用なもののように思えます。しかし、その過程を飛ばしてしまったばかりに、コーパス中の不要な情報を削除しないまま総語数をカウントしたり、検索条件の不備があったせいで検索漏れが生じたりするなど、誤った処理結果を導くことになりかねません。

コーパスデータの処理において大事なことは、「処理過程を明らかにすること」です。処理過程が明らかになってさえいえば、仮に間違った処理を行っていても、その誤りに気づいた人がその問題点を指摘し、解決に至ることができます。しかし、その過程を明らかにしない、あるいは、検索ソフトによって、処理過程を「ブラックボックス化」させてしまった場合には、その処理に問題があるかどうかが判断できないため、結果として、算出された数値や分析内容に対する信頼性が揺らいでしまいます。

現在、様々なコーパスが存在しますが、そのデータ形式もまた様々であり、個々のコーパスに応じたデータ処理が求められます。つまり、検索ソフト1つだけでは、しっかりとした調査を行うことは難しいのが現状です。しかし、UNIX のコマンドを使った基本的で汎用性のある処理技術を身につけることで、NICE だけでなく、他のコーパス処理にも応用できるようになり、過程を明らかにしながら調査を進めることができるようになります。これを機に、UNIX のコマンドを使ったコーパスデータの処理を始める方が増え、データ処理に関する情報共有が広くなされることを願っています。

次回は、学習者コーパスの構築方法とその問題点を扱います。


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


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


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


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

2009年 5月 19日 火曜日 筆者: 阪上 辰也

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

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

これまでは、1種類のコマンドを取り上げながら、コーパスデータがどのように処理され、どのような結果が得られるのかを説明してきました。しかし、実際のコーパスデータの処理においては、1つのコマンドだけでなく、複数のコマンドを複数回繰り返すか、それらを組み合わせることが必要になります。

例えば、前回の記事で紹介したように、コーパスに含まれる語彙とその語彙の頻度一覧を作成しようとする場合、「sort コマンド」に加え、「uniq コマンド」を実行する必要があります。もちろん、これら2つのコマンドを使う前に、データの整形をしておかなくてはいけませんから、「grep コマンド」や「tr コマンド」などを予め実行しておく必要もあります。

今回は、語彙とその頻度を求めるため、sort コマンドと uniq コマンドをまとめて実行する例を見てみましょう。まず、1行1単語になっているファイル(nice_all.txt)を準備しておき(参照:第13回の記事第14回の記事)、そのファイルに対して、以下のコマンドを実行します。

sort nice_all.txt | uniq -c | sort -nr [Enter キーを押す]

複数のコマンドを連続して実行する方法は、第21回の記事でも紹介しているのですが、「パイプ」と呼ばれる縦棒の記号「|」を使い、複数のコマンドを1行にまとめて入力します。それぞれのコマンドにより処理結果が引き継がれながら、次のコマンドが実行され、結果的に、複数のコマンドがまとめて実行されることになります。

上記のコマンドでは、まず sort コマンドにより、アルファベット順での語彙の並び換えが行われます。次に、その結果を引き継ぎ、uniq コマンドによって各語彙の頻度が計算されます。この時、頻度を数えるための「c オプション」を忘れないようにしてください。ここまでの処理結果を出力させても頻度は分かるのですが、頻度表では、頻度の高いものから並べておくことが多いので、ここでは、頻度をもとに並び換えを行うために、再度 sort コマンドを実行しています。

なお、sort コマンドに付加されている「n オプション」は、数字を比較して並び換えを行うためのオプションで、「r オプション」は、大きい順に並び替えるためのオプションになります。

もし、この一連の処理の結果をファイルとして保存する場合は、以下のように、ファイル名を指定してからコマンドを実行します。

sort nice_all.txt | uniq -c | sort -nr > freq.txt [Enter キーを押す]

結果のファイルを見ると、「頻度(スペース)単語」という形式で、一覧表が作成されているはずです。処理の手順が考えて、組み合わせるコマンドを決めることで、効率的にコマンドの実行とデータ処理が行えるようにになります。

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


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


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


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

2009年 4月 21日 火曜日 筆者: 阪上 辰也

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

今回は、「uniq コマンド」を紹介します。

コーパスの中には、同じ単語が何度も出現します。これらの頻度を数えて、コーパスの語彙頻度表を作成しようとする場合、今回紹介する「uniq コマンド」が必要になります。その uniq コマンドの機能は、「重複した行を1行にまとめる」ことです。

しかし、まず注意しなければならないのは、重複しているかどうかを確かめる uniq コマンドの条件として、「隣接する行との比較が行われている」という点です。つまり、事前に、前回紹介した sort コマンドを使って、予め並び替えをしておく必要があります。

前回と同様に、1行1単語になっているファイル(nice_all.txt)を準備します(参照:第13回の記事第14回の記事)。そのファイルに対して、まずは、以下のように sort コマンドを実行し、結果を保存しておきます。

sort nice_all.txt > nice_all_sort.txt [Enter キーを押す]

上記のコマンドにより、並び替えられたデータは、nice_all_sort.txt という名で保存されることになります。今度は、このファイルに対して、uniq コマンドを実行します。その際、「c オプション」を加えて実行します。この c オプションを付け加えることで、重複した行がいくつあったのかを数える(「count の c」と覚えておくとよいでしょう)ことができます。つまり、ある単語がコーパス中に何回出現したのか、その単語の頻度を求めることができるようになるわけです。それでは、uniq コマンドに「c オプション」をつけて実行してみましょう。

uniq -c nice_all_sort.txt [Enter キーを押す]

実行されると、各行において、「数字(スペース)単語」という形式で結果が表示されるはずです。この数字が、その単語の頻度ということにあります。

これまで見てきたように、単語頻度一覧表は、1) データを1行1単語に整形する、2) sort コマンドによる並び替えを行う、3) uniq コマンドによる頻度計算を行う、という3つの手順を経て作成されることになります。

次回は、複数のコマンドの組み合わせについて紹介します。


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


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


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

2009年 4月 7日 火曜日 筆者: 阪上 辰也

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

今回は、「sort コマンド」を紹介します。

Microsoft Excel などの表計算ソフトを使っている時に、数字や文字をある条件で並べ替えることがありますが、その並び替えを行うのが、sort コマンドの機能です。

コーパス処理では、ある語句の出現頻度順に並び替えるケース、また、単語をアルファベット順に並び替えるケースにおいて、sort コマンドを利用することになります。今回は、2つのオプションも交えて、sort コマンドの使い方を説明します。

まず、第13回第14回の記事で紹介したように、1行1単語になっているファイルを準備します(当該記事にならい、ファイル名は「nice_all.txt」とします)。そのファイルに対する処理として、以下のようなコマンドを入力し実行します。

sort nice_all.txt [Enter キーを押す]

何もオプションを指定しない状態で sort コマンドを実行した場合、文字列の順序で並び替えが行われます。引用符などの記号類、数字、アルファベットの順で並び替えが行われます。例えば、引用符付きの「”NICE”」、引用符のない「nice」、数字の「1」という3種類の文字列があった場合、オプションなしの状態で sort コマンドを実行すると、「”NICE”, 1, nice」の順で並び替えられることになります。

続けて、「f オプション」をつけて実行してみましょう。

sort -f nice_all.txt [Enter キーを押す]

この「f オプション」により、大文字と小文字を「区別せず」に並び替えることができます。例えば、「NICE」、「Nice」、「nice」の3種類の文字列があった場合、これらは、並び替えの際に同じ文字列として並び替えられることになります。ちなみに、前回の記事で紹介した tr コマンドによって、事前に文字列を小文字に変換してしまうという手もあります(ただし、固有名詞としての NICE と形容詞の nice は区別する必要があります)。

次に、「r オプション」をつけて実行してみましょう。

sort -f nice_all.txt [Enter キーを押す]

この「r オプション」を用いると、逆順に並び替えることができます。アルファベットであれば、z から順に並び替えられることになります。このオプションと、後に紹介します「n オプション」を組み合わせることで、単語の出現頻度の並び替えができるようになります。

次回は、重複した行をまとめる「uniq」コマンドを紹介します。

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


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


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


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

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

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

今回は、新たなコマンドとして「tr コマンド」を紹介します。

これまでに見てきた「grepコマンド」は、検索文字列を含んだ行を抽出するもので、各種オプションを加えることで、複雑でかつ効率的な検索ができることを見てきました。今回取り上げる tr コマンドは、検索文字列の抽出ではなく、文字列の「置換」を行うコマンドです。コーパス処理においては、よく行う置換作業が2つあります。1つは、大文字から小文字への置換、もう1つは空白類の置換です。

まずは、大文字から小文字への置換について見てみましょう。コンピュータは、大文字と小文字で表示されるものを区別して扱う場合があります。例えば、「apple」と「Apple」の場合、片方は大文字を含んでいるため、別の文字列として扱われることになります。もし、コーパス中に含まれる「apple」という単語の頻度を求める際に、大文字を小文字に置換しておかなければ、正確な頻度を求めることができなくなってしまいます。そこで、以下のようなコマンドを実行し、大文字のアルファベットを小文字に置換します。

tr ‘[A-Z]’ ‘[a-z]’ < JPN001.txt [Enter キーを押す](※)

この tr コマンドでは、「何を」置換するかを指定し、その後で「何に」置換するかを指定します。コマンドがうまく実行されていれば、すべての大文字が小文字になって出力されているはずです。上記のコマンドの場合、大文字のアルファベットがあれば([A-Z] と入力することで、A から最後の Z までを指定したことになり、すべての大文字のアルファベットを入力する必要はありません)、対応する小文字に置換せよ(つまり、A なら a に、B なら b に置換する)という処理が行われることになります。それでは、この出力結果を保存しておきましょう。

データの保存には、コマンドの後に「>」を入力し、その後に保存するファイル名(以下の例では、komoji_001.txt)を入力します。なお、「<」の後には、処理するために読み込むファイルの名前を指定します。

tr [A-Z] [a-z] < JPN001.txt > komoji_001.txt [Enter キーを押す](※)

保存されたファイルの内容を表示するには、「cat コマンド」を使用します。このコマンドについては、今後扱う予定ですが、今は、「ファイルの内容を表示するためのコマンド」であると覚えておいてください。「cat komoji_001.txt」と入力して実行すれば、komoji_001.txt のファイルの内容が表示され、大文字が小文字に置換されていることを確認してください。この処理ができていれば、大文字で書かれていた単語も、同じ単語として扱うことができるようになります。

次に、第13回の記事でも扱いましたが、スペースなどの空白類を改行文字に置換する処理について見てみましょう。この処理結果は、単語数を求めたり、語彙一覧表を作成したりするための下処理のあたるもので、よく行う処理です。以下のコマンドを実行し、半角スペースを改行文字(「\n」)に置換します。

tr ‘ ‘ ‘\n’ < JPN001.txt [Enter キーを押す](※)

うまくコマンドが実行されれば、一行につき一単語が表示されて出力されているはずです(本来なら、個人情報や話者記号など、不要な情報を含んでないテキストに対して上記のコマンドを実行する必要があります)。それでは、この出力結果を保存してみましょう。

tr ‘ ‘ ‘\n’ < JPN001.txt > tango_001.txt [Enter キーを押す](※)

ここでは、tango_001.txt という名前で保存していますので、内容を確認するには、「cat tango_001.txt」と入力して実行します。すると、一行につき一単語が表示されるように処理された結果を確認することができます。これを、NICE 全体のデータに対して実行し、今後紹介する数種類のコマンドを加えて実行すれば、一瞬で語彙頻度表を作成することが出来るようになります。

次回は、さらにまた新しいコマンドを紹介します。


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


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


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


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

2009年 3月 10日 火曜日 筆者: 阪上 辰也

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

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

紹介している「grep」コマンドは、検索した文字列を含む行を表示させることが主な機能です。これまでに、行数をカウントする「c オプション」と、大文字と小文字を区別せずに検索できる「i オプション」、利用できる正規表現の種類を増やす「E オプション」の3つを紹介してきました。今回は、前回の2つのオプションの復習を交えながら、新たに2つのオプションを紹介します。

まずは、指定した条件に該当”しない”行を出力させる「v オプション」です。つまり、このオプションをつけることで、不要な行を取り除くことができるようになります。ここで、具体例として、NICE の学習者の書いた作文とその添削文だけを抽出するケースを見てましょう。

NICE の各データの冒頭部分には、書いた人に関する個人情報(属性)が含まれています。個人情報を記録した行頭には、それが記録されていることを示すために、「@」がつけられています。これらの個人情報の取り除いて、学習者の書いた作文とその添削文だけを出力させる(正確には、@で始まる行以外を出力させていることになります)には、以下のコマンドを実行することになります。

grep -v “@” *.txt [Enter キーを押す](※)

上記のコマンドを実行すれば、「@」を”含まない”行が出力されるはずです。しかし、このとき、コメント行の「%COM」という行が残っていますので、この行も取り除き、「*JPN」と「%NTV」の行だけが表示されるようにしましょう。この場合は、以下のコマンドを実行します。

grep -v “@” *.txt | grep -v “%COM” [Enter キーを押す](※)

grep コマンドを連続して実行するには、「パイプ」と呼ばれる縦棒の記号「|」を挿入し、続けて新たなコマンドを入力します。始めに入力したコマンドの実行結果が、その後に続くコマンドに引き継がれています。上記のコマンドでは、最初のコマンドで、「@」を含まない行が出力されており(このときは、まだ「%COM」を含む行は出力されています)、その出力結果を利用しながら、次のコマンドにより、「%COM」を含まない行が出力されることになります。結果として、「*JPN」と「%NTV」の行だけが表示されることになります。このように、「v オプション」を利用することで、複数の行を出力させることが可能になります。

今回2つめのコマンドは、「A オプション」です。grep コマンドは、基本的に、1行だけを出力することになりますが、A オプションを利用することで、複数行の出力が可能になります。早速、実例として、以下のコマンドを入力し、実行してください。

grep -A1 “*JPN” *.txt [Enter キーを押す](※)

実行すると、「*JPN」と「%NTV」の行が表示されることになります。「A オプション」とその後に任意の数字を指定することで、指定した行に加えて、指定した数字分の行を出力させることができます。この場合、Aの直後に1を指定していますから、「*JPN」を含む行プラス1行を出力させることになり、結果として、「%NTV」の行も同時に出力されることになります。

今回紹介した2つのオプションにより、結果的には、どちらのオプションでも、学習者の書いた作文(「*JPN」の行)とその添削文(「%NTV」の行)だけを出力させることができました。このことから、同じ結果を出すために、方法が1つに限られるわけではないことが分かります。これまでに紹介した grep コマンドの各種コマンドを振り返り、いろいろなデータ抽出方法を試してみてください。

今回で「grep」コマンドの話を終えて、次回からは、また新たなコマンドを紹介します。


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


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


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


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


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


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

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

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

今回は、前回紹介した「grep」コマンドの発展的な使い方を紹介します。

簡単に復習しておきますと、grep コマンドを使うことで、ある(複数の)ファイルを対象として、検索した文字列を含む行を表示させることができます。この grep コマンドには、複数の「オプション」が存在し、そのオプションを利用すると、より高度なデータ処理ができるようになります。今回は、2つのオプションを紹介します。

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

grep -c “I think” JPN001.txt [Enter キーを押す](※)

結果として、コマンドを入力した次の行に、3 という数値が表示されているはずです。つまり、JPN001.txt の中には、「I think」というフレーズが3回出現していたということを示しています。

今度は、1つのファイルだけでなく、全ファイルを対象に行うと、各ファイルに含まれる「I think」の出現数を数えることができます。以下のコマンドを入力してください。

grep -c “I think” *.txt [Enter キーを押す]

Enter キーを押すとすぐ、JPN001.txt:3、JPN002.txt:3、JPN003.txt:1、というように、各ファイルごとの出現数が表示されます。このように「c オプション」を利用することで、コーパス中に現れる表現の頻度を簡単に数えることができます。

次のオプションは、大文字と小文字を区別せずに検索できる「i オプション」です。例えば、大文字と小文字を区別せずに,「it」をまとめて検索する場合は、以下のようにコマンドを入力することになります。

grep -i ” it ” *.txt [Enter キーを押す](it の前後に、半角スペースを入れてください。)

検索結果が一気に表示されますが、小文字の「it」はもちろんのこと、文頭にある「It」もヒットしていることを確認してください。ちなみに、オプションは、複数のものをまとめて指定することができます。例えば、以下のように、c オプションと i オプションをまとめて指定することで、「it」が各ファイルにどれだけ含まれているかを確認することができます。

grep -ic ” it ” *.txt [Enter キーを押す](it の前後に、半角スペースを入れてください。)

Enter キーを押すとすぐに、JPN001.txt:17、JPN002.txt:3、JPN003.txt:3、というように各ファイルに含まれる「it」の頻度が表示されます。

なお、検索文字列として「it」という短い文字列を指定した場合、「i と t が並んでいるもの」が検索結果として表示されるだけです(つまり、コンピュータは、「it」が代名詞であると理解して、その単語を検索してくれるわけではありません)。さきほど、it の前後に半角スペースを入れたのは、「with」や「Italy」などのように、単語中に it を含むものが結果に混ざらないようにするための対策でした。ただし、この場合、「it’s」 のような縮約系を含んだ表現はヒットしないため、実際には、複数回検索を繰り返すなど、慎重に検索作業を進める必要があります。

次回も、「grep」コマンドのオプションを使ったデータ処理方法を紹介します。

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


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


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


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

2009年 1月 27日 火曜日 筆者: 阪上 辰也

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

まず、簡単にLinuxのインストール方法を紹介します。

作業環境として、Windows マシンを利用されている方が多いかと思いますので、ここでは、Windows を起動している状態で、同時に Linux を起動するための方法を簡単に説明します。必要なものは、Linux という OS そのものと、Windows 上で Linux を起動させるためのソフトウェアの2つです。

Linux も、その Linux を動作させるためのソフトウェアも、無償で利用できるものがありますので、それらをダウンロードして利用します。インストール方法については、Web上に多数情報があります。一例として、Ubuntu という名前の Linux を、VMware Player というソフトを使って動作させるまでの過程を説明したページにリンクしておきますので、参考にしてください(インストール前には、データのバックアップ作業をお忘れなく)。なお、Mac OS X の場合は、OS の基礎部分が UNIX ですので、特別なソフトをインストールする必要はなく、すぐに UNIX 環境で作業をすることができます。

ここからは、UNIX の利用環境が整っている前提で話を進めます。筆者の環境は、Mac OS X (10.5.6) ですので、その環境下での操作法を説明しますが、Linux のような他の UNIX システムでも、同様の操作が可能なはずです。

UNIX を使ったデータ処理では、「ターミナル」というソフトを使います。Mac OS X の場合、「アプリケーション」フォルダを開き、「Utilities」フォルダー内にある「ターミナル」アイコンをダブルクリックすると、ソフトが起動し、以下のようなウィンドウが現れます。この「ターミナル」の画面に、さまざまなコマンドを入力し、データ処理を行うことになります。

Windows の操作法と最も異なるのは、「コマンドを”文字”で入力する」点です。この点がとても難解に思えて手を出せないという方もいるようですが、コーパス処理に必要なコマンドは、およそ20個程度です。この連載の中でも説明していきます。今回は、最も手軽な検索手法として、サクラエディタでも利用した「Grep」機能を持つ「grep」コマンドを紹介します。grep コマンドは、「指定された文字列を含む行を表示する」というコマンドです。

まずは、NICE のデータがある場所まで移動します。そのために、ターミナルの画面に

cd Desktop/nice_ver1_0/nns

と入力して [return] キーを押します。UNIX では、フォルダ(=ディレクトリとも言います)への移動にもコマンドが必要になります。この時に使うのが、「cd」というコマンドです。これは、「Change Directory」に由来していて、ディレクトリの移動時に使うコマンドです。

上記のコマンドを入力すると、デスクトップ上にある nice_1_0 という NICE のフォルダへ移動し、さらに、その中にある「nns」フォルダの中へ移動したことになります。Windows であれば、フォルダをダブルクリックして、見た目にもフォルダを開いている感覚が得られますが、UNIX では、現在位置を知らせる文字情報しか表示されませんので、この無機質さに慣れるのには、少し時間がかかるかもしれません。

学習者のデータが入った「nns」フォルダに移動することができたら、今度は、

grep “I think” *.txt

とターミナルの画面に入力して [return] キーを押します。「grep」コマンドを使い、「I think」という表現を検索する個アンドです。最後の「*.txt」は、拡張子が TXT になっているものを検索対象にする、という意味です。すると、「I think」が含まれた行が一気に表示されるはずです。一連の操作の模様は、こちらの動画を参照してください。

次回も、「grep」コマンドを使ったデータ処理方法を紹介します。


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


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


次のページ »