2009年10月22日

さすが、仕事が速い

G-HAL 氏が anthy の用例辞書を作り直してるということなので、どんな感じかと試していたら(2009X19 版)、早くも更新されてた…。

いつもながら仕事が速い、速すぎます…。

というわけで、2009X21 版を落としてきて改めてやり直し。
新用例辞書の ucdict についてはもうちょっといじってから明日書きたいと思いますが、ちょっと気づいた点。
多分
コーパスから自動生成した用例辞書の加点数を、単語の辞書の頻度値の 100相当になるように大幅に下げた。
の影響だと思いますが、変換の傾向が結構変わった。さっき入れ直したばかりで、まだあまり使ってないのでアレですが、以前は文節を短く切ろうとする傾向が強かった(原作からの傾向)のが、長い文節をかなり許容するようになった気がする。ただ、やや緩すぎる(長い文節を許容しすぎる)感じがする。CANDIDATE_SCORE_CORPUS_UDICT というのを調節してみればいいんだろうか?

と思って、「307200」にしてみたが、うーん、微妙。「204800」のままでいいかも。
もうちょっといじってみよう。
posted by vagus at 00:51| 東京 ☁| Comment(4) | TrackBack(0) | 日本語入力 - アプリ | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
毎度どうも。
CANDIDATE_SCORE_UCDIC_RATIO と CANDIDATE_SCORE_CORPUS_UDICT は、候補の並び順を決める時にしか使っていないので文節区切りには影響しません。

文節区切りの傾向が変わったとすると……、考えられるのは、2009X19版にて、連文節の接続情報がコーパスに該当が有る場合と無い場合の、確率の開きを小さくしてみた辺りだと思われます。
そのパラメータを環境設定で変更するオプションは作っていなかったので、2009X22版にて追加しました。CANDIDATE_STRUCT_PROB_WITHOUT_CORPUS と CANDIDATE_STRUCT_PROB_DEFAULT で指定します。
これまでは 0.10 が指定されていて、開きが約10倍になっています。2009X19版以降では 0.50 で約2倍に抑えてみました。開きを大きくするとコーパス重視になり、小さくするとコーパス軽視になります。
Posted by G-HAL at 2009年10月22日 23:08
更新お疲れ様です。
ややこしい作業に詳細な説明、いつもながら頭が下がります。

> CANDIDATE_SCORE_UCDIC_RATIO と CANDIDATE_SCORE_CORPUS_UDICT は、候補の並び順を決める時にしか使っていないので文節区切りには影響しません。

ありゃ、そうでしたか。
http://www.fenix.ne.jp/~G-HAL/whatsnew/20094th.html#2009X13
を読むと、2. で文節を区切って、3. で各文節毎の候補の並び順を決める、とちゃんと書いてありますね。
上記のパラメータは 3. に関わるもので、既に文節は区切られたあと、ということですか。

勝手に、
・先頭候補の選定と文節区切りは相即不離で切り離せないだろう
・従って、辞書中の頻度を変えると文節の区切り方も変わるだろう
と思い込んでいました。

例えば、「|風呂に|入る|」となってる時に、「居る」の頻度を大きく上げる(もしくは「入る」の頻度を大きく下げる)とかして、「はいる」という文節のスコアより「いる」という文節のスコアの方が大きくなれば、「|風呂には|居る|」になるんじゃないか、と。尤も、ビタビになってからの anthy では辞書の頻度をいじっただけではそうならないので、以前「辞書をいじっても anthy は賢くならない」と言ったわけですが、CANDIDATE_SCORE_CORPUS_UDICT ならあるいは…と思った次第です。

# ビタビで文節を区切る時って、どうやって区切るんだろう? 辞書は使わないんだろうか? 読みと品詞コードの部分だけ使う?

2009X22 版、早速使わせて頂きます。
Posted by vagus at 2009年10月23日 01:10
ええと。
(1) 単語辞書(略)から、入力された内容に一致する物を全て探し出す。
(2) (略)文節を区切る。
(3) 各文節毎に、候補の出自(略)連文節学習(略)コーパスの確率情報と辞書の頻度値を使って、各文節毎の候補の並び順を決める。
(4) 用例辞書を使って、各文節毎の候補の並び順を変更する(略)
(5) 連文節学習以外の学習を適用して、各文節毎の候補の並び順を変更する(略)

文節の区切り位置は、(2) で決まり、それ以降は変更されません。
辞書の頻度値は (3) だけで使われています。
CANDIDATE_SCORE_UCDIC_RATIO と CANDIDATE_SCORE_CORPUS_UDICT は (4) だけで使います。

それから。
ビタビでの文節区切りは、コーパスから得た連文節の各品詞等の接続する確率(trans_info)と、文節の文字数から得た確率(ポワソン分布らしい)の、2つの確率だけを使って決めています。
例えば「ふろにはいる」が入力された時の『|ふろ("名詞+格助詞")に("格助")|はい("動詞+終端")る("終端")|』の評価(確率)は、

trans_infoから確率を得る("名詞+格助詞","文頭"+"名詞+格助詞","格助",hash("に"),mw_features(),core_wt()) × ポワソン分布(3文字)
× trans_infoから確率を得る("動詞+終端","名詞+格助詞"+"動詞+終端","終端",hash("る"),mw_features(),core_wt()) × ポワソン分布(2文字)

の様な感じで決まります。
辞書上での頻度値や、変換結果にどの漢字が当てられるのかは、関係しません。
品詞が違うパターンとか区切り位置が違うパターンとかでも同様に計算し、最も確率が高かった文節区切りの位置を採用します。
Posted by G-HAL at 2009年10月23日 22:46
ご説明ありがとうございます。
大分イメージが掴めてきました。
Posted by vagus at 2009年10月24日 23:49
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック