わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

ローマ字をトライ木に

昨日の続きです.ヘボン式訓令式・日本式のそれぞれについて,使用されるローマ字をトライ木にしてみました.
画像サイズは縦が7,000ピクセルを超えるため,記事内には貼り付けていません.以下のリンクより,画像をご覧ください.

ヘボン式の画像より,一部を切り出して,見方を説明します.

上の図については,"sa"は「さ」,"shi"は「し」,"sha"は「しゃ」,…,"so"は「そ」に,それぞれ対応します(("su"や"se"と,"so"で,レベル(横軸)が合っていないのは,dotコマンドの配置によります(その下のノードの配置に引きずられたように思われます).訓令式の「た行」にも,同様の不一致が見られます.))."sa"などはトライ木における葉節点であり,その綴りに対応する日本語文字と,点線で結びつけています."s"や"sh"は内部接点であり,対応する日本語文字がありません.「し」が"si"ではなく"shi"と綴られ,「しゃ(sha)・しゅ(shu)・しょ(sho)」とともに子音の発音は〔ʃ〕((と思いきや,[wikipedia:無声後部歯茎摩擦音]によると,「日本語の「し」や「しゃ」行の子音は、話者によって異なるが、標準的な発音は無声歯茎硬口蓋摩擦音〔ɕ〕である」とのこと.))ですので,意味のあるグルーピングをなしています.訓令式および日本式では,「し」は「しゃ・しゅ・しょ」と別になっています.

生成プログラムはRubyで自作しました.Gistに置いておきます.内部でkakasiとdot (Graphviz)の各コマンドを呼び出しています.ローマ字は基本的なもののみを対象とし,長音や促音,訓令式の第2表などは考慮していません.実行すると,kanatrieから始まるいくつかのdotファイルとpngファイルが生成されます.内部では,ローマ字かな変換とかなローマ字変換のHashオブジェクトを作っています.
画像生成時の配置は,ひらがなの辞書式(五十音順)ですが,清音・濁音・半濁音の順にしています(スクリプトではsort_byを用いて,この振り分けを行っています).拗音を分けるのも技術的には可能ですが,それでも,上の画像の"sh"のグルーピングが優先されます.言い方を変えると,今回作ったトライ木(使用したdotコマンド)では,「さ」「し」「す」「せ」「そ」「しゃ」「しゅ」「しょ」の順に並べることができません.