第4回:語の頻度を求めるために

  • 母集団と標本の違いを知ること
  • 標本抽出の方法、特に無作為抽出法について知ること
  • 乱数を使って、無作為抽出をできるようにすること
  • 無作為抽出や層別の利点・問題点を把握すること
  • 異なり語数と延べ語数の違いを理解すること
  • 何をもって同語とみなすかについて、様々な基準を設定できること
  • ある語を原形に戻す方法にどのようなものがあるかを知ること

コーパスという形で言語データを扱うとき、最も基本的な手段となるのが語の頻度の数え上げです。数え上げるというと、単純なことのように聞こえるかもしれません。しかし、それでも、どんな方法でデータを抽出するのか、どういう基準で数え上げるのか、ということを考える必要があります。ここでは、特に標本の抽出方法と、何をもって語と認定するかという問題について考えていきたいと思います。

標本抽出

コーパスというのは、言語のごく一部を取り出してきたものに過ぎません。取り出す方法が違えば、結果も変わってきますので、取り出す方法を考えることは重要です。ここでは、どのように取り出しているかを考えるための基礎知識として、まず標本抽出の手法を紹介したいと思います。

母集団と標本

母集団 (population) は、端的に言えば、知りたいもの全体のことです。これに対して、母集団の一部を取り出してきたものを標本 (sample) と呼びます。また、標本を取り出すことを標本抽出 (sampling)と言います。

標本の大きさ (sample size)は、一般にnで表します。例えば、実験の被験者が25人いた場合、 n = 25 のように表します。一般的に標本は大きい方が母集団に近い結果が出やすいのですが、標本を大きくするには時間・金銭的なコストがかかるので、むやみに大きくすればよいというものではありません。

母集団におけるパラメータ(平均や分散など)は、標本におけるパラメータ(平均や分散など)と異なるということに注意する必要があります。逆に言うと、標本で何かが成り立ったとしても、母集団で同じことが成り立つとは限らないということになります。実際の研究では、標本におけるパラメータをそのまま何も考えずに母集団のパラメータと同一視してしまいがちですが、こういった考えに陥らないようにしたいものです。なお、一般的に、統計学においては、母集団におけるパラメータはギリシャ文字で、標本におけるパラメータはローマ字で表されます。

無作為抽出

無作為抽出 (random sampling) は、端的に言えば、データを偏りの無いようにでたらめに取り出すことです。単純に言えば、母集団の各要素に対して番号を付け、生成された乱数の番号に当たるものだけ取り出す手法です。なお、乱数の作り方については、後で詳しく説明します。

基本的に、無作為抽出は望ましい標本抽出法です。しかし、完全に無作為に抽出することが困難な場合もあります。基本的に、無作為抽出を行うためには、母集団全体のリストが存在しなくてはなりません。例えば、英語母語話者の発音状況を調べたいとしましょう。この場合、母集団となるのは、全ての英語母語話者です。この母集団に対して無作為抽出を行うには、地球上全ての英語母語話者を網羅した名簿を用意する必要があります。こういった名簿を用意するのは不可能でしょう。結局、現実的に無作為抽出が行えないという場合も出てくるのです。

層別

集団の状況がある程度分かっている場合、母集団をいくつかのグループに分けて、そのグループから無作為抽出をすることもできます。このような抽出方法を層別抽出 (stratified sampling) あるいは層化抽出と言います。例えば、母集団で男性が6000人で女性が4000人いるということが分かっている場合、男性から60人、女性から40人無作為抽出をするということができるのです。なお、層別抽出を行うことを単に「層別を行う」と言うこともあります。

系統抽出

母集団の個々に番号をつけた名簿を用意し、ある番号から等間隔にデータを抽出することで標本を作ることがあります。この手法を系統抽出 (systematic sampling) あるいは等間隔抽出と言います。系統抽出では、最初に乱数を発生させ、その数に対応する番号のデータを起点とし、それから一定の数をへだてたものを抽出していきます。例えば、245番のデータが起点となったとき、30個ごとに抽出する場合、275番、305番、335番……といった要領で抽出していくのです。(文責:れもん)

乱数と疑似乱数

乱数とは何か?

乱数とは、ランダムに生成される数のことです。すなわち、新たに得られる数xn+1が、それまでの数列x1~xnから予測できないという性質を持った数列に与する数のことです。(この数列を乱数列という。)例えば00100100100...という数列は周期を持っており次の数が予測できてしましますので、これは乱数列ではありませんが、サイコロを振って出てきた目を順に並べた数列は乱数列です。次に出てくる数はそれまで出てきた数からは予測できないためです。

この乱数には、その乱数がどのような分布に従うかによって一様乱数、正規乱数といったものがあります。一様乱数は、一様分布に従う乱数で、正規乱数は正規分布に従う乱数です。

シード

疑似乱数をつくるために最初に与えられた数値のことをシードといいます。シードが同じとき同じ擬似乱数列が生じてしましますから、シードを固定しないように工夫して乱数をつくることが重要です。

コンピュータと乱数

このような乱数は無作為抽出のようなサンプリングの際に偏りをなくすため必要で、それゆえ、乱数をコンピュータで作り上げる研究が積み重ねられてきました。頼もしいことに、最近では、実際にはある一定の手続きを経て生成されるけれども近似的に乱数とみなすことのできる擬似乱数が、簡単に生み出せるようになりましたし、ランダム性を持つ物理現象をキャッチするとことで乱数をつくり、特殊なハードウェアを使って真の乱数(擬似乱数ではなく)を生むことができるようになりました。

なお、身近なところでは、例えば、Rではrnuif関数で一様乱数の擬似乱数列を、sample関数で一様分布に沿った整数列を作成することができます。またexcelではrand関数で、[0,1)の乱数を作成することができます。しかしrand関数については「非常に長い乱数列を生成する必要があり、RANDの使用回数が非常に多いユーザーは、Excel 2003 の新しいジェネレータを使用する方が賢明」であり、「その他のユーザーは、以前のバージョンの Excel のRANDを使用しても差し支え」がない、とMicrosoftのサポートサイトにその擬似性に関する注意が記載されていますから、使用する際には留意しておきましょう。(文責:らあめん)

語の認定

言語データを処理する際は語というものが基本的な単位になってきますが、何を持って語とするのかということを定義するのはそう簡単なことではありません。

たとえば、英語であれば単語ごとに分かち書きがしてありますから、語を数えるのは簡単だと思われるかもしれません。しかし、たとえば New Yorkといったような複合語になっている地名のようなものは、形として2単語で書かれてはいるものの、本来の語の意味としてはNewという語の意味もYorkという語の意味も失われているため、このような場合のように2語がまとまった固有名詞として扱うのが適当な場合もあります。

一方、分かち書きをしない日本語では、まず並んだ文字列から単語境界となりうる場所を見つけなければなりません。例えば日本語で「私はカレーうどんが食べたい」という文は英語のように語という単位で空白をあけながら書くことはないので、ここから「私」と「は」の間にあるような単語境界を見つける作業がまず必要になります。日本語でも英語と同じように複合語をどう語として認定するかという問題ももちろんありますが(例:カレーうどん)、それに加えて数多くの形態素をどこまで語として認定するのか、ということについても考えなくてはいけません。例えば、「食べたい」は一つの語とみなすべきか、「食べ」と「たい」に分けたほうがいいのかということを考える必要があります。

こうして数えた語の数え方にも注意しなければいけない点があります。まず語の数え方には大きく分けて2種類あり、語の数を種類を問わず数えて行くのが延べ語数(token frequency)であり、同じ種類のものが出てきたら1回と数えるのが異なり語数(type frequency)と呼ばれます。目的によってどちらの数え方を使うか、よく考えなければなりません。

さらに、異なり語数を数えようとした場合、どこからどこまでを同じ種類と見なすことが出来るか、ということを決めることも重要になってきます。1つの基本的な指針として使えるのは、一つの単語に派生形態素がついたものは異種の単語とみなし、屈折形態素がついたものは同種の単語と見なす、という方法です。派生形態素は語の派生に使う形態素で、品詞を変えるものです。例えば、「悲しみ」は「悲しい」という形容詞に派生形態素「み」がついて名詞化したものなので、この基準ではこの二つの単語を違うものとして扱うことになります。一方、屈折形態素は語の屈折に使う形態素なので、品詞は変わりません。例えば、過去を表す形態素を語として扱わなければ、「悲しい」と「悲しかった」は派生形態素がついただけで同じ形容詞なので、同単語と見なすことができます。しかし、用途によっては、単語に派生形態素がついたような単語ももとの単語と同種とみなしたほうが良い場合もあるため、この語の種類の判定もデータ処理の目的によって変わることがあります。

ここであげたように、語の認定は一筋縄でいくものではなく、かつ自分がどのようなデータを集めたいかということによってもやり方が変わってくるものです。そして、この語の認定をうまく行うことがデータ処理を成功させるための最初の1歩ということも出来ます。(文責:うどん)

  • Rなどのソフトウェアで擬似乱数を1000個生成させてみてください。ただし、0から9までの整数だけが出るようにしてください。
  • コンピュータの生成する「乱数」は、なぜ真の乱数とされず、「擬似」乱数と呼ばれるのでしょうか。
  • Rなどのソフトウェアで、10万個程度の擬似乱数を生成することで、円周率を求めてみましょう。
  • 英語の“wait”は、“waiting”や“waits”のように活用します。ありうる活用形を全て検索するためにはどうすれば良いか考えてください。例えば、正規表現を使うなら、どのように表現すれば良いでしょうか。
  • 計算機に活用の規則を教えなくても、辞書に全部書いておけばよいと主張した人がいたとします。例えば、“like”を登録するだけでなく、“likes”や“liked”を登録しておけば、三人称単数形や過去形を導く規則は不要になるという主張です。この人の意見に反論してみてください。