kiyoka.2010_08_10 RSSPLAIN

Related pages: !kiyoka.blog.list kiyoka.2010_11_30 Sekka.FAQ !kiyoka.blog.2010_11 !kiyoka.blog.2010_08
54455555535555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555554445
5

[創作心理][SKK] modeless SKK

4

modeless SKKのプロトタイプの作成中。Sekka:石火(仮名)

4

L0aVzy

5

 

5

曖昧検索の評価

5

プロトタイプといっても、曖昧検索がどれくらい効果的かという実験をしようとしているところ。

5

曖昧検索というのはGoogle検索の『もしかして』機能をイメージしてもらえれば良いかと思う。それをローマ字の綴りに限定したもの。

5

昔からある yc.el や ゆでたまご等の modeless 入力メソッドの弱点は、目視では変換前のローマ字綴り間違いに気づきにくいというところ。

5

例えば、『しぜんげごしょり』なら間違いにきがつきやすいが、『shizengegosyori』では全くどこが抜けたのかわからないだろう。

3

今回の曖昧検索を modeless SKK に適用すれば、上のキーワードでも『自然言語処理』を変換候補にすることが可能だ。

5

 

5

さて、実装だが、SKKのラージ辞書 (SKK-JISYO.L) をローマ字をキーに検索できるようにし、辞書に入っているローマ字と、ユーザー入力のローマ字のJaro-Winkler距離が近い方から列べるとどんな具合いかを見た。

5

結果はなかなか脈ありな感じ。

5

以下に実行結果を載せているけれども、

5

『雰囲気』に対するローマ字クエリとしてfunnikiでもfunikiでも、さらに間違ったfuinkiでも救えていたり、『漢字変換』に対しては kajinhenkan や kanjihekan を救えているのはいいかも。

5

 

5

実験の様子

5

 

5
JaroW()がJaro-Winklerの距離(値域 0.0 ≦ 1.0)
5
閾値 = 0.940000 は JaroWの値での足切り値
5

 

5
$ ./aimai
5
> henkan
5
閾値 = 0.940000  探索件数(1176)
5
----------
5
 JaroW(1.00000) Jaro(1.00000) PairD(1.00000) [henkan]:[変換/返還]
5
 JaroW(0.96667) Jaro(0.94444) PairD(0.88889) [henka]:[変化/返歌]
5
 JaroW(0.95000) Jaro(0.91667) PairD(0.83333) [henkango]:[変換後/返還後]
5
 JaroW(0.95000) Jaro(0.91667) PairD(0.83333) [henkanbu]:[変換部]
5
 JaroW(0.95000) Jaro(0.91667) PairD(0.66667) [henkabun]:[変化分]
5
 JaroW(0.95000) Jaro(0.91667) PairD(0.83333) [henkanji]:[変換時]
5
 JaroW(0.95000) Jaro(0.91667) PairD(0.83333) [henkanki]:[変換器/変換機]
5
 JaroW(0.95000) Jaro(0.91667) PairD(0.66667) [henkaten]:[変化点]
5
 JaroW(0.95000) Jaro(0.91667) PairD(0.66667) [henkouan]:[変更案]
5
> henkann
5
閾値 = 0.940000  探索件数(1176)
5
----------
5
 JaroW(0.97143) Jaro(0.95238) PairD(0.90909) [henkan]:[変換/返還]
5
 JaroW(0.95556) Jaro(0.92593) PairD(0.71429) [henkanten]:[変換点]
5
 JaroW(0.94286) Jaro(0.90476) PairD(0.80000) [henka]:[変化/返歌]
5
 JaroW(0.94000) Jaro(0.90000) PairD(0.66667) [henkantani]:[変換単位]
5
> funiki
5
閾値 = 0.940000  探索件数(2851)
5
----------
5
 JaroW(1.00000) Jaro(1.00000) PairD(1.00000) [funiki]:[雰囲気/氛圍氣;「雰」別字、「囲」「気」旧字]
5
 JaroW(0.97143) Jaro(0.95238) PairD(0.72727) [funinki]:[不人気]
5
 JaroW(0.94167) Jaro(0.91667) PairD(0.66667) [funehiki]:[船引]
5
 JaroW(0.94167) Jaro(0.91667) PairD(0.66667) [funabiki]:[船曳]
5
> funniki
5
閾値 = 0.940000  探索件数(2851)
5
----------
5
 JaroW(0.96667) Jaro(0.95238) PairD(0.90909) [funiki]:[雰囲気/氛圍氣;「雰」別字、「囲」「気」旧字]
5
 JaroW(0.96667) Jaro(0.95238) PairD(0.66667) [funinki]:[不人気]
5
> fuinki
5
閾値 = 0.940000  探索件数(2851)
5
----------
5
 JaroW(0.95556) Jaro(0.94444) PairD(0.40000) [funiki]:[雰囲気/氛圍氣;「雰」別字、「囲」「気」旧字]
5
> tokyo
5
閾値 = 0.940000  探索件数(3795)
5
----------
5
 JaroW(1.00000) Jaro(1.00000) PairD(1.00000) [tokyo]:[トーキョー/東京]
5
 JaroW(0.96667) Jaro(0.94444) PairD(0.88889) [tokyou]:[都響;[略語]東京都交響楽団]
5
 JaroW(0.96111) Jaro(0.94444) PairD(0.66667) [tokiyo]:[時世]
5
 JaroW(0.96111) Jaro(0.94444) PairD(0.88889) [tokkyo]:[特許]
5
 JaroW(0.95333) Jaro(0.93333) PairD(0.57143) [toko]:[床/常]
5
 JaroW(0.94667) Jaro(0.93333) PairD(0.57143) [toyo]:[豊/樋/豐;「豊」の旧字]
5
> toukyouto
5
閾値 = 0.940000  探索件数(3795)
5
----------
5
 JaroW(1.00000) Jaro(1.00000) PairD(1.00000) [toukyouto]:[東京都]
5
 JaroW(0.95556) Jaro(0.92593) PairD(0.75000) [toukyougo]:[東京語]
5
 JaroW(0.95556) Jaro(0.92593) PairD(0.85714) [toukyou]:[東京/東教]
5
 JaroW(0.95000) Jaro(0.91667) PairD(0.84211) [toukyoutomin]:[東京都民]
5
 JaroW(0.95000) Jaro(0.91667) PairD(0.84211) [toukyoutonai]:[東京都内]
5
 JaroW(0.95000) Jaro(0.91667) PairD(0.84211) [toukyoutosyo]:[東京図書]
5
> tokyoto
5
閾値 = 0.940000  探索件数(3795)
5
----------
5
 JaroW(0.94286) Jaro(0.90476) PairD(0.80000) [tokyo]:[トーキョー/東京]
5
 JaroW(0.94074) Jaro(0.92593) PairD(0.57143) [toukyouto]:[東京都]
5
> change
5
閾値 = 0.940000  探索件数(4109)
5
----------
5
 JaroW(1.00000) Jaro(1.00000) PairD(1.00000) [change]:[チェンジ]
5
 JaroW(0.97143) Jaro(0.95238) PairD(0.90909) [changer]:[チェンジャー]
5
 JaroW(0.96667) Jaro(0.94444) PairD(0.88889) [chang]:[チャン/チャング]
5
 JaroW(0.95000) Jaro(0.91667) PairD(0.83333) [changeup]:[チェンジアップ]
5
> chance
5
閾値 = 0.940000  探索件数(4109)
5
----------
5
 JaroW(1.00000) Jaro(1.00000) PairD(1.00000) [chance]:[チャンス]
5
> tokugawaie
5
閾値 = 0.940000  探索件数(3795)
5
----------
5
 JaroW(0.96000) Jaro(0.93333) PairD(0.87500) [tokugawa]:[徳川]
5
 JaroW(0.96000) Jaro(0.93333) PairD(0.77778) [tokugawake]:[徳川家]
5
 JaroW(0.96000) Jaro(0.93333) PairD(0.77778) [tokugawaki]:[徳川期]
5
 JaroW(0.94286) Jaro(0.90476) PairD(0.81818) [tokugawaienari]:[徳川家斉;11th(1787-1837)]
5
 JaroW(0.94286) Jaro(0.90476) PairD(0.81818) [tokugawaienobu]:[徳川家宣;6th(1709-12)]
5
 JaroW(0.94286) Jaro(0.90476) PairD(0.81818) [tokugawaiemitu]:[徳川家光;3rd(1623-51)]
5
 JaroW(0.94286) Jaro(0.90476) PairD(0.81818) [tokugawaietugu]:[徳川家継;7th(1713-16)]
5
 JaroW(0.94286) Jaro(0.90476) PairD(0.81818) [tokugawaietuna]:[徳川家綱;4th(1651-80)]
5
 JaroW(0.94286) Jaro(0.90476) PairD(0.81818) [tokugawaieyasu]:[徳川家康;1st(1603-05)]
5
 JaroW(0.94286) Jaro(0.90476) PairD(0.81818) [tokugawaieharu]:[徳川家治;10th(1760-86)]
5
 JaroW(0.94286) Jaro(0.90476) PairD(0.81818) [tokugawaiesada]:[徳川家定;13th(1853-58)]
5
> gengosyori
5
閾値 = 0.940000  探索件数(1487)
5
----------
5
 JaroW(1.00000) Jaro(1.00000) PairD(1.00000) [gengosyori]:[言語処理]
5
 JaroW(0.95385) Jaro(0.92308) PairD(0.85714) [gengosyorikei]:[言語処理系]
5
> nihongo
5
閾値 = 0.940000  探索件数(2278)
5
----------
5
 JaroW(1.00000) Jaro(1.00000) PairD(1.00000) [nihongo]:[日本語]
5
 JaroW(0.95556) Jaro(0.92593) PairD(0.85714) [nihongoon]:[日本語音]
5
 JaroW(0.95556) Jaro(0.92593) PairD(0.85714) [nihongoka]:[日本語化/日本語可]
5
 JaroW(0.94286) Jaro(0.90476) PairD(0.80000) [nihon]:[日本/二本]
5
 JaroW(0.94286) Jaro(0.90476) PairD(0.83333) [nihonga]:[日本画]
5
 JaroW(0.94286) Jaro(0.90476) PairD(0.83333) [nihongi]:[日本紀;六国史、または日本書紀のこと]
5
 JaroW(0.94000) Jaro(0.90000) PairD(0.80000) [nihongoban]:[日本語版]
5
 JaroW(0.94000) Jaro(0.90000) PairD(0.80000) [nihongobun]:[日本語文]
5
 JaroW(0.94000) Jaro(0.90000) PairD(0.80000) [nihongomei]:[日本語名]
5
 JaroW(0.94000) Jaro(0.90000) PairD(0.80000) [nihongofuu]:[日本語風]
5
 JaroW(0.94000) Jaro(0.90000) PairD(0.80000) [nihongoron]:[日本語論]
5
 JaroW(0.94000) Jaro(0.90000) PairD(0.80000) [nihongotuu]:[日本語通]
5
 JaroW(0.94000) Jaro(0.90000) PairD(0.80000) [nihongoyou]:[日本語用]
5
 JaroW(0.94000) Jaro(0.90000) PairD(0.66667) [nihonsaigo]:[日本最後]
5
> kanakanji
5
閾値 = 0.940000  探索件数(7813)
5
----------
5
 JaroW(1.00000) Jaro(1.00000) PairD(1.00000) [kanakanji]:[かな漢字/仮名漢字]
5
 JaroW(0.95556) Jaro(0.92593) PairD(0.85714) [kanakan]:[かな漢/仮名漢]
5
> kanakannji
5
閾値 = 0.940000  探索件数(7813)
5
----------
5
 JaroW(0.98000) Jaro(0.96667) PairD(0.94118) [kanakanji]:[かな漢字/仮名漢字]
5
 JaroW(0.94000) Jaro(0.90000) PairD(0.80000) [kanakan]:[かな漢/仮名漢]
5
> kanakenji
5
閾値 = 0.940000  探索件数(7813)
5
----------
5
 JaroW(0.95556) Jaro(0.92593) PairD(0.75000) [kanakanji]:[かな漢字/仮名漢字]
5
> kajinhenkan
5
閾値 = 0.940000  探索件数(7813)
5
----------
5
 JaroW(0.97576) Jaro(0.96970) PairD(0.70000) [kanjihenkan]:[漢字変換]
5
> kanjihekan
5
閾値 = 0.940000  探索件数(7813)
5
----------
5
 JaroW(0.96182) Jaro(0.93636) PairD(0.84211) [kanjihenkan]:[漢字変換]
5
 JaroW(0.94000) Jaro(0.90000) PairD(0.66667) [kanjika]:[漢字化]
5
> q
5
quit.
5
5

 

5

参考資料

5
 Jaro–Winkler distance - Wikipedia, the free encyclopediaEXT (英語)
5
 AWK Users JP :: Jaro-Winkler 距離の計算EXT
5
 スペルミス修正プログラムを作ろうEXT
5

 

5

ソースコード

5

Nendoで書いている。ライブラリはKyoto CabinetEXTamatchEXTを使っている。

5
 src/aimai at d537aa2d48789eaca6aa8de7301b84a0ae2819b4 from kiyoka's sekka - GitHubEXT
5

 

4

課題

4

送り仮名の綴り間違いをどうするかが課題だなあ。

4

 

5

...comment disabled...