SKKの導入 2 (エロゲタイトル入力支援SKK辞書を作る)
前回でMacにAquaSKKの導入が一応出来たので、今回はより使いやすくなるように辞書を作成してみようと思います。
SKKの導入 1 (AquaSKK for Mac) - Haitena だいありー
エロゲタイトル入力支援辞書の作成動機
恐らく、大多数のエロゲーマーの方は正式タイトルではなく、略称で会話したりするのではないでしょうか。
例えば、こんな感じ。
『なぁ、おまえダメ恋やった?』
『ダメ恋? ーーあぁ、"世界でいちばんNGな恋" か。もち。つーか主人公頼りなさすぎwwww』
『確かにw それより、あのゲームやると就職とか、 今後の人生とか、そーゆうの考えちゃうよなーー。すごく……憂鬱です。』
まさか、『世界でいちばんNGな恋』といちいち正式名称使いません(多分)。
ということで、入力も略称の方で出来るといいなぁと思いました。
俺は今までImput Methodに関しては全くいじったことがなく、ダウンロードしてきたものをそのまま使ってました。
なので、エロい人はすでに略称辞書が出来上っているのかもしれませんが、俺は全くそうではないので今回作成することにしました。
と言っても打つ機会はほとんどありませんが(ぉ
先に成果報告しておくと、こんな感じに変換が効きます。
SKK辞書のフォーマット
辞書ファイルを見るとそのフォーマットは以下のようになっています。
"読み" /"候補1"/"候補2"/.../
"読み"と次に来るスラッシュとの間には半角Spaceが1つあり、続いて候補1、2…がスラッシュで区切られています。
最後は改行で終わります。また、
/"候補";注釈/
のように、候補の後にセミコロンで注釈を続けることが出来るようです。
辞書ファイルはソートされている必要があるみたいですが、これはツールで出来るのでそちらを利用します。
Macにおけるツールの導入に関して以下のサイトを参考にさせていただきました。多謝!!
SKK のはてなキーワード辞書を作る。 - 日々、とんは語る。
俺の環境ではglib2が既に入っていたので、
$ port installed | grep glib2 glib2 @2.18.3_0+darwin_9 (active)
以下を実行することでインストール出来ました。
$ wget http://openlab.ring.gr.jp/skk/tools/skktools-1.3.1.tar.gz $ tar zxf skktools-1.3.1.tar.gz $ ./configure $ make $ sudo make install
エロゲタイトル入力支援辞書の作成
ちょっと手動での作業が入ってきますが、それほど大変ではありません。
変換に関しては以下のサイトに記載されているものを利用させて頂きました。
辞書フォーマットに沿ったかたちに出力するようなスクリプトを作成。
#!/usr/bin/ruby -Ku require 'rubygems' require 'hpricot' require 'open-uri' require 'nkf' url = "http://neneco.sakura.ne.jp/ergwiki/index.php?%BA%EE%C9%CA%A5%BF%A5%A4%A5%C8%A5%EB%CE%AC%BE%CE%B0%EC%CD%F7" abbrev = [] long_title = [] doc = Hpricot(open(url)) (doc/"dl.list1").each do |dl| # for abbreviation (dl/"dt").each do |dt| title = NKF.nkf("-w -xm0", dt.inner_html) title.gsub!(/(?!^.*)\(.*?\)|\s/, "") # ignore () and its inner abbrev << title end # for long title (dl/"dd").each do |dd| (dd/"a").remove title = NKF.nkf("-w -xm0", dd.inner_html) title.gsub!(/<.*/m, "") # ignore extra html tags and else title.gsub!(/(?!^.*)[\(\(].*/m, "") # ignore extra sentence title.gsub!(/^[\(\(].*[\)\)]/, "") # for doujin game long_title << title end end hash = Hash[*[abbrev, long_title].transpose.flatten] # array to hash # multi(2<) abbr separated by (,) or (、) => same long title abbrev.each do |abbr| if /[,、]/ =~ abbr abbr.split(/[,、]/).each{|k| hash[k] = hash[abbr]} end end hash.sort.each{|abbr, long| puts "# /#{abbr}/#{long}/"}
これを実行するには、事前にHpricotをrubygemsからインストールする必要があります。
sudo gem install hpricot
SKK辞書は文字コードがEUC-JPになっているようですが、この時点ではUTF-8で作業を進めます(後ほどコマンドラインからnkfで変換する)。
これを実行すると以下のような出力が得られます。
# /C†C/CROSS†CHANNEL/
# /DMF/Dear My Friend/
# /FA/FORTUNE ARTERIAL/
# /MTI/MagusTale Infinity/
# /NG恋/世界でいちばんNGな恋/
………
(略)
………
# /残暑/残暑お見舞い申し上げます。/
# /群青/群青の空を越えて/
# /(不明)/マスクド上海/
#は後で書き換えるためのダミーです。その後に半角Spaceが入っています。
まぁ何時でもいいと思うけれど、UTF-8からEUC-JPに変換しておく。上の出力をeroge_abbr.tmpとすると、
nkf -e eroge_abbr.tmp > eroge_abbr.skkdic
出来たらeroge_abbr.skkdicを以下に従って修正します。
- 行頭の#を削除し、変換元となる"読み"をひらがなで入力する
- 略称自体が既にひらがなの場合は、行頭の"# /"(#と半角Space + /)を削除する
こんな感じ(ランダムに抜粋)。
だめこい /NG恋/世界でいちばんNGな恋/
みくきす /ミクキス/未来のキミと、すべての歌に―/
もしらば /もしも明日が晴れならば/
ようかん /幼なじみと甘〜くエッチに過ごす方法/
しーしー /C†C/CROSS†CHANNEL/
最後にソート。
skkdic-expr2 -o eroge_abbr.skkdic eroge_abbr.tmp
でこれを辞書ファイルとして登録する、といった具合。
別に辞書ファイルを用意するでなくとも、ユーザー辞書にマージしてもいいと思います。
俺はなんかそうこうやってるうちに設定が読み込まれなくなったり、辞書フォーマット破壊してしまったりであせりました。
これで快適変換ライフです。
いや、本当言うとアニメでも略称入力対応出来ると助かるんですが、そういった情報管理してるのってないのかなー。
はてなキーワード辞書で例えば、『いんでっくす』と打てば『禁書目録』と変換できたりはするけれども。
あとは、声優名補完があるといいかもしれない。ウィキペディアで探せば、可能かもしれません。