アルカ用の幻字鍵盤配列を作ろうとしていて、そこではじめて「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」を作りなおしてみたい気がする。