一応進んではいます。11月中に終わらせたかったんですがムリだった。
感覚的には 7割くらいでしょうか。
anthy.dep のサイズは現時点ですでに 100KB を超えてますが…。
この文章もそれを使って書いてますが、まぁ、まだ色々足らないのでつっかえつっかえです。
ただ、実際作ってみて色々問題点が見えてきたのと、「こういう仕組みにすればもしかしたらいけるかもしれん」というのを思いついたので、モチベーション的にはかなり下がってます。辞書の方をほったらかしてるのも気になってるし。
ここまでやったので、一応最後まで終わらせようとは思ってますが、そのまま公開せずにお蔵入させるかもしれません。
副産物としては、助詞や助動詞について色々勉強したのと、辞書の方でどういう風に登録すればうまく出せるかが分かってきた、ということでしょうか。「辞書いじってる人間が depgraph もやった方がいいんじゃないか」という事前の予想は外れてなかったどころか、辞書をメンテする上でも有益だということが実際に分かりました。depgraph は要するに「付属語辞書」でもあるわけなんで、当たり前と言えば当たり前ですが、これらはセットで扱わないとダメですね。
これは言い換えると、今の辞書の方にも見直さなければいけない部分がある、ってことです。今までよく分からんまま「まあいいや」で適当にやってきた部分がはっきりしてきたので。
まだ作業が終わったわけではないですが、結論↓。
やっぱ SKK が最強
(【追記】別にスラドのこれを読んだから言ってるわけじゃなく、辞書いじってる時からずっと思ってたことなんですが、タイミングは確かに最悪…。一応弁明。)
すべてにおいてそうだというわけではなく、「変換精度の高さ」と「メンテの容易さ」という点でですが。前者は必須条件ですが、コミュニティ開発のオープンソースアプリでは後者の条件もまた必須と言っていいくらい重要なわけで、プログラムのことは分かりませんが、少なくとも辞書に関しては、文法的な専門知識をまったく必要としない SKK の辞書はやる気さえあれば誰でもいじれるので、どう頑張っても勝ち目はないです。そもそも depgraph 自体必要ないし。
…と言っても、SKK に乗り換える気も ATOK 買う気もさらさらないんですけどね。
SKK は要するに連文節変換の変換エンジンがやってることをユーザにやらせてるわけで、ユーザ側の負担が大きすぎる、対して、区切りも何もないベタな読みしか情報を与えずに、残りのすべてを辞書とプログラムにやらせる今主流の連文節変換は、逆にアプリ側の負担が大きすぎる、というわけで、何とか SKK と連文節変換の中間くらいのもんができんかなと、例によって頭ん中で妄想を繰り広げてます。
先日読んだ本によれば、昔のワープロには「文節キー」というのがあって、読みと一緒に文節区切りもユーザが指定してたみたいですが、その辺が落ち着きどころなんじゃないかという気がしてます。全然新しい考えじゃないですが。
…最初から文節区切りをユーザが指定するって、フロントエンド側の変更だけで今の Anthy でもできるんじゃないですかね? 今だって、変換がおかしかったら区切り直してるわけで、その過程でユーザが指定した区切り位置を Anthy に伝えてるんだとすれば、最初から区切り位置を伝えることもできそうな気がしますが。違うのかな? まあ、分かりません。
【追記】12/08
む、怒られてしまった…
一応言い訳をさせて頂くと、depgraph の作業にうんざりしたのでちょっと愚痴りたかっただけなんです。ちゃんとした議論をしようとしたわけではなく…。ですが、やる気をそいでしまったのなら申し訳なかったです。そこまでは思い至りませんでした。
ちなみに、文節区切りをユーザが指定するので思い描いていたのは、「常にユーザがすべての区切りを指定する」というものではなく、
1. 基本的には区切りは変換エンジンが推定する(今と同じ)
2. ただし、ユーザが明示的に区切りを指定した場合は、それに合致する区切りを持ったパターンのみを返す
というものです。
変換エンジンを使っているとそのうち「こういう場合はうまく変換できないようだ」というのが何となく分かってきますが、「なら先回りして、予めそういうところだけ区切りを指定してやって、文節区切りをミスらないようにしてやろう」という考えです。
区切りを指定するのに使うキーは SPACE がいいんじゃないかと思ってます。
例えば、「ほしいものがあって」が「干し芋のがあって」になり、「どうも『もの』の前では区切りを入れた方が良さそうだ」と思ったとすると、
hosii[s]monogaatte[s][s] (かな入力なら「ほしい[s]ものがあって[s][s]」)
と入力します。[s]が SPACE キーを押すところで、最後に 2回押しているところで変換します。
文節区切りに SPACE キーを使うと「文字としてのスペースをどうやって入力するのか」が問題になりますが、「プリエディットが空の状態で SPACE キーが押されたら空白を commit する」という風にしておけば問題ないんじゃないかと。
この辺の話も含めて、後でまた書くかもしれません。今日はちょっと他に書きたいことがあるので。
【関連する記事】