アルカ用の幻字鍵盤配列を作ろうとしていて、そこではじめて「2-gram羅列でも、3-gram羅列でも、感じられないこと」がある……ってことに気づいた。
(未来:【配列確定】かえであるか配列、チンパンジー(lime)版……じゃなかった、かえであるか配列改0訂0案3版。 - 雑記/えもじならべあそび)
(過去:かえであるか配列、改0訂0案2──フォント更新版──。 - 雑記/えもじならべあそび)
(過去:アルカの幻字フォントについて、「出現頻度」を意識したものが公開されてた……。 - 雑記/えもじならべあそび)
(過去:452万文字分の、はてなダイアリー日記内かな連接頻度データ。 - 雑記/えもじならべあそび)
(過去:「雑記/えもじならべあそび」における、全2,440,461文字についての1〜3文字連接頻度、表計算ドキュメント版。 - 雑記/えもじならべあそび)
(過去:自分のBlogにおける「ひらがなの出現頻度」を、パソコンを使って調べてみよう!(kanji2na+morogram編、244万文字頻度付き) - 雑記/えもじならべあそび)
最近、「この分野に突っ込み始めたばかりの人にでも、(記憶せずに記録を見ながら使う限りは)パッと見て把握できる……そんな方法が欲しい」と考えてます。
……ってゆーか、それは「自分自身が全く使えもしない、作中言語を打つためのキーボード配列を作ろう」ってゆー、おバカなことをしようとしているから、ではありますが。
こーゆーのって、たぶん「日本語入力について首を突っ込み始めた人」にもやくだつんじゃ?でもどうすれば……ってところでうろうろしていた、ってのが、いままでの状況でした。
現実的な制限として、今までの状況だと事実上「頻度を記憶できる人」だけに配列設計に首をつっこむ権利がある……って状態なんですけど、こーゆーのは「なんか納得がいかない」ので、そーゆー状況を「かえで化」してぶち壊したいんですよ。
いままで、2-gramでダメなら、一気にデータ量が膨れる3-gramでみるしか……って考えていたのだけれど、いきなり全体のデータ量が大きくなってしまう3-gramって、人間が配列検討をするには「直感では感じられないという意味で、使いにくい」ことに気づいた。
……ってわけで、かつて「うちの日記」を公開するときに使っていた「真ん中文字をインデックスにした、3-gram表」の考え方を元にして、「プレフィックス、またはポストフィックスの、2-gram表」ってのを作ってみた。
ってゆーか、「2-gram羅列」よりは「真ん中文字を固定した3-gram」のほうが、「あるキーを基準とした配字設計」には使える……のだけれど、その考え方を「3-gramではなく、2-gramに」適用してみた……ってだけの話。
……なんか、2-gramの見通しが、「3-gram並に細かく使えるくせに」2-gram羅列よりもすごーく良くなったんですけど……。
……はじめから、「うちの日記の244万文字/452万文字n-gramデータ」も、こういう風に公開しておけば良かった……orz。
このデータ自体は、もうすぐ公開する予定。たぶん、和文用の2-gramデータ提示についても、全く同じ考え方で公開するほうが「3-gramを並べるよりも、より直感的に使える」気がする。
#ってゆーか、そーゆーのを「和文n-gram」でも「英文n-gram」でもなくて、なぜに「幻文n-gram」を広げていて気づくんだろう……わけがわからないよorz。
ちなみに。
2-gram羅列から「該当文字前置」と「該当文字後置」の群を抜き出すには、以下のようなバッチファイルを作れば簡単に出来ます。
jgawk.exeを使ってるので、それはvectorとかでダウンロードしてきてください。
rem ↓で下位フォルダを製作します。 md div2gram rem ↓ではすべて、下位フォルダに結果のファイルを出力します。 cd div2gram rem pass 1 α前置 for %%f in (t k x s) do jgawk 'BEGIN { FS = "\t"; OFS = "\t" } ;/\t%%f.\t/{print $0}' ..\k2-gram.txt > div2gramk2-gram-%%f○.txt for %%f in (n v f m) do jgawk 'BEGIN { FS = "\t"; OFS = "\t" } ;/\t%%f.\t/{print $0}' ..\k2-gram.txt > div2gramk2-gram-%%f○.txt for %%f in (d g p b) do jgawk 'BEGIN { FS = "\t"; OFS = "\t" } ;/\t%%f.\t/{print $0}' ..\k2-gram.txt > div2gramk2-gram-%%f○.txt for %%f in (h y c r) do jgawk 'BEGIN { FS = "\t"; OFS = "\t" } ;/\t%%f.\t/{print $0}' ..\k2-gram.txt > div2gramk2-gram-%%f○.txt for %%f in (z j w l) do jgawk 'BEGIN { FS = "\t"; OFS = "\t" } ;/\t%%f.\t/{print $0}' ..\k2-gram.txt > div2gramk2-gram-%%f○.txt for %%f in (a i o e u) do jgawk 'BEGIN { FS = "\t"; OFS = "\t" } ;/\t%%f.\t/{print $0}' ..\k2-gram.txt > div2gramk2-gram-%%f○.txt rem pass 2 α後置 for %%f in (t k x s) do jgawk 'BEGIN { FS = "\t"; OFS = "\t" } ;/\t.%%f\t/{print $0}' ..\k2-gram.txt > div2gramk2-gram-○%%f.txt for %%f in (n v f m) do jgawk 'BEGIN { FS = "\t"; OFS = "\t" } ;/\t.%%f\t/{print $0}' ..\k2-gram.txt > div2gramk2-gram-○%%f.txt for %%f in (d g p b) do jgawk 'BEGIN { FS = "\t"; OFS = "\t" } ;/\t.%%f\t/{print $0}' ..\k2-gram.txt > div2gramk2-gram-○%%f.txt for %%f in (h y c r) do jgawk 'BEGIN { FS = "\t"; OFS = "\t" } ;/\t.%%f\t/{print $0}' ..\k2-gram.txt > div2gramk2-gram-○%%f.txt for %%f in (z j w l) do jgawk 'BEGIN { FS = "\t"; OFS = "\t" } ;/\t.%%f\t/{print $0}' ..\k2-gram.txt > div2gramk2-gram-○%%f.txt for %%f in (a i o e u) do jgawk 'BEGIN { FS = "\t"; OFS = "\t" } ;/\t.%%f\t/{print $0}' ..\k2-gram.txt > div2gramk2-gram-○%%f.txt
ここでできたファイルの中身を、表計算ソフトにぺたぺたと貼っていけば、それで十分に(3-gram divよりもさらに)使えるはず。
……ッて事で、公開。
「melidia」ってゆー小説についての文字出現頻度なので、固有名詞に関する部分が、それなりに偏ってるはず……だけれど、それでも「考え方を感じ取る」には、十分役に立つと思う。
arka hacm nent eda -melidia.ods
※アルカの本家サイトから、フォント「tina」をダウンロード&インストールしてから、ごらんいただくことをオススメします。
そのうち、【うちの日記の452万文字頻度表】についても、こういう風にしてみるかも……。
#もしも、「ASCII範囲内の文字のみで書かれた、アルカの文書が100万文字程度以上収集できる」なら、もう一度幻字の出現頻度を取り直して、「きちんと配列設計に使える2-gram」を作りなおしてみたい気がする。