Created
July 31, 2011 13:36
-
-
Save tily/1116803 to your computer and use it in GitHub Desktop.
日本語テキストから脚韻を抽出する (母音版)
This file contains hidden or 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 ruby | |
# Usage: ruby detect_rhyme.rb /path/to/file.txt num | |
# Example: ruby detect_rhyme.rb 坊ちゃん.txt 3 | |
require 'MeCab' | |
def main(args) | |
path, num = args[0], args[1].to_i | |
rhyme = {} | |
File.open(path).each do |line| | |
node_list = get_node_list(line) | |
node_list.each do |node| | |
yomi = node[:feature].split(',').last | |
if yomi == '*' && JaSound.only_kana?(node[:surface]) | |
yomi = node[:surface] | |
end | |
sound_list = JaSound.split(yomi) | |
sound_list = sound_list.map {|s| JaSound.to_vowel(s) } | |
if sound_list.size >= num | |
tail = sound_list[-num, num].join("") | |
rhyme[tail] ||= [] | |
if !rhyme[tail].include?(node[:surface]) | |
rhyme[tail].push(node[:surface]) | |
end | |
end | |
end | |
end | |
rhyme.each do |k, v| | |
if v.size > 2 | |
puts "#{k}: #{v.join(' | ')}" | |
end | |
end | |
end | |
def get_node_list(text) | |
list = [] | |
tagger = MeCab::Tagger.new | |
node = tagger.parseToNode(text) | |
while node = node.next | |
list << {:surface => node.surface, :feature => node.feature} | |
end | |
list | |
end | |
class JaSound | |
LARGE_MAP = { | |
%w|ア カ サ タ ナ ハ マ ヤ ラ ワ ガ ザ ダ バ パ| => 'ア', | |
%w|イ キ シ チ ニ ヒ ミ リ ヰ ギ ジ ヂ ビ ピ| => 'イ', | |
%w|ウ ク ス ツ ヌ フ ム ユ ル ヴ グ ズ ヅ ブ プ| => 'ウ', | |
%w|エ ケ セ テ ネ ヘ メ レ ヱ ゲ ゼ デ ベ ペ| => 'エ', | |
%w|オ コ ソ ト ノ ホ モ ヨ ロ ヲ ゴ ゾ ド ボ ポ| => 'オ' | |
} | |
SMALL_MAP = { | |
%w|ァ ャ ヮ| => 'ア', | |
%w|ィ | => 'イ', | |
%w|ゥ ュ | => 'ウ', | |
%w|ェ | => 'エ', | |
%w|ォ ョ | => 'オ' | |
} | |
LARGE_STR = LARGE_MAP.keys.flatten.join('') | |
SMALL_STR = SMALL_MAP.keys.flatten.join('') | |
HELP_STR = %w|ッ ー ン|.join('') | |
def self.split(text) | |
text.scan /[#{LARGE_STR}][#{SMALL_STR}#{HELP_STR}]*/u | |
end | |
def self.only_kana?(text) | |
text.match /^[#{LARGE_STR}#{SMALL_STR}#{HELP_STR}]+$/ | |
end | |
def self.to_vowel(sound) | |
regexp = /([#{LARGE_STR}])([#{SMALL_STR}]?)/u | |
sound.sub(regexp) do | |
map = $2 == '' ? LARGE_MAP : SMALL_MAP | |
snd = $2 == '' ? $1 : $2 | |
map.each {|l, c| break c if l.include?(snd) } | |
end | |
end | |
end | |
#puts JaSound.to_vowel(ARGV[0]) | |
main(ARGV) |
This file contains hidden or 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
ウウイイ: 狭苦しい | 美しい | うつくしい | 苦しい | 見苦しい | |
ウアアウ: 仕 | 代る代る | 伺う | |
アイオエ: 笑い声 | 遣り込め | 話し声 | |
ウアアエ: 捕まえ | ぶら下げ | 上前 | 下され | |
アイオオ: 先ほど | 何事 | 足元 | 足音 | 焼物 | なにとぞ | |
アアイイ: 馬鹿馬鹿しい | なまじい | 直ちに | やかましい | 優しい | 新しい | 生意気 | 正しい | 騒がしい | 互に | 人がましい | 女らしい | 若々しい | やさしい | あまりに | |
アエイイ: 御影石 | いかめしい | 溜息 | |
アアイウ: 長たらしく | 新しく | 若い衆 | やさしく | やかましく | 正しく | |
ウウエウ: ふくれる | 勧める | ぶつける | |
エアアイ: 持て余し | 生れ変り | 手廻し | |
アイアア: やり方 | 間に合わ | 怪しから | 何やら | ハイカラ | 致し方 | 有様 | 勇み肌 | |
イアエア: 柏寺 | 見返ら | 押し返さ | ひらめか | |
アアイオ: 山城 | まだしも | 荒肝 | |
オアウイ: 弱虫 | 親指 | お祭り | 猫被り | 法螺吹き | |
アイアイ: 代々 | 幸い | 歯磨 | 大概 | 大体 | なにがし | 差し出し | 宮芝居 | 町並 | 売買 | たしかに | 掃き出し | 割合 | ぱちぱち | 間違い | 話し出し | なびかし | たちまち | 在来 | もったいない | 開会 | 稲光 | 騒ぎ出し | 書き出し | 巻紙 | 後鉢巻 | かき出し | |
イアエイ: 取り返し | 繰り返し | 聞き返し | 引き返し | 思い返し | 押し返し | |
アイアウ: 可愛がる | 配達 | 挨拶 | 大学 | 解釈 | 磊落 | 快楽 | 始まる | 来客 | 退却 | |
イアエウ: こしらえる | たしかめる | 話しかける | 極める | 調べる | 威張れる | 振り返る | 取り上げる | あきらめる | |
イオウイ: 一筋 | 見送り | 宵の口 | |
アイアエ: あきらめ | 当り前 | 間違え | 掻き分け | 割前 | 笑いかけ | 待ちかね | 巻き上げ | 話しかけ | 差し上げ | 諦め | 捜し当て | 指金 | |
ウイアイ: 踏み出し | 引きずり出し | 突き出し | 繰り出し | 吹き出し | |
アアエウ: かがめる | 合せる | あばれる | 笑われる | 構える | やられる | 眺める | かかれる | 支える | |
オオイア: 床板 | 木の下 | ここいら | |
イイウエ: 引き受け | 敷きつめ | 聞きつけ | |
イオウエ: 二の腕 | 乗り後れ | 身の上 | |
イアエオ: 引き返そ | 知らせろ | 引き分けよ | |
ウイアウ: 推察 | 失う | 役に立つ | 衰弱 | |
イイアア: 西側 | 道幅 | 右側 | 賑やか | 今日様 | |
ウオアウ: 勤まる | つとまる | 強がる | |
オオイイ: 恐ろしい | よろしい | 乏しい | |
イオアア: 井戸端 | 清から | 上山 | 張り飛ばさ | 人中 | |
イイアイ: 右左 | いきなり | 大嫌い | 気狂い | 取締 | 抽斗 | 石橋 | 見出し | 好き嫌い | 行き違い | 気違い | 短い | |
イオアイ: 人並 | かしこまり | ひとたび | 張り飛ばし | |
イオアウ: ひとまず | かしこまる | 日の丸 | |
イイアエ: 引き揚げ | 義理立て | 切り下げ | 切り上げ | 入り乱れ | 引き分け | 引上げ | |
イオアエ: 潮風 | 待ち焦がれ | 人影 | |
ウイオオ: 食い物 | 髪結床 | 作りごと | |
イオオイ: 割戻し | 引き起し | 不行届 | 引き戻し | |
ウイウイ: ぐいぐい | 振り向い | 内々 | ふり向い | |
ウオウイ: 丸の内 | ざくろ口 | 嘘つき | |
アウアウ: 遥々 | ますます | なくなる | 策略 | 明々白々 | |
イオオエ: 見届け | 鬨の声 | 人声 | |
アウアエ: 慰め | 誂 | 油絵 | あくまで | |
エイオウ: 帝国 | 例刻 | 手ひどく | 勢力 | |
ウイウエ: 口癖 | 突き抜け | すりつけ | 撲りつけ | 売りつけ | くぐり抜け | |
アウオウ: 約束 | 白墨 | 溌墨 | |
イウウイ: 昼過ぎ | 荷作り | 引き続き | |
オアアア: 親方 | どたばた | 穏やか | |
イアイア: にやにや | いやいや | 近々 | ぴかぴか | ちらちら | |
オエアア: それから | これから | それなら | |
アウウイ: 親譲り | 減らず口 | あくる日 | 暇潰し | 一夜作り | 悪口 | 腹鼓 | |
オアアイ: 細長い | 心当り | 細かい | お話し | お話 | 呼ばわり | |
イアイイ: しまいに | 一概に | 忌々しい | 次第に | 今一 | みだりに | 近しい | |
ウアエウ: つかえる | ラフハエル | 加える | 食わせる | 生れる | 疲れる | |
エイアイ: 生来 | 精出し | 植木鉢 | 例外 | 負け嫌い | 勝手次第 | 制裁 | 敬愛 | 体裁 | 盛大 | 境内 | |
ウアイイ: 爪弾き | 詳しい | むずかしい | 逞しい | 恥ずかしい | なつかしい | 珍しい | |
エイアウ: 零落 | 計画 | 贅沢 | 迷惑 | 軽薄 | 明白 | 席末 | 刑罰 | 計略 | 警察 | |
エアエア: べらべら | へらへら | ぺらぺら | |
ウアイウ: 恭しく | 詳しく | むずかしく | |
アイエイ: 大抵 | 来歴 | 大勢 | |
ウアアアッ: 済まなかっ | ぶら下がっ | ぶらさがっ | |
オイウイ: 持主 | 飛び付い | 取りつき | 追い付い | 取次 | 落ちつい | 追いつい | |
アイエウ: 始める | 剴切 | はいれる | 来月 | 大切 | |
アエオエ: 跳ねのけ | あべこべ | 掛声 | |
アイエエ: 初めて | 始めて | はじめて | 始めれ | |
イイイイ: しきりに | 敷石 | 一々 | |
オイウエ: 起き抜け | 年上 | 押しつけ | 乗りつけ | 呼びつけ | |
アエオオ: 掛物 | 比べ物 | 考え物 | 化物 | |
オイアア: 蝙蝠傘 | 年嵩 | 吉川 | 取り合わ | 実しやか | 取り去ら | 小日向 | |
イオイウ: 飛び降りる | ひとしく | 飛び起きる | 潮水 | |
エイウウ: 制服 | 呈する | 静粛 | |
アイイイ: 差し引い | 毎日 | 淋しい | |
オイアイ: 動き出し | 飛び出し | 急ぎ足 | 呼び出し | 思い出し | おしまい | 読み書き | 誘い出し | 追い出し | 取り出し | |
オオアア: 世の中 | ことさら | 事柄 | そのまま | 心から | |
アイイウ: あいにく | 生憎 | 代筆 | |
オイアウ: 持ち出す | とにかく | 追い出す | |
オオアイ: 友達 | お貰い | 驚かし | 重たい | 猪口才 | 喜ばし | 断わり | 出来損ない | ころがり | |
イオイオ: いよいよ | いろいろ | ひろびろ | にこにこ | |
イウアイ: 気遣い | 陸海 | 陰気臭い | |
オオアウ: ともかく | 断わる | 思わず | 教わる | |
オオオア: ところが | 及ぼさ | 床の間 | どころか | |
オイアエ: 取り換え | こしらえ | 持前 | 取り上げ | 読みかけ | 拵え | |
オイオイ: 飛び降り | 時々 | 折々 | のびのび | 面白い | 飛び起き | 懲り懲り | 飛び下り | 年寄 | |
オオオイ: 驚 | 驚い | 心持ち | 試み | もとより | 横取り | 一昨日 | |
オイオウ: 面白く | 乗り込む | 呑み込む | |
ウウウウ: むずむず | ゆるゆる | つるつる | ぬるぬる | くすくす | ぐるぐる | 復する | 祝する | 粛粛 | |
イウアエ: 差支え | ぱちつかせ | 差し支え | 水飴 | |
オオオウ: ことごとく | 喜ぶ | 及ぼす | 驚く | |
オイオエ: 乗りこえ | 飲み込め | 取り寄せ | 呼び寄せ | 押し寄せ | |
オオオエ: 心得 | 整え | 物覚え | 懐手 | |
イオエウ: 押し込める | 聞える | 引き込める | 踏み込める | |
ウウアイ: 行く先 | うるさい | 少ない | 古町 | 振舞 | |
オオオオ: のそのそ | ごろごろ | ホホホホ | 色男 | そろそろ | きょろきょろ | ぞろぞろ | ちょろちょろ | そこそこ | よろよろ | もともと | 所々 | |
オアイア: いつの間にか | 床柱 | こないだ | |
アウエイ: 比較的 | 着席 | 中学生 | |
オアイイ: 可笑しい | お座敷 | 男らしい | 大人しい | おかしい | |
イアアア: いささか | 引き払わ | 鬼瓦 | 今さら | 北側 | 見せびらかさ | 憚りながら | いかさま | 平仮名 | 見当ら | |
アウエウ: なるべく | 格別 | 省ける | 授ける | 尋ねる | はずれる | 外れる | |
ウウオウ: 宿直 | 図太く | どす黒く | |
オアイウ: 大人しく | 男らしく | 同じく | |
アアウア: 鎌倉 | 腥 | 川村 | |
イアアイ: 冷やかし | きたない | 見当り | 踏み鳴らし | 月あかり | ひやかし | 立ち上がり | 見廻し | お目にかかり | 頂い | 見せびらかし | 突き当り | いまだに | いただき | 頂 | 宮崎 | 申し渡し | 咳払い | 星明り | にわかに | 冷かし | 戴い | |
イエアイ: やり切れない | 生垣 | してやり | |
アアウイ: 蝦蟇口 | 明るい | 盃 | 絛虫 | あかるい | 藁葺 | |
イアアウ: しばらく | 気味が悪 | 起き上がる | ちらかす | 思い当る | 飛び上がる | いやがる | 踏みならす | 見せびらかす | 見渡す | ひやかす | 冷かす | 散らかす | 引き払う | 極まる | 頂く | 引き下がる | あしからず | 従う | |
アアアア: 真逆様 | かかわら | なかなか | ハハハハ | がらがら | がやがや | わざわざ | アハハハ | ざらざら | かたがた | あやまら | からかわ | はなはだ | 片仮名 | ハハハハハ | 方々 | 長々 | たまたま | だらだら | 我儘 | |
アウエオ: 尋ねよ | 名づけよ | あずけろ | 貫けよ | |
イアアエ: 不仕合せ | 申し合せ | 打ち合せ | 冷汗 | 待ち合せ | 仕合せ | 見合せ | 戴け | 極まれ | 召し上がれ | |
アアアイ: つまらない | 乾かし | くだらない | 山嵐 | 賄 | あやまり | 払わし | 働い | 働き | たまらない | かがやい | 早足 | あらわし | 塊 | 吾輩 | 挟まり | 腹這い | |
アエアイ: 鍋焼 | 流れ出し | 揚足 | 情ない | |
アアアウ: 必ず | 働く | かかわる | 関わる | あいかわらず | あやまる | |
アアウエ: 片付け | 傾け | 片づけ | 仲間外れ | |
アアアエ: 改め | 力任せ | 早かれ | あらわれ | 表せ | 腹立て | |
イアウア: いたずら | 括り枕 | 悪戯 | ひらつか | 太神楽 | 気が付か | 気がつか | |
イアオオ: 源 | いた事 | 今頃 | 近頃 | |
オーアアイ: 大当り | 大騒ぎ | 遠廻し | |
オアエウ: 答える | もらえる | 咎める | 唱える | そがれる | 抑える | |
イアウイ: 毬栗 | 気がつい | 気が付い | ねりあるい | 近づい | |
ウエオイ: 受持ち | 受持 | 受け取り | |
エイエイ: 衛生 | 兵営 | ねちねち | 成績 | 命令 | めいめい | 姓名 | 辟易 | |
アイウイ: 大好き | 人指しゆび | 暮し向き | 毎月 | 泣きつい | 人指し指 | 足踏み | |
アオウイ: 門口 | 腹の中 | 顔つき | |
ウイエイ: ついでに | 水底 | 隠し芸 | 不利益 | |
アイウウ: 大仏 | に対する | 怪物 | 外出 | 退屈 | |
オウアイ: 小使 | 小遣い | 小遣 | 欲張り | |
アイウエ: 何くれ | 縛りつけ | 張り付け | 待ち受け | 巻き付け | 叩きつけ | 張りつけ | 怒鳴りつけ | たたきつけ | |
ウオエウ: 帝国ホテル | つとめる | 勤める | 務める | |
オイアアッ: 飛びかかっ | 飛び上がっ | 持ち上がっ | 躍り上がっ | 起き上がっ | 取りかかっ | |
アウイイ: 巾着切 | 軽石 | 私儀 | |
オオエウ: 泳げる | 恐る | 求める | 覚える | 見届ける | |
ウアウア: ぐらぐら | むしゃむしゃ | すたすた | くさくさ | ぬらぬら | ぶらつか | ぶらぶら | すらすら | ふわふわ | うじゃうじゃ | 無茶苦茶 | ずたずた | |
ウアアア: 神楽坂 | 船端 | 下さら | つながら | 丸裸 | 伺わ | |
アイオイ: 大の字 | 焼餅 | 立のい | 相生 | すばしこい | 毎年 | |
イウエウ: 張り付ける | 呼び付ける | 突きつける | きつける | 踏みつける | 撲り付ける | 売りつける | 取り鎮める | |
ウアアイ: 下さい | いけ好かない | 紫 | 裏町 | 済まない | 伺い | 再び |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment