中国語スペル誤り訂正の新展開

朝起きて「ごちそうさん」を見ていたら「あまちゃん」の総集編がやっていたので思わず見てしまった。前半部分をほとんど見ていなかった(東京編が始まる直前、海女カフェができるあたりから見始めた)ので、こういう話だったのか、といまさらながら思ったりする。

今日は IJCNLP 2013 というアジア圏での最大級の自然言語処理の国際会議に参加するため、名古屋国際会議場に来ている。もっとも、本会議は火曜日から木曜日で、月曜日の今日はチュートリアルとワークショップがあるのだが、自分は水曜日に講義と研究会、木曜日に勉強会と実習があるので、今日だけの参加である(厳密には火曜日も参加できなくはないのだが、火曜日は水曜日の授業の準備をしないといけないので……)。

ワークショップは SIGHAN という中国語処理に関するワークショップに参加。ワークショップ自体それなりに歴史があるものなのだが、毎年 SIGHAN Bakeoff という名前で共通タスクを設定してコンペをしており、今回は 中国語のスペル誤り検出・訂正タスクが対象となっていたので、これを聞きにくることにしたのであった。

お昼休みは xiaodong-l さんとその家族、そして fei-c さんと会場のレストランで食べる。もう少し中国語を話すことができたら中国語で会話も弾んだと思うのだが、もう片言の中国語ですら出てこないので、これは勉強し直さないとダメだなぁ……。首都大は中国からの留学生がよく受験してくるらしく、夏季に出願してくれた留学生が1人いて、受験前に他大学に行くことにしたと連絡をもらったのだが、そのうち受かって来る人がいたら中国語処理も本格的にやることになるかもしれない(とりあえず、冬季を受験するかもしれない人から問い合わせがあった)。

中国語のスペル訂正タスクについて、オーガナイザーの人から説明あり。この共通タスクを提案したのは、中国語のスペル訂正で共通のデータセットを作り、スペル訂正技術を発展させたいからだ、というお話。また、簡単な歴史として、1995年に言語モデルを使った手法、2000年に類似単語検索を使った手法、2011年にノイジーチャネルモデルを使った手法などが提案された、というような説明がある。

評価は自然言語処理でよく使われる precision, recall, F ではなく、false alarm rate を基本的に使うという話だが、これは実用的なシステムを作るとき、ユーザは再現率はどうでもよく(訂正されなかったとしてもそこまで怒らない)、訂正された誤りが本当に誤りだったかどうかが重要だから、誤って訂正をしない割合で評価するのが適当である、という話。また、文単位で誤りが含まれている文かどうか判別するタスクと、誤りが含まれているとしてどこが誤りを含んだ場所なのかを当てるタスクの両方で評価することにした。これは、誤りが含まれていることが分かればあとはどこが誤っているのかを同定するのはそこまで難しいことではないからである、とのこと。まあ、どういうデータセットかということを抜きにすれば、どれもリーズナブルな設定である。

データとして使ってもよいリソースとして「漢字の形に基づく類似文字集合」「漢字の発音に基づく類似文字集合」の2つが与えられ、13-14歳の生徒に中国語で書かせたエッセイがXMLフォーマットで提供され、これのスペル誤りを当てるというタスクである。誤りは複数の教師が人手でチェックしたものなのだが、アノテーションは教師間で一致しておらず、ある教師が誤りとするような表現でも他の教師は誤りとしていなかったり、同じような誤りにタグ付けしたとしても誤りの範囲の指定の仕方が教師によって違ったりするらしい(まあ、そういうのはよくあることだが……)。全部の誤りが訂正されていなかった文や、訂正が一つに決められない文など、問題がありそうなタグはテストデータからはある程度除去したりしたそうだが、訓練データはそこまでチェックしていないし、基本的にはノイジーなタグだと思ってほしい、というお話。

共通タスクに参加した17チームほどはほとんど(ルールベースではなく)統計的手法を用い、リソースとしては Chinese Gigaword Corpus や Sinica Corpus(どちらも中国語処理では有名なコーパス)を使って誤り訂正を行なっているそうだ(統計的手法であっても必ずしも機械学習とは限らない)。このあたりは、まあそうなるだろうなという印象。そもそも訓練データが数千文しか提供されなかったら、パラメータチューニングには使えても、これだけから学習するのはかなりしんどいんじゃないかな。

オーガナイズしてみた感想としては、どういったコーパス(小学生や中学生などの母語話者、中国語を第2言語として学ぶ第2言語学習者、ネイティブスピーカーなど)をターゲットにするか、誤りをどのように定義するか(スペル誤りだけか、文法誤りも含むか、など)、上記の類似文字集合のようなリソースをどう整備するか、そして評価尺度をどうするか、といったようなことが open question としてあるそうだ。これも、英語学習者の誤り検出・訂正とほとんど同じ問題であり、このあたりはお互い交流できるといいのかもな、と思ったりする。

具体的な手法はオーラルとポスターセッションで紹介があったが、オーラルの中では統計的機械翻訳言語モデルを組み合わせて confusion set を作り、最後 SVM で誤り検出をする NAIST(松本研)のシステムがいちばんまともだったような? 他のシステムは相当ヒューリスティックが入っていたり(訓練データを見て、この文字は類似文字検索からは外す、とか、誤り確率を生コーパスからえいやと決めたりとか)、なんでその手法のように実装したのか謎だったり。オーラルの発表ではなかったのだが、ダントツ1位の性能であった上海交通大学

  • Zhongye Jia, Peilu Wang and Hai Zhao. Graph Model for Chinese Spell Checking. SIGHAN 2013.

がシンプルな手法かつやっていることもまっとうに見える。NAIST の手法はやっていることはおかしいとは思わないが、シンプルさでは形態素解析のようなグラフ探索問題として解く上海交通大学の手法には敵わない。もっとも、これを「グラフ」と呼ぶのはちょっと抵抗があるのだが、他の人の使い方を真似したのかな。

SIGHAN の予稿集も見れるので、興味ある人いたらどうぞ。

隣のワークショップが早く終わったようなので、少しだけ [twitter:@jmizuno] くんと [twitter:@yotarow] くんと雑談。NTCIR のオーガナイズがあるらしいが、いろいろと大変そうである。自分はしばらくいまの環境に慣れるだけで精一杯かな……。大学で学生といるのは楽しいから、何年か授業を続けて定着して、自分がオートマトンや言語理論を教える学年がうちの研究室を希望してきてくれるあたりからが本番かなと思うのであった(いま手を抜いているというわけではないけど、研究室で論文を読みながらの解説だと、体系的に勉強するわけではないので、いろいろと抜けがありそう)。

ワークショップ後はACL 2013 で話した我々のポスター発表に興味があるというドイツのポスドクの方と会う約束をしていたので、受付デスクのところで teruaki-o くんらと立ち話をしていたら、無事お会いできて研究のお話をする。名古屋城に行きたいと言うので地下鉄のほうに歩いていくと、別の参加者の人(ベトナム人だが、いまはイタリアの大学で PhD の学生)も合流して名古屋城に。後者の人も話を聞いてみたら ACL でまさにその我々のポスターを聞いていたそうなので、世界は狭いものである。

名城線で市役所前駅に行き、歩いて名古屋城へ(写真は暗かったのでボケてしまったけど)。駅からかなり歩かされるが、3人で話ながら行くとあっという間である。残念ながら(当然かもしれないが)17時を過ぎていたので正門からは入れなかったが、西側からライトアップしたお城が見られるよ、と守衛さんに教えてもらったので、結局お堀を一周してしまった。1時間半くらいかかったので、当初夕食を一緒に食べようかと思っていたのだが、別れて帰ることに……。残念。

次日本で大きな国際会議があるのはいつかなぁ。そういえば[http://acl.cs.qc.edu/iwpt2013/:title=IWPT 2013] という構文解析に関する国際会議(かなりレベルは高い)が11月に奈良で開催されるのだが、参加者が集まらずに苦戦しているそうなので、もし近隣で参加してもよいという人がいたら参加してもらえるとありがたいそうである。ちなみに宿泊者が100人以上いると奈良県から懇親会に(?)補助が出るそうなので、宿泊してくれる人が多いとなお嬉しいらしい(100人というのは異なりではなく延べ人数なので、たとえば1人が3泊してくれれば3人にカウントされる)。