January 7, 2012

ついカッとなって青空文庫からルビをマイニングしてみたものの

################

下のzipは上手いことルビが取れてないので以下を参照.
satomacoto: 青空文庫のルビのマイニングをやり直した

################

ついカッとなってWikipediaからカッコ表現をマイニングしてみた - nokunoの日記

を参考にさせていただき青空文庫のルビを抜き出してみました.なーんも使い道考えてないけど.MLやらNLPやらIMEやらの研究でもサーベイしてみて色々ゴニョゴニョしてみたい.まーでもとりあえずなんか適当に処理して辞書に登録してみて近代の文学者のごとく認《したた》めるかな.

https://github.com/downloads/satomacoto/Playground/ruby.zip

データは
ファイル名\t語\tルビ\n
って具合に出てきた順にタブ区切りで出力しました.語のカウントとかしてません.被りあります.凡例の分も出力しちゃってます.

% head ruby.txt
1000_ruby_2956.zip 小焦 こじ
1000_ruby_2956.zip 尾 ぴき
1000_ruby_2956.zip 小焦 こじ
1000_ruby_2956.zip 強請 ねだ
1000_ruby_2956.zip 葛飾 かつしか
1000_ruby_2956.zip 堤 どて
1000_ruby_2956.zip 雪洞 ぼんぼり
1000_ruby_2956.zip 堰 せ
1000_ruby_2956.zip 御留川 おとめがわ
1000_ruby_2956.zip 殺生 せっしょう
% wc ruby.txt
 1847315 5750935 65440323 ruby.txt

ルビ表記は 青空文庫 - Wikipedia にあるルールに従って抜き出しました.
ルビの表記は |と《》によって表現される。ルビを《》で囲んだり|でルビのかかる文字列を特定するのは、視覚障碍者読書支援協会(BBA)の原文入力ルールに合わせたものである。
青空|文庫《ぶんこ》
とあれば、「ぶんこ」というルビが「文庫」についていることを示す。
本日は晴天《せいてん》なり。
のように、仮名と漢字の間に|が入る場合は|を省略することも出来る。
|ブルースカイ《青空》
のように、仮名にルビを強制的に振る時に使用することもある。

ちなみに「漢字《かんじ》」というパターン以外には
1029_ruby_20617.zip 接吻 ベエゼ
1040_ruby_20510.zip 然 きん/\ぜん
1182_ruby_20549.zip 盡 こと/″\
1067_ruby_1929.zip Esteros de Patino エステロス・デ・パチニョ
1317_ruby_22263.zip 三たび魔女の呪詛に萎れ毒気に染みぬる ウイズ・ヘキッツ・バン・スライス・プラステッド・スライス・インフェクテッド
1490_ruby.zip 願掛 がんがけ[#底本では「け」が脱落]
15971_ruby_28461.zip 並木道 ブリ※[#濁点付き片仮名ワ、1-7-82]ール
なんてパターンがあります.ほかにもパターンあると思う.漢字側に注があるのもあった.あとでなんとかするか.


以下抽出した手順のメモ.Lion.要wget(←brew install wget).

手順メモ
  1. 青空文庫リストCSVのダウンロード

    青空文庫のこのページの"「公開中 作家別作品一覧拡充版:全て(CSV形式、zip圧縮)」をダウンロード"からリストをダウンロードして解凍するとCSVファイルが.Shift_JISなのでUTF-8に変換しておく(別に変換しなくても大丈夫だけど).適当にディレクトリ掘ってから.
    wget http://www.aozora.gr.jp/index_pages/list_person_all_extended.zip
    unzip list_person_all_extended.zip
    iconv -f Shift_JIS -t UTF-8 < list_person_all_extended.csv > list_person_all_extended_utf-8.csv
  2. テキストファイルURLの抽出

    ダウンロードするためにテキストファイルのURLの列だけ抜き出して保存.
    python urls.py list_person_all_extended_utf-8.csv > urls.txt
  3. テキストファイルのダウンロード

    "zip"フォルダをつくって,そこにテキストのzipファイルをwgetでダウンロード.
    mkdir zip
    wget -i urls.txt -P zip
  4. ルビの抽出

    上のルールに従いルビを抽出.エラー起こっちゃったときは無視してるので,すべてのテキストに対してルビを取り出せているわけじゃない.
    python ruby.py 'zip/*.zip' > ruby.txt
  5. (おまけ)ルビがひらがな(と'・'と'ー')だけのもの


わかんないこと

  • そもそもどうやって辞書に登録するんだろう?まとめてできんのかな?品詞どーすればいい?つーか既に辞書にある語もあるような.全部登録していいのかな?記号関連どうすんだろ?
  • 文語体⇔口語体,何とかできんのかな?音便やらの仮名遣パターンあるのかな?
  • 普通は「漢字《かんじ》」だけどそれ以外のも結構ある.おもしれーからむしろこっちをゴニョゴニョしてみるかな?


IME関連の研究おもしろそうだよなー