murawaki の雑記

はてなグループから移転してきました

Segmentation of Arabic Text

アラビア語形態素解析する話は以前からあったけど、真面目に読んだことはなかった。最近の研究に、言語非依存な unsupervised word segmentation の手法の実験にアラビア語を使ったものがあって興味がわいてきた。*1でも、言語非依存な手法の論文は、言語非依存な話しかしないので、実際のところ何が起きているのか分からない。そこでちょっとアラビア語について少し調べてみた。以下は付け焼刃の知識。

そもそもアラビア語の segmentation と言われて引っ掛かるのは、アラビア語が二つの特徴を持っているから。

  • 他のセム系言語と同様、貫通接辞 (transfix) を使って屈折変化や派生変化を起こす。
  • 通常のアラビア文字は単母音を表記しない。

unsupervised word segmentation では、通常、文字列的に一致するものを同一の形態素と考え、異形態をモデル化しない。*2アラビア語の場合、貫通接辞のおかげで異形態だらけではないか。そうすると、形態素が順次結合して語を形成するという segmentation の前提が成り立たない疑いが出てくる。

単母音を表記しないという特徴は異形態の問題を緩和しそうだと予想される。しかし、どの程度になるのか分からない。少し言語学の文献をあさってみたが情報がない。言語学の人は文字をあまり取り上げないし、人間ならできる曖昧性の解消を記述的にやるのはそもそも難しいだろう。

とりあえず論文で refer されていたルールベースの解析器を試す。Tim Buckwalter's Arabic Morphological Analyzer。Jon Dehdari という人のサイトから取ってくる。Perl の AraMorph.pl というのが本体で、いくつかの辞書を読み込んで動く。しかし、入力ファイルの encoding が cp1256 でないといけないという謎仕様。代わりに、これを Java に移植した AraMorph を使うことにする。こちらはインターフェースがまともで、UTF-8 を受け付ける。

実際に動かしてみるために、Wikipedia の例を使う。語根 K-T-B は、「書く」に関連する意味を表す。kataba が動詞の三人称男性単数完了で「彼は書いた」という意味になる。ローマ字表記では勝手に母音を補っているけど、アラビア文字では KTB としか書いていない。

反対に、 KTB という表記に対する解釈はどうか。AraMorph によるとさらに2つの候補があるらしい。一つは kutiba 「それは書かれた」で、やはり三人称男性単数完了。もう一つは kutub で、kitAb 「本」の複数形。これは大変だ。segmentation は、AraMorph の解釈では、それぞれ katab + a, kutib + a, kutub。しかし、KTB としか書いていないので、表層的には分割しようがない。unsupervised segmentation では a は存在しないという扱いになるのだろう。

同じ語根 K-T-B でも、YKTB に対しては、AraMorph は 4 個の候補を返す。ya-kotub, yu-kotab, yu-kotib, yu-kotab。ya-/yu- は三人称男性単数未完了の接頭辞。kotub が「書く」、kotab が「書かれる」、kotib が「書きとる」、「kotab」が「書きとられる」の未完了形。表層的な分割は Y-KTB で良いのだろうが、同じ語根でも別の語幹を一緒くたに扱うことになる。

同じ動詞でも表層形が変化する場合はないのか。ネットに転がっている動詞の活用表を見たところ、少なくとも KTB に関しては間に長母音が挟まることはなく、(接頭辞) + 不定の語幹 + (接尾辞) という枠組みで解釈できるようだ。

派生変化では kitAb (KTAB) や kAtib (KATB) のように名詞化すると語根内部に長母音が挿入される場合がある。これらは KTB とは別の形態素扱いされることになる。こうした語幹が、十分な数の token (または type) で出現するなら、この扱いはまあ妥当だろう。未知の語幹が出てきたら、語根を認識したくなるかもしれないが。

文字に関しては、他にもハムザとかシャッダとかいろいろ面倒な話があるけど、ちゃんと分かってはいない。

ここまで調べてきた感じでは、アラビア語の unsupervised segmentation は、見当違いな処理をやっているわけではなさそうだ。もちろん、分割だけができたところで何が嬉しいかと言われれば疑問ではある。

Morpho Challenge 2009アラビア語のデータセットには、フルに記号を付けたコーランが追加されている。このデータに普通の segmentation の手法を適用したら崩壊しそうだ。

追記: 後で見つけた A Comprehensive NLP System for Modern Standard Arabic and Modern Hebrew という論文が NLP 的なアラビア語処理の問題を概観していて参考になる。この論文のおかげで SEMTIC という workshop を知った。

*1:ヘブライ語も扱われていたりするが、今回は扱わない。アラビア文字は少し読めるようになったが、ヘブライ文字はまったく読めない。未だに全部同じ文字に見える。

*2:allomorph を扱う研究がないわけではない。