下の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).
手順メモ
- 青空文庫リスト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 - テキストファイルURLの抽出
ダウンロードするためにテキストファイルのURLの列だけ抜き出して保存.
python urls.py list_person_all_extended_utf-8.csv > urls.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters#!/usr/bin/env python # -*- coding: utf-8 -*- import sys import csv try: file = sys.argv[1] with open(file, 'rb') as f: reader = csv.reader(f) for row in reader: print row[45] except: pass - テキストファイルのダウンロード
"zip"フォルダをつくって,そこにテキストのzipファイルをwgetでダウンロード.
mkdir zip
wget -i urls.txt -P zip - ルビの抽出
上のルールに従いルビを抽出.エラー起こっちゃったときは無視してるので,すべてのテキストに対してルビを取り出せているわけじゃない.
python ruby.py 'zip/*.zip' > ruby.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters#!/usr/bin/env python # -*- coding: utf-8 -*- import sys import os import re import glob import zipfile # 引数でパスを指定 path = sys.argv[1] files = glob.glob(path) regex = u"(([一-龠]+?)|(?<=|)([^|]+?))《([^》]+?)》" p = re.compile(regex) for file in files: try: zip_file = zipfile.ZipFile(file, 'r') except zipfile.BadZipfile: continue for member in zip_file.namelist(): if '.txt' == member[-4:]: with zip_file.open(member) as f: for line in f: try: line = line.decode('shift_jis').strip() except UnicodeDecodeError: continue for m in p.findall(line): print "%s\t%s\t%s" % (os.path.basename(file), m[0].encode('utf-8'), m[-1].encode('utf-8')) - (おまけ)ルビがひらがな(と'・'と'ー')だけのもの
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters#!/usr/bin/env python # -*- coding: utf-8 -*- import re regex = u'^[ぁ-ゞ・ー]+$' # ひらがな+・+ーだけ p = re.compile(regex) for line in open('ruby.txt'): file, kanji, yomi = line.strip().split('\t') if p.match(yomi.decode('utf-8')): print "%s\t%s\t%s" % (file, kanji, yomi)
わかんないこと
- そもそもどうやって辞書に登録するんだろう?まとめてできんのかな?品詞どーすればいい?つーか既に辞書にある語もあるような.全部登録していいのかな?記号関連どうすんだろ?
- 文語体⇔口語体,何とかできんのかな?音便やらの仮名遣パターンあるのかな?
- 普通は「漢字《かんじ》」だけどそれ以外のも結構ある.おもしれーからむしろこっちをゴニョゴニョしてみるかな?
- …
IME関連の研究おもしろそうだよなー
No comments:
Post a Comment