Yusuke TABATA
yusuk****@w5*****
2006年 1月 15日 (日) 13:23:17 JST
田畑です。 何人かの人と変換エンジンのアルゴリズムについて議論した経験から、 多くの人が想定している変換エンジンのアルゴリズムのパターンが 分類できるような気がしたので書いてみます。 ベースとする考え方は次の4パターンがあるように思います。 (a)ヒューリスティクス (b)確率モデル (c)機械学習のモデル (d)認知論のモデル 本当は僕らの限られた開発リソースでどうやって開発を進めると効率が 良いかを議論したいのですが、以下の説明では工学的・理論的な価値や 意味は基本的に無視している上にレイヤーはバラバラです。 #性格占いのノリでお読みください (a)ヒューリスティクス 一口にヒューリスティクスといっても色々とあるのですが、 変換エンジンで語られるキーワードとしては、「n文節最長一致」 「最小コスト法」なんてのがあります。80年代から90年代前半までは 多くの変換エンジンが実際にこれらの手法で作られていたようですが、 今時は(b)の確率モデルが主流だと言われています。 とは言っても、昔のわかりやすい説明を好む(orそれしか理解できない) 人もそれなりにいるようです。 「最小コスト法」を言葉どおり解釈すると、検索を行なう手法の全てが 該当してしまいますが、古い資料では接続コストを手動で決定するものの ことを言うようです。 (b)確率モデル 自然言語の分野に限らず、今時の自然科学の理論寄りの教育を受けると これがメインに来ると考えるようになる確率が高いようです ;) 変換エンジン関連のキーワードとして「隠れマルコフモデル(HMM)」 「N-gramモデル」があります。 mana, sumibi, anthyといった最近のフリーな変換エンジンはこの種の モデルをベースとしています。また、変換エンジンに限らず自然言語 関係のツールでも多く使われているということと、教科書や論文が 多数あることにより、議論は割とまともに成立するようです。 (c)機械学習のモデル よく知られている機械学習のモデルとしては、ニューラルネットワークの 逆伝播法などがありますが、変換エンジンについて議論する時はもっと 抽象的に何かを学習してくれるものを想定している場合があるようです。 別の流れとしては、自然言語の研究で最近使われだしたSVM(Support Vector Machine)やCRF(Conditional Random Fields)といったモデルがあります。 日本語で調べ物をすると奈良先端の松本研の関係者に行き着くことが 多いのが面白いです。 #CRF, SVMの類は理解するのに必要な数学的な能力が(b)の #確率モデルよりも高いので辛いです。 (d)認知論のモデル 認知科学そのものは真面目かつ重要な分野ですが、変換エンジンの アルゴリズムについて語られるときはほとんど、変換エンジンと 認知科学両方に対するネタか知ったかぶりのようです。 酒の席で議論するのは面白いのですが、コードを書く立場としては どこをどうやって手を付けたら良いのかわかりません。 なんらかの方法が出てくることもありますが、言ってることが抽象的 すぎたり、解決できる問題の範囲が余りに小さすぎたりといった場合が 多いです。 これらの分類の他に、その考え方をコードとして実際に記述するときの コストおよび性能などを検討した上で言ってるのかというのも重要な ポイントのように思います。 -- -- CHAOS AND CHANCE! Yusuke TABATA