かな配列をイチから作ってみる

どうも今の中トロ配列は局所最適に陥ってるんじゃないかと思って、フルスクラッチで新しいかな配列を起こしてみた。

前提条件

  • 左右対称形のキーボードを
  • 両利きのユーザーが
  • 撫で打ちする*1

制約条件

  • 「ん」「っ」「ー」を右小指に置く
  • 「ゃ」「ゅ」「ょ」を左手のアンシフト面に置く
  • 「、」を左中指、「。」を右中指に置き、前置シフトキーを兼ねる

目標

  • 負荷分布がシンメトリーな配列を作る
  • 人差指側から小指側へ流れるような運指を意識する

わかったこと

  • 「う」「る」を同じ指に置くのは負荷が高すぎて不可
  • 「す」「る」を同じ手に置くのも負荷が高すぎて不可
  • 「う」を左手に置くのは左手のキーが足りなくなるので不可

というわけで、連接頻度の低い「う」「ん」「る」「っ」「く」「つ」を同じ指に置くという新JIS系の常套手段が使えないことが明らかになった。左右非対称なキーボードで人差指に負荷を集中させた新JIS配列と、左右対称なキーボードで負荷を分散させるTRON配列は、やはり骨格からして別物にならざるを得ないのだろう。

1週間かけて試行錯誤を繰り返した結果、なんだかんだで元の木阿弥……左に「た」「と」「か」「て」「る」、右に「い」「う」「ん」「し」「す」を置くという、TRON配列の流れを汲む中トロ配列と同じ骨格を持つ配列が得られたのだった。苦笑。

f:id:mobitan:20191031190046p:plain

しばらく使ってみて、良さげなら改めて記事にまとめるよ。

*1:下段のキーは押しやすいが、上段外側の [Q] [R] [T] [Y] [U] [P] は押しにくい

中指シフト化したTRONかな配列に帰ってきた

名付けて「ブリ中トロ配列」*1

f:id:mobitan:20191023012044p:plain

特徴

中指前置シフト・清濁同置のシンプルな設計でありながら、TRON かな配列なみの打鍵効率 1.21、同指跳躍率0.3% を達成。

  • 濁拗音・外来音を含むすべてのモーラを2打鍵以内で入力できる。例: [JT] =「じゃ」、[FZ] =「でぃ」、[YQ] = 「ふぉ」 など。
  • 左右対称なキーボードを撫で打ちするのに適した負荷分布。
  • ですます調の文章(Yahoo!知恵袋コーパス)を用いた定量評価。
  • Google日本語入力のローマ字カスタマイズで実装。

設計方針

非拗音面と拗音面を完全に分けて考える。

非拗音面は前置シフトで、シフトキーは [D] [K] の2種類。同手シフトと逆手シフトを区別する。濁音は清音のシフト側に置く(濁音の頻度が高ければ逆手シフト、低ければ同手シフトとする)。例:

  • [O] =「く」
  • [DO] =「み」
  • [KO] = 「ぐ」

シフトキーの単独打鍵で句読点を入力する。そのため、句読点の直後で必ず変換/確定しなければならない。

拗音面は後置シフトで、シフトキーは [T] [Q] [Z] [DJ] [DL] の5種類。これらが2打目に来た場合、直前の1打目をキャンセルして子音に読み替え、2打目を母音と見なし、両者の組み合わせで1モーラの拗音を入力する。拗音面の子音配列は、非拗音面の清音配列とは無関係に、頻度に応じて決める。例:

  • [OT] =「きゃ」
  • [OQ] =「きゅ」
  • [OZ] =「きょ」
  • [ODJ] =「きゅう」
  • [ODL] =「きょう」

この例だと、1打目に [O] を打った時点では「く」が表示されるが、2打目に [T] を打つと「く」が消えて「きゃ」に変わる。この動作は Google 日本語入力のローマ字カスタマイズで実装できる。

負荷分布

国立国語研究所 現代日本語書き言葉均衡コーパス のうち「出版・書籍」「特定目的・Yahoo!知恵袋」の各上位1万語彙を用いて各キーの負荷を解析した。

f:id:mobitan:20191023013704p:plain

  • ですます調の文章が多い「特定目的・Yahoo!知恵袋コーパスにおいてバランスの良い負荷分布になっている。
  • 右手の負荷がやや高い。これは「る」を右手に置いたことに起因する。オリジナルの TRON かな配列では「り」「る」が左手、「あ」「け」が右手にあり、負荷率は左右ほぼ均等だった。しかし、ですます調で頻出する「ま」が隅にあること、中指シフト化にともない「とる」「こる」が打ちにくくなること、などの難点があった。そこで、ブリ中トロ配列では「り」「る」を右手に追い出し、空いた左手の隅に後置シフトキーを置いた。

定量評価

京都大学 黒橋・河原研究室 で配布されている、BCCWJ(コアデータ)コーパスから生成された仮名漢字変換用 2-gram の上位1万語彙を用いて評価した。

打鍵効率は1文字の入力に必要な平均打鍵数、同指跳躍率は上段キーの直前/直後に下段キーを打つ率である。

f:id:mobitan:20191023013749p:plain

ブリ中トロ配列は、清濁同置・前置2シフトという単純な(効率向上には不利な)設計ながら、打鍵効率 1.21、同指跳躍率 0.3% を達成した。これは、清濁別置・前置3シフトであるハイブリッド月配列に比べ同指跳躍率が半分以下であり、親指シフトである TRON かな配列に匹敵する。

感想(2019/10/31 追記)

やっぱり右薬指の負荷が高すぎてアカンかった…。

*1:ハイブリッド月配列 からアイディアを拝借したので、敬意を表して名前を似せた。

TRONかな配列を薬指後置シフト化してみた

名付けて「大トロ配列」。

f:id:mobitan:20190720212418p:plain

要件

  • μTRON キーボードと NISSE で使う。
  • 親指シフトを行わない(キーボードの [Shift] キーをかな配列の構成要素として利用しない)。
  • 文字単位ではなくモーラ単位で運指を考える。
  • 通常の日本語文書に現れるほとんどのモーラを2打以内で、すべてのモーラを3打以内で入力する。「ぴゅ」「でぃ」などの低頻度拗音が4打にならないようにする。
  • 手の小さいユーザーが撫で打ちするのに適した負荷分布とする。
  • ですます体が多い利用実態を考慮する。特に「ま」「す」の頻度が一般的な書籍主体のコーパスよりも高いことに注意する。

設計方針

  • 左右薬指後置シフト、清濁同置、同手シフトと逆手シフトの区別あり。
  • 「ゃ」「ゅ」「ょ」「ぁ」「ぃ」「ぅ」「ぇ」「ぉ」を使わなくて済むように拗音を配置する。
  • 高頻度拗音(キャ行、シャ行、ジャ行、チャ行)はシフト面に配置する。
  • 低頻度拗音は行段的に配置する。二重シフト [S][S], [S][L], [L][L], [L][S] を互いに区別することで4つの母音と見なす。
  • ホームポジション周辺に負荷を集中させ、周縁部の負荷を下げる。
  • BCCWJ のうち「特定目的・Yahoo!知恵袋コーパスを用いて評価する。

評価

国立国語研究所 現代日本語書き言葉均衡コーパスのうち「出版・書籍」「特定目的・Yahoo!知恵袋」の各上位1万語彙と、京都大学 黒橋・河原研究室のウェブコーパス(200万ページ)の上位10万語彙を用いて各キーの負荷を解析した。

f:id:mobitan:20190721152245p:plain

分かっちゃいたけど薬指の負荷が高いな…。きっと調整が必要になるだろう。

※この文章は大トロ配列で書きました。

 

 



 

キー配列をコーパス別に評価する

日本語キー配列の各キー/段/指の負担割合を可視化するツールを作った。
性質の異なる複数のコーパスを任意に組み合わせた頻度表を用いて解析を行うことができる。 

- https://mobitan.github.io/keyboard-layout-comparison/heatmap.html

f:id:mobitan:20190713173401p:plain

f:id:mobitan:20190713173406p:plain

頻度表データは国立国語研究所現代日本語書き言葉均衡コーパス中納言」版公開データの短単位語彙表 (Version 1.1) を加工したもの。ソースのコメントを外すと、「出版・書籍」「出版・雑誌」「出版・新聞」「図書館・書籍」「特定目的・白書」「特定目的・教科書」「特定目的・広報紙」「特定目的・ベストセラー」「特定目的・Yahoo!知恵袋」「特定目的・Yahoo!ブログ」「特定目的・国会会議録」のそれぞれ上位10000語を利用できる。

TRONかな配列を中指シフト化してみた

名付けて「中トロ配列」。*1
かな入力を導入しようと思って月配列 U9 版を5日間ほど試してみたけど、これが全く慣れる気がしない。「ん」「っ」「る」「た」など語末っぽい字が人差指にあり、キーボードの外側から内側へ流れていく手の動きが脳に馴染まないようだ。そういう観点であらためて配列をサーベイしてみると、TRON キーボードのかな配列「ん」「っ」「た」「る」が小指か薬指にあり、キーボードの内側から外側へ向かう流れが馴染みやすそうな気がした。TRON 配列は親指シフトだが、私の親指は機能キーのワンショットモディファイヤで手一杯(指一杯)だ。そこで、月配列 U9 版の考え方を TRON 配列に適用し、中指と薬指で前置シフトする変形 TRON 配列を作ってみた。

設計方針

  • 物理形状が左右対称なキーボードを前提とする(例: NISSE, μTRON)。「左手下段は打ちにくい」といった物理形状に起因する問題を論理配列の設計に持ち込まない。
  • Google 日本語入力のローマ字カスタマイズで実装する。キーボード関係の常駐ソフトをこれ以上増やしたくない。
  • シフト方式は月配列 U9 版の考え方を採用する。[D] か [K] を押すと★面に、[S] か [L] を押すと▲面に、[D][K] か [K][D] を押すと▼面にシフトする。左右のシフトキーは区別しない(同手シフトなし)。
  • 読点は [S] と [K] の同時打ち、句点は [S] と [L] の同時打ちで入力する。[S][K] と [K][S]、 [S][L] と [L][S] をローマ字テーブルに定義しておき、どちらが先に入力されても同じ結果となるようにする。
  • 文字の並べ方は TRON 配列の考え方を採用する。原則としてアンシフト面と★面は清音、▲面は同位置の清音に対応する濁音。加えて▼シフト面を設け、低頻度文字と、4ストローク以上となる一部拗音の救済用ショートカットを置く。

定量評価


左が段列ごとの負担率、右がキーごとの負担率。なかなか良いバランスになったと思う。他の配列との比較は後日。

月配列の導入を検討する

日本語入力方法として、10年前までは自作の行段系8母音ローマ字配列「やつがしら」を使っていたが、ここ10年は普通のローマ字入力を少しだけ拡張した配列(「ん」「っ」「ー」を専用キー1打で、拗音を2打で打てるように拡張したもの)に戻っていた。しかし、やはりローマ字では快適さに限界がある。ここらでローマ字入力に見切りをつけて、かな入力の導入を検討しよう。

要件

  • 現在使用しているキーボード(次の3種類)のどれでも使えること。
  • IMEのローマ字カスタマイズだけで実装できること。

以上の要件を満たすのは中指逐次シフトの月配列系である。

既存手法の評価

月配列系は各作者が数値評価を行っているが、どれもサンプルが小さすぎてアテにならない。そこで、国立国語研究所現代日本語書き言葉均衡コーパスを使って既存の配列を再評価した。ただし、当該コーパスの全データを入手するには利用契約が必要で面倒なので、ここではBCCWJ長単位語彙表 (Version 1.1) のうち度数22以上の約10万語彙をサンプルとして使った。原文ではなく単語ごとの頻度表なので、単語内の運指は考慮されるが、単語をまたぐ運指は考慮されない。
結果は次のとおり。表の一番右の列は指ごとの負担率を示す。

どの配列も作者のノウハウが注ぎ込まれているわけだが、やはり作者ごとに異なる設計思想が透けて見える。なかでも、濁音を清音と同じ位置に置くか別の位置に置くかが大きな分かれ道のようだ。

方針

評価結果を踏まえて自分がどこから始めるかを考えているが…うーむ。
まぁ、どうせ後から自己流カスタマイズに走るだろうし、とりあえずは初めてのかな入力ということで、覚えやすそうな清濁同位置の「月配列 U9」を採用してみようかな。

評価プログラム

エスリルさんの比較ツール改造したもの

後者のページには初期値としてBCCWJ短単位語彙表 (Version 1.1) のうち度数555以上の約1万語彙が入力されている。かな配列はHTML内にハードコーディングされている。

ReadyNAS 104 がファイル削除で固まる

100GBのファイルを削除しようとすると固まる。top を見ると btrfs-transacti が CPU を食っている。そのうちメモリを食い尽くしてスワップし、OOM Killerが働いて無関係なやつを殺しまくる。最終的に電源ボタンも反応しなくなり、電源ケーブルを抜くしかなくなる。
次の対策で直った。