Skip to content

Instantly share code, notes, and snippets.

@tily
Created July 31, 2011 13:36
Show Gist options
  • Save tily/1116803 to your computer and use it in GitHub Desktop.
Save tily/1116803 to your computer and use it in GitHub Desktop.
日本語テキストから脚韻を抽出する (母音版)
#!/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)
ウウイイ: 狭苦しい | 美しい | うつくしい | 苦しい | 見苦しい
ウアアウ: 仕 | 代る代る | 伺う
アイオエ: 笑い声 | 遣り込め | 話し声
ウアアエ: 捕まえ | ぶら下げ | 上前 | 下され
アイオオ: 先ほど | 何事 | 足元 | 足音 | 焼物 | なにとぞ
アアイイ: 馬鹿馬鹿しい | なまじい | 直ちに | やかましい | 優しい | 新しい | 生意気 | 正しい | 騒がしい | 互に | 人がましい | 女らしい | 若々しい | やさしい | あまりに
アエイイ: 御影石 | いかめしい | 溜息
アアイウ: 長たらしく | 新しく | 若い衆 | やさしく | やかましく | 正しく
ウウエウ: ふくれる | 勧める | ぶつける
エアアイ: 持て余し | 生れ変り | 手廻し
アイアア: やり方 | 間に合わ | 怪しから | 何やら | ハイカラ | 致し方 | 有様 | 勇み肌
イアエア: 柏寺 | 見返ら | 押し返さ | ひらめか
アアイオ: 山城 | まだしも | 荒肝
オアウイ: 弱虫 | 親指 | お祭り | 猫被り | 法螺吹き
アイアイ: 代々 | 幸い | 歯磨 | 大概 | 大体 | なにがし | 差し出し | 宮芝居 | 町並 | 売買 | たしかに | 掃き出し | 割合 | ぱちぱち | 間違い | 話し出し | なびかし | たちまち | 在来 | もったいない | 開会 | 稲光 | 騒ぎ出し | 書き出し | 巻紙 | 後鉢巻 | かき出し
イアエイ: 取り返し | 繰り返し | 聞き返し | 引き返し | 思い返し | 押し返し
アイアウ: 可愛がる | 配達 | 挨拶 | 大学 | 解釈 | 磊落 | 快楽 | 始まる | 来客 | 退却
イアエウ: こしらえる | たしかめる | 話しかける | 極める | 調べる | 威張れる | 振り返る | 取り上げる | あきらめる
イオウイ: 一筋 | 見送り | 宵の口
アイアエ: あきらめ | 当り前 | 間違え | 掻き分け | 割前 | 笑いかけ | 待ちかね | 巻き上げ | 話しかけ | 差し上げ | 諦め | 捜し当て | 指金
ウイアイ: 踏み出し | 引きずり出し | 突き出し | 繰り出し | 吹き出し
アアエウ: かがめる | 合せる | あばれる | 笑われる | 構える | やられる | 眺める | かかれる | 支える
オオイア: 床板 | 木の下 | ここいら
イイウエ: 引き受け | 敷きつめ | 聞きつけ
イオウエ: 二の腕 | 乗り後れ | 身の上
イアエオ: 引き返そ | 知らせろ | 引き分けよ
ウイアウ: 推察 | 失う | 役に立つ | 衰弱
イイアア: 西側 | 道幅 | 右側 | 賑やか | 今日様
ウオアウ: 勤まる | つとまる | 強がる
オオイイ: 恐ろしい | よろしい | 乏しい
イオアア: 井戸端 | 清から | 上山 | 張り飛ばさ | 人中
イイアイ: 右左 | いきなり | 大嫌い | 気狂い | 取締 | 抽斗 | 石橋 | 見出し | 好き嫌い | 行き違い | 気違い | 短い
イオアイ: 人並 | かしこまり | ひとたび | 張り飛ばし
イオアウ: ひとまず | かしこまる | 日の丸
イイアエ: 引き揚げ | 義理立て | 切り下げ | 切り上げ | 入り乱れ | 引き分け | 引上げ
イオアエ: 潮風 | 待ち焦がれ | 人影
ウイオオ: 食い物 | 髪結床 | 作りごと
イオオイ: 割戻し | 引き起し | 不行届 | 引き戻し
ウイウイ: ぐいぐい | 振り向い | 内々 | ふり向い
ウオウイ: 丸の内 | ざくろ口 | 嘘つき
アウアウ: 遥々 | ますます | なくなる | 策略 | 明々白々
イオオエ: 見届け | 鬨の声 | 人声
アウアエ: 慰め | 誂 | 油絵 | あくまで
エイオウ: 帝国 | 例刻 | 手ひどく | 勢力
ウイウエ: 口癖 | 突き抜け | すりつけ | 撲りつけ | 売りつけ | くぐり抜け
アウオウ: 約束 | 白墨 | 溌墨
イウウイ: 昼過ぎ | 荷作り | 引き続き
オアアア: 親方 | どたばた | 穏やか
イアイア: にやにや | いやいや | 近々 | ぴかぴか | ちらちら
オエアア: それから | これから | それなら
アウウイ: 親譲り | 減らず口 | あくる日 | 暇潰し | 一夜作り | 悪口 | 腹鼓
オアアイ: 細長い | 心当り | 細かい | お話し | お話 | 呼ばわり
イアイイ: しまいに | 一概に | 忌々しい | 次第に | 今一 | みだりに | 近しい
ウアエウ: つかえる | ラフハエル | 加える | 食わせる | 生れる | 疲れる
エイアイ: 生来 | 精出し | 植木鉢 | 例外 | 負け嫌い | 勝手次第 | 制裁 | 敬愛 | 体裁 | 盛大 | 境内
ウアイイ: 爪弾き | 詳しい | むずかしい | 逞しい | 恥ずかしい | なつかしい | 珍しい
エイアウ: 零落 | 計画 | 贅沢 | 迷惑 | 軽薄 | 明白 | 席末 | 刑罰 | 計略 | 警察
エアエア: べらべら | へらへら | ぺらぺら
ウアイウ: 恭しく | 詳しく | むずかしく
アイエイ: 大抵 | 来歴 | 大勢
ウアアアッ: 済まなかっ | ぶら下がっ | ぶらさがっ
オイウイ: 持主 | 飛び付い | 取りつき | 追い付い | 取次 | 落ちつい | 追いつい
アイエウ: 始める | 剴切 | はいれる | 来月 | 大切
アエオエ: 跳ねのけ | あべこべ | 掛声
アイエエ: 初めて | 始めて | はじめて | 始めれ
イイイイ: しきりに | 敷石 | 一々
オイウエ: 起き抜け | 年上 | 押しつけ | 乗りつけ | 呼びつけ
アエオオ: 掛物 | 比べ物 | 考え物 | 化物
オイアア: 蝙蝠傘 | 年嵩 | 吉川 | 取り合わ | 実しやか | 取り去ら | 小日向
イオイウ: 飛び降りる | ひとしく | 飛び起きる | 潮水
エイウウ: 制服 | 呈する | 静粛
アイイイ: 差し引い | 毎日 | 淋しい
オイアイ: 動き出し | 飛び出し | 急ぎ足 | 呼び出し | 思い出し | おしまい | 読み書き | 誘い出し | 追い出し | 取り出し
オオアア: 世の中 | ことさら | 事柄 | そのまま | 心から
アイイウ: あいにく | 生憎 | 代筆
オイアウ: 持ち出す | とにかく | 追い出す
オオアイ: 友達 | お貰い | 驚かし | 重たい | 猪口才 | 喜ばし | 断わり | 出来損ない | ころがり
イオイオ: いよいよ | いろいろ | ひろびろ | にこにこ
イウアイ: 気遣い | 陸海 | 陰気臭い
オオアウ: ともかく | 断わる | 思わず | 教わる
オオオア: ところが | 及ぼさ | 床の間 | どころか
オイアエ: 取り換え | こしらえ | 持前 | 取り上げ | 読みかけ | 拵え
オイオイ: 飛び降り | 時々 | 折々 | のびのび | 面白い | 飛び起き | 懲り懲り | 飛び下り | 年寄
オオオイ: 驚 | 驚い | 心持ち | 試み | もとより | 横取り | 一昨日
オイオウ: 面白く | 乗り込む | 呑み込む
ウウウウ: むずむず | ゆるゆる | つるつる | ぬるぬる | くすくす | ぐるぐる | 復する | 祝する | 粛粛
イウアエ: 差支え | ぱちつかせ | 差し支え | 水飴
オオオウ: ことごとく | 喜ぶ | 及ぼす | 驚く
オイオエ: 乗りこえ | 飲み込め | 取り寄せ | 呼び寄せ | 押し寄せ
オオオエ: 心得 | 整え | 物覚え | 懐手
イオエウ: 押し込める | 聞える | 引き込める | 踏み込める
ウウアイ: 行く先 | うるさい | 少ない | 古町 | 振舞
オオオオ: のそのそ | ごろごろ | ホホホホ | 色男 | そろそろ | きょろきょろ | ぞろぞろ | ちょろちょろ | そこそこ | よろよろ | もともと | 所々
オアイア: いつの間にか | 床柱 | こないだ
アウエイ: 比較的 | 着席 | 中学生
オアイイ: 可笑しい | お座敷 | 男らしい | 大人しい | おかしい
イアアア: いささか | 引き払わ | 鬼瓦 | 今さら | 北側 | 見せびらかさ | 憚りながら | いかさま | 平仮名 | 見当ら
アウエウ: なるべく | 格別 | 省ける | 授ける | 尋ねる | はずれる | 外れる
ウウオウ: 宿直 | 図太く | どす黒く
オアイウ: 大人しく | 男らしく | 同じく
アアウア: 鎌倉 | 腥 | 川村
イアアイ: 冷やかし | きたない | 見当り | 踏み鳴らし | 月あかり | ひやかし | 立ち上がり | 見廻し | お目にかかり | 頂い | 見せびらかし | 突き当り | いまだに | いただき | 頂 | 宮崎 | 申し渡し | 咳払い | 星明り | にわかに | 冷かし | 戴い
イエアイ: やり切れない | 生垣 | してやり
アアウイ: 蝦蟇口 | 明るい | 盃 | 絛虫 | あかるい | 藁葺
イアアウ: しばらく | 気味が悪 | 起き上がる | ちらかす | 思い当る | 飛び上がる | いやがる | 踏みならす | 見せびらかす | 見渡す | ひやかす | 冷かす | 散らかす | 引き払う | 極まる | 頂く | 引き下がる | あしからず | 従う
アアアア: 真逆様 | かかわら | なかなか | ハハハハ | がらがら | がやがや | わざわざ | アハハハ | ざらざら | かたがた | あやまら | からかわ | はなはだ | 片仮名 | ハハハハハ | 方々 | 長々 | たまたま | だらだら | 我儘
アウエオ: 尋ねよ | 名づけよ | あずけろ | 貫けよ
イアアエ: 不仕合せ | 申し合せ | 打ち合せ | 冷汗 | 待ち合せ | 仕合せ | 見合せ | 戴け | 極まれ | 召し上がれ
アアアイ: つまらない | 乾かし | くだらない | 山嵐 | 賄 | あやまり | 払わし | 働い | 働き | たまらない | かがやい | 早足 | あらわし | 塊 | 吾輩 | 挟まり | 腹這い
アエアイ: 鍋焼 | 流れ出し | 揚足 | 情ない
アアアウ: 必ず | 働く | かかわる | 関わる | あいかわらず | あやまる
アアウエ: 片付け | 傾け | 片づけ | 仲間外れ
アアアエ: 改め | 力任せ | 早かれ | あらわれ | 表せ | 腹立て
イアウア: いたずら | 括り枕 | 悪戯 | ひらつか | 太神楽 | 気が付か | 気がつか
イアオオ: 源 | いた事 | 今頃 | 近頃
オーアアイ: 大当り | 大騒ぎ | 遠廻し
オアエウ: 答える | もらえる | 咎める | 唱える | そがれる | 抑える
イアウイ: 毬栗 | 気がつい | 気が付い | ねりあるい | 近づい
ウエオイ: 受持ち | 受持 | 受け取り
エイエイ: 衛生 | 兵営 | ねちねち | 成績 | 命令 | めいめい | 姓名 | 辟易
アイウイ: 大好き | 人指しゆび | 暮し向き | 毎月 | 泣きつい | 人指し指 | 足踏み
アオウイ: 門口 | 腹の中 | 顔つき
ウイエイ: ついでに | 水底 | 隠し芸 | 不利益
アイウウ: 大仏 | に対する | 怪物 | 外出 | 退屈
オウアイ: 小使 | 小遣い | 小遣 | 欲張り
アイウエ: 何くれ | 縛りつけ | 張り付け | 待ち受け | 巻き付け | 叩きつけ | 張りつけ | 怒鳴りつけ | たたきつけ
ウオエウ: 帝国ホテル | つとめる | 勤める | 務める
オイアアッ: 飛びかかっ | 飛び上がっ | 持ち上がっ | 躍り上がっ | 起き上がっ | 取りかかっ
アウイイ: 巾着切 | 軽石 | 私儀
オオエウ: 泳げる | 恐る | 求める | 覚える | 見届ける
ウアウア: ぐらぐら | むしゃむしゃ | すたすた | くさくさ | ぬらぬら | ぶらつか | ぶらぶら | すらすら | ふわふわ | うじゃうじゃ | 無茶苦茶 | ずたずた
ウアアア: 神楽坂 | 船端 | 下さら | つながら | 丸裸 | 伺わ
アイオイ: 大の字 | 焼餅 | 立のい | 相生 | すばしこい | 毎年
イウエウ: 張り付ける | 呼び付ける | 突きつける | きつける | 踏みつける | 撲り付ける | 売りつける | 取り鎮める
ウアアイ: 下さい | いけ好かない | 紫 | 裏町 | 済まない | 伺い | 再び
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment