天才クールスレンダー美少女になりたい

チラシの表(なぜなら私はチラシの表にも印刷の上からメモを書くため)

エロゲの固有名詞が変換できなくて困ったので変換用辞書を自作した話

ぶっちゃけタイトルだけで言いたいこと80%は伝えたよね。残りの20%は下のリンク。

github.com

このリンク先に書いてある通りにすれば導入できると思います。これでエロゲソングやエロゲのタイトルやキャラ名が変換できないイライラからだいぶ解放されるはず。

対応IMEは現時点でMicrosoft IMEGoogle日本語入力/Mozc、ことえりATOK(動作確認できてない)、各種SKKです。だいたいの人はこのいずれかを使ってるはずだし、変なの使ってたとしてもいずれかの形式のファイルはインポートできるんじゃないかと思います。知らんけど。


あ、これは定期的に更新します。気が向いたらどうにか頑張って更新してもらえれば。現状で問題になってるノイズが多めという問題もだんだん改善されるはず。頑張ってデータの精度を高めていきたい。




これ以上言いたいこともないので、技術的な詳細をつらつらと書いて終わりにします。読みたい人だけ読めばいいと思う。



元データ

ErogameScapeをスクレイピングするだけ。

ただし、ErogameScapeはエロゲのデータをSQLで検索できるヤバいサイトなので、これを使わない手はありません。クエリ形式で欲しいデータの形式を指定する、なるほどこれがGraphQLのプロトタイプかあ(錯乱)

というわけで、普通のページじゃなくてSQLフォームにPOSTしてスクレイピングしてあげると吉。

https://erogamescape.dyndns.org/~ap2/ero/toukei_kaiseki/sql_for_erogamer_form.php


ところで、ここのサイトのテーブル一覧、何度見てもキャラクターのテーブルがないんですよね。サイトにはキャラクターの検索ボックスもあるのに。

https://erogamescape.dyndns.org/~ap2/ero/toukei_kaiseki/sql_for_erogamer_tablelist.php

このサイトはPostgreSQLを使っているらしいので、ちょいとinformation_schema.tablesテーブルを覗き見させてもらいましょう。

SELECT *  FROM information_schema.tables

これでテーブル一覧が見えるので、あとは調べるだけ。結論から言うとキャラクターのテーブルはcharacterlistなんですが。

ここ見てもらえればサーバに飛ばしたSQLが書いてるので、まあ興味があったらどうぞ。

eroge-ime-dic/erogame_scape.rb at master · fabon-f/eroge-ime-dic · GitHub

ブランド名: ふぁぼん/怒りの手動修正

ブランド名をスクレイピングして眺めたところ、括弧を含む名前が結構入っていることに気付きました。括弧の中が別表記になっているもの、括弧の中が不要なもの……いろいろあって一括変換もできなさそうだったので、雑に手動修正しました。俺俺(内部)DSLも作ったけど、スパゲッティがDSLの実装に移っただけだった……そして無駄にDSLの汎用性高めようとして結局そんな汎用性いらんかったやんになってる。早すぎる抽象化をやめろ〜〜

ゲーム名: 多すぎて手動とか無理だし雑にやってあとは諦め

ゲーム名に至っては「星空のメモリア -Wish upon a shooting star-」の振り仮名が「ホシゾラノメモリアウィッシュアポンアシューティングスター」だったりするわけで。「星空のメモリア」きっかりの名前の作品がないので、このままだと「ほしぞらのめもりあ」で変換できなくなってしまいます。困ったなあ。

幸い、ゲーム名の区切りで空白が入っているので、英数字に挟まれていないスペースで区切ればタイトルはいい感じになります。問題は読みをどこで分割するか。
もちろん、人間が見れば簡単に判断できるわけだけど、その判断をどういうアルゴリズムでやるかはかなり非自明なんですよね。

結局、「MeCabで読みを試しに出してみて、読み仮名と前方/後方一致したらそこで読みも分割」という方法でやってみることにしました。
ここかなり自分でも納得いってないし、精度もいまいちで取りこぼしも大量にあるので、なんとかしたい。


そもそも、さっきみたいに英語部分までカナで振り仮名振られてる事例があったと思えば「○○ ○○○○」みたいなタイトルの振り仮名が前半部分しかない事例も結構あるんですよ。基準がけっこう揺れまくりなので、コンピュータで扱うのは大変……
結局あまり上手くいっていないので、微妙に対応してない読みと単語のペアがあっても怒らないでください……そこらへん含めての「ノイズはちょっと多い」だからね……許して……

キャラ名再び: 君望のキャラすら入ってないって本当ですか!?

このサイトのキャラクター紹介には絶対にキャラの画像がついてきます。つまり、画像の許可とか諸々が出ないとキャラを登録できないわけです。

有名かつ評価の高い作品でもキャラクターが載ってないことがあるのは、たぶんそういうことなんじゃないかな。勝手な想像ですが。

具体例を挙げると、まあこのファイルに手動で追加しているやつなのですが。ツンデレの始祖と名高い君望大空寺あゆさんも変換できないのかよ、この辞書……(手動で追加したので今は変換できるけれど)

eroge-ime-dic/eroge-character-extra.yml at master · fabon-f/eroge-ime-dic · GitHub

他にも登録すべきキャラは無限にいるので、ぼちぼち手動でやっていきたい。手動なので限界がありますが……

辞書形式まわりのお話

UTF-8しか勝たん。なんやねんUTF-16(リトルエンディアン)って。Microsoft IMEお前やぞ。Shift_JISじゃなくても受け付けてくれるのはだいぶまともになったかもしれないが……いやこれヤンキー更生偉い理論と同じだな。UTF-8を使え〜〜〜

読み仮名ミス

発見次第、本家のErogameScapeを見に行って訂正リクエスト出してます。ErogameScapeはデータベースとしてマジで偉大なので、データの正確さに貢献していきたい。模範的エロゲーマーです。

総評

けっこうつらいね……まあ、やっていくしかないんだけど。