Hatena::Grouprekken

murawaki の雑記

2015-08-21

琉球語は虚構

表題は釣り。言語データの可視化について考えていて、ふと思いついたことを試してみた。具体的には、基礎語彙データに主成分分析 (PCA) を適用

問題設定。各言語がバイナリ化された基礎語彙 (010010...) で表現されている。そうすると、言語間の類似度が適当に定義できる。また、適当に clustering すれば木が作れる。

問題意識方言の等語線を引いてみたときと同じ。最近 (あるいは少し前まで) の流行は Bayesian な系統推定。みんな年代推定込みの系統樹を見せてくる。しかし、系統樹は重要な情報を落としてしまう。具体的には、言語の相対的な位置があまりわからない。ある言語同士が似ているか似ていないかがわからない。共通祖語までの枝の長さという 1 次元情報によって間接的に推測できるだけ。普通に可視化すれば 2 次元まで使えるから、もっと良い見せ方があるはず。

他の手法として挙がるのは、より古い NeighborNet。bottom-up な clustering をするけど、木としては conflict を起こしている部分を網状に表現する。これはこれで良いのだが、全体的な空間配置にあまり意味がない。

そういうわけで、以前は、さらに古い手法、等語線の重ねあわせを試してみた。地理的に隣接する言語同士の類似度を表示する。現実の 2 次元の地理的空間を使う。もし言語的な類似度が地理的距離と対応していなくても、それがわからない。

今回は PCA を試す。PCA を選んだ当初の動機は不純。生物系の人がとりあえず DNA適用しているのだから、とりあえず言語に適用しても良いのではないかと。*1

もう少し真面目に説明する。言語の相対的な位置付けが 2 次元で表現できる。主成分 (PC) 2 個を使って。1 次元よりも情報が多い。しかも地理的空間ではなく、言語そのものに基づく空間。

御託を並べずにさっさと試せば良いのだが、ひとつ問題がある。基礎語彙データは基本的にバイナリ化 (0/1) されているが、欠損値 (?) がある。もちろん、適当に欠損値を補完する方法は知られている。しかし、せっかく Bayesian な系統推定をやっているのだから、その結果で補完すれば良いことに気付いた。

さらに言うと、距離に基づく clustering と異なり、Bayesian な系統推定は祖語の状態も推定している。せっかくだから、現代語と一緒に祖語も plot すれば良い。系統樹を 2 つの主成分からなる 2 次元空間に写像する。時間情報を落とすかわりに、空間配置を可視化する。

さらに前置き。そもそも過去の状態を確実に推定することはできない。この事実を反映して、Bayesian な系統推定は非常に不安定。通常は、sampling により複数の系統樹を生成し、それらを統合した木を最終的な推定結果として示す。*2この要約を行う際、木のトポロジーと年代だけを採用し、祖語の状態は落としてしまう。PCA を行うには言語の状態が必要だから、これは困る。仕方がないので、複数の sample のなかから系統樹を 1 個適当に選ぶ。一応事後確率が高いのを選んだ。*3

使った基礎語彙データは Lee and Hasegawa (2011) の日本語方言群。選んだ系統樹はこれ。

f:id:murawaki:20150821101020p:image

PCA の結果はこれ。

f:id:murawaki:20150821101021p:image

緑の点が観測データ。右上に言語名を示している。赤が祖語。ROOT にだけラベルを与えている。ノード間の線は系統樹の枝に対応。

ごちゃごちゃしている本土部分を拡大する。拡大するとノードとラベルのずれが目立つけど、補正が面倒だったのでそのまま。

f:id:murawaki:20150821121223p:image

現実の地理にある程度対応している。南北をひっくり返して、上下の端を折り曲げたような形。

PC1 が寄与率 34.6% で圧倒的。残りはどんぐりの背比べ。参考までに PC2, PC3 も示す。

f:id:murawaki:20150821101022p:image

PC1, PC2 の図に戻って、いくつか気付いた点を挙げる。

  • 根が中央に位置し、上代語 (OJ) がその近くに控え、現代語は周辺に分散している。分岐後は別々に変化するという系統樹の仮定がマクロには成り立っているように見える。
  • しかしよく見ると変。ROOT から OJ, MJ (中世語) が分岐したあと、現代本土諸方言共通祖語となる。不思議なことに、この祖語が、PC1 について、ROOT からやたら離れた場所に位置する。PC1, PC2 ともに東京とほぼ重なっている。その後は本土諸方言がぐちゃぐちゃに分岐している。その中でも東北、八丈、九州がやや離れている。こいつらが、PC1 について、ROOT に近い。このような先祖返りは系統樹として不自然。
  • 以前、言語ペアの類似度を測った際は正反対の結果が出てきた。上代語と類似するのは東京北海道山梨滋賀岐阜栃木の順。下位は、佐賀鹿児島秋田青森の順。PC1 では反対に、東北や九州上代語に近いのである。寄与率の低い PC2 以下をかき集めると類似度が逆転するのだろう。
  • この一見矛盾する結果の説明を試みる。本土周縁の言語は、大局 (PC1) 的には上代語と似ているが、データを部分的にしか説明しない変化 (PC2 以下)、おそらくは影響範囲が限定的な変化が大量に起きた結果として、類似度が下がったのだろう。
  • 中心部は、上古語と類似度が高いのに、大局的には似ていない。中心部で起きた変化は比較的少数だけど、その影響が広範囲に及んでいるのだろう。
  • 要するに、周圏論は補足が必要そうである。これまでは単に中央から周縁に変化が広がっていくという側面だけに着目していた。実は、そうした変化は比較的起きにくく、発生頻度と影響範囲は反比例しているのではないか。

最初は小ネタのつもりだったけど、もう少し真面目に調べて論文にまとめても良い気がしてきた。

そろそろ表題を回収する。見ての通り、琉球諸方言は広範囲に散らばっている。本土の密集具合とは対照的。特に、宮古孤立っぷりは印象的である。PC2 の寄与率が PC1 に比べて圧倒的に小さいことを考慮しても。

琉球というまとまりは、私のように比較研究をやっている者にとっては有用であっても、現実に、例えば、危機言語の保存運動をやる場合には無意味。そして、無意味なものを前面に押し出す行為 (例えばこれ) は、本質から目を背けさせるという点で有害ではないか。研究者のエゴとして、研究上重要な言語だから資源を投下して調べるというのならわかる。そうではなく、本気で社会運動をやるのなら、もっと別の戦略の立て方があるはず。その点、『日本の危機言語』は、中身は普通の言語学議論だけど、対象範囲を日本国とする問題設定自体は良かったのではないか。

追記: せっかくなのでアイヌ語でもやってみた。Lee and Hasegawa (2013) は地理位置との同時推定を行っていたが、面倒なので言語データだけで推定。

f:id:murawaki:20150821183836p:image

PC1 の寄与率が脅威の 51.2%。これが北海道と樺太を説明している。宗谷の中間的な性質がきれいに出ている。

PC2 は東西対立を表している。PC3 は北海道北部とその他の対立か。

f:id:murawaki:20150821183837p:image

アイヌ語話者は一度も統一国家を作ったことがないし、文化の中心もなさそう。周圏論には向かない。

さらに Lee (2015) の朝鮮語データでもやってみた。

f:id:murawaki:20150821235954p:image

さすがに朝鮮語だとデータが貧弱。中期朝鮮語と共通祖語がほぼ同じ。全体的にはきれいに発散している。PC1 は南北対立。

PC3 は東西対立っぽいが、PC2 が謎。

f:id:murawaki:20150821235955p:image

再び PC1-2 を見ると、済州道と江原道で PC1 の揺り戻しが起きている。比較のために中期朝鮮語との類似度を見る。

MiddleKorean1.000000
Gyeonggi0.928030
SouthChungcheong0.905522
NorthJeolla0.897841
NorthChungcheong0.893832
Hwanghae0.887943
Gangwon0.873326
NorthHamgyong0.862525
SouthJeolla0.861767
NorthGyeongsang0.860565
SouthPyongan0.856555
SouthGyeongsang0.841726
Jeju0.837105
NorthPyongan0.806474
SouthHamgyong0.799388

PC1 上では中期朝鮮語に一番近い済州が類似度では下から 3 番目。済州島で起きた改新は影響力が全然ない。

2015 年 8 月 25 日追記: せっかく Bayesian な系統推定をやっていることだし、推定の不確実性を可視化してみた。具体的には、内部ノードの状態推定は不安定なので、その不安定さを分布で示す。手順は以下の通り。

  • これまで通り、sample を 1 個選ぶ。
  • ノードだけを抽出し、PCA に適用。これまでは内部ノードも含む全ノードを PCA にかけていた。
  • これまで捨ててきた sample 集合から、指定された内部ノード (ROOT, 北海道祖語等) を抽出し、2 次元の PC 空間に写像
  • 2 次元の PC 空間に写像された sample 群からカーネル密度推定 (一種の平滑化) で分布を推定
  • この確率密度関数と葉ノードを plot

まずは琉球祖語。PCA の特異値分解に葉ノードだけを使うと、PC1 の寄与率が少し下がった。

f:id:murawaki:20150825105754p:image

次は ROOT (日琉球祖語)。基本的には上代語に近いが、たまに琉球よりに推定されることがある。

f:id:murawaki:20150825105753p:image

アイヌ語の北海道祖語。

f:id:murawaki:20150825105751p:image

アイヌ祖語。

f:id:murawaki:20150825105752p:image

*1:もちろん DNA と言語ではデータの規模が違う。最近は genome-wide SNP を使うから、要素数が 10 万のオーダ。対する基礎語彙は 100 のオーダ。おまけに、DNA個体ごと。日本人という集団を 100 人の個体で表現できる。言語では集団を 1 個のデータで代表させるしかない。まあ、PCA を使う分にはこうした違いは問題にならない。

*2:よく使われるのは、maximum clade credibility tree。

*3:BEAST が生成した系統樹群から 1 個木を抽出して PCA にかけるまでのスクリプトを github に置いておいた。