文章中から韻を踏んでいるフレーズの組み合わせを検出する gem を作りました

## 概要

昨今の日本語ラップの需要は急速に伸びており、いくら韻を踏んでも供給が追いついていない状態です。このような韻(ライム)の不足は大きな社会問題になりつつあります。そこで少しでもこの問題を解決に近づけられたらと考え、与えられた文章(リリック)の中からライムを検出するツールを作りました。業務上どうしても急ぎでライムが必要な場合に、アイデアを集める方法の一つとして役に立つ可能性があります。

https://github.com/suzuki86/rhymer

## インストール方法

リポジトリをクローンします。

```
git clone https://github.com/suzuki86/rhymer.git
```

クローンしたディレクトリに移動します。

```
cd rhymer
```

Gemをビルドします。

```
gem build rhymer.gemspec
```

インストールします。

```
gem install rhymer-x.x.x.gem
```

## 依存関係

`natto` が利用できる必要があります。

## 使い方

`Rhymer::Parser.new`の引数に文章を渡すと、検査結果が含まれたインスタンスが生成されます。インスタンスの`rhymes`メソッドを実行すると、韻を踏んでいるフレーズの組み合わせの配列が返されます。

```rb
require "rhymer"

rhymer = Rhymer::Parser.new("今日はとても良い天気ですね。こんな日は自然に元気になります。")
rhymer.rhymes.each do |rhyme|
  puts [rhyme[0], rhyme[1]].join(" ")
end
```

上記のコードを実行すると下記の結果が出力されます。

```
今日は良い天気 こんな日は自然に元気
```

また、Wikipediaの「江戸時代」の「開国・日米和親条約」の段落の文章を与えてみたところ、それらしい結果を返してくれました。

https://ja.wikipedia.org/wiki/%E6%B1%9F%E6%88%B8%E6%99%82%E4%BB%A3

```rb
require "rhymer"

lyric = <<"LYRIC"
1853年（嘉永6年）、長崎の出島への折衝のみを前提としてきた幕府のこれまでの方針に反して、江戸湾の目と鼻の先である浦賀に黒船で強行上陸したアメリカ合衆国のマシュー・ペリーとやむなく交渉した幕府は、翌年の来航時には江戸湾への強行突入の構えを見せたペリー艦隊の威力に屈し、日米和親条約を締結、その後、米国の例に倣って高圧的に接触してきた西欧諸国ともうやむやのうちに同様の条約を締結、事実上「開国」してしまった>。 同年6月22日、12代将軍家慶が「今後の政治は徳川斉昭と阿部正弘に委ねる」と言い残して61歳で亡くなった。同年7月1日、幕府、国書を諸大名に示し意見を問い、3日にはお目見え以上の幕吏にも意見を問うた。260年間>「知らしむべからず、由らしむべし」を大法則としてきた幕府にとっては大方向転換であった[9]。
開国した後は日本のどの沿岸・海岸に外国船が来航するかも知れない事態となり、1853年（嘉永6年）8月から江戸湾のお台場建設を始めた。そして、同年9月15日、幕府は、大型船建造を許可することになった[† 3]。さらに>オランダに軍艦・鉄砲・兵書などを注文した。
その後、さらに1858年（安政5年）4月、井伊直弼大老に就任する。米・蘭・露・英・仏の五カ国と修好通商条約と貿易章程、いわゆる安政五カ国条約（不平等条約）を締結し、日本の経済は大打撃を受けた。8月、外国奉行を設置する。同月孝明天皇条約締結に不満の勅諚（戌午の密勅）を水戸藩などに下す。また、幕府にも下す。この年7月13代家定没し、10月25日に14代家茂征夷大将軍・内大臣に任ぜられる。翌年6月から横浜・長崎・箱館の3港で露仏英蘭米5カ国との自由貿易が始まった。取引は、日本内地での活動が条約で禁止されていたため外国人が居住・営業を認められていた居留地で行われた。輸出の中心は生糸・茶であった[10]。輸出の増大は国内の物資の不足を招き、価格を高騰させた。他方、機械性の大工業で生産された安価な欧米の綿織物や毛織物などが流入してきた。横浜港で輸出が94.5%、輸出が86.8%行われ、相手国では英が88.2%、仏が9.6%、ついで米、蘭への輸出であり、輸入では英が88.7%を占めついで蘭、仏、米、プロシア、露へであり、輸出入とも英との取引が主であった。また、国内の銀価格に対する金価格が欧米より低かったため、おびただしい量の金貨が海外へ流失した。こうして開港による経済的変動は下層の農民や都市民の没落に拍車をかけていった[11]。
下級武士や知識人階級を中心に、「鎖国は日本開闢以来の祖法」であるという説に反したとされ、その外交政策に猛烈に反発する世論が沸き起こり、「攘夷」運動として朝野を圧した。世論が沸き起こること自体、幕藩体制>が堅牢な頃には起こり得ないことであったが、この「世論」の精神的支柱として、京都の天皇=帝（みかど）の存在がクローズアップされる。このため永い間、幕府の方針もあり、政治的には静かな都として過ごしてきた京都
がにわかに騒然となっていき、有名な「幕末の騒乱」が巻き起こる。
LYRIC

r = Rhymer::Parser.new(lyric)

r.rhymes.each do |rhyme|
  puts [rhyme[0], rhyme[1]].join(" ")
end
```

結果は下記となります。

```
アメリカ合衆国のマシュー・ペリーと交渉 機械性の大工業
江戸湾の目と鼻の先である浦賀に黒船で強行 価格を高騰
江戸湾の目と鼻の先である浦賀に黒船で強行 西欧諸国とやむやのうちに同様
幕府のこれまでの方針 開港による経済的変動は下層の農民
アメリカ合衆国のマシュー・ペリーと交渉 同月孝明天皇条約締結に不満の勅諚
江戸湾の目と鼻の先である浦賀に黒船で強行 いわゆる安政五カ国条約不平等
アメリカ合衆国のマシュー・ペリーと交渉した幕府 開港による経済的変動は下層の農民や都市民の没落に拍車
アメリカ合衆国のマシュー・ペリーと交渉 価格を高騰
アメリカ合衆国のマシュー・ペリーと交渉 西欧諸国とやむやのうちに同様
アメリカ合衆国のマシュー・ペリーと交渉 翌年の来航時には江戸湾への強行
江戸湾の目と鼻の先である浦賀に黒船で強行 機械性の大工業
江戸湾の目と鼻の先である浦賀に黒船で強行 同月孝明天皇条約締結に不満の勅諚
江戸湾の目と鼻の先である浦賀に黒船で強行 アメリカ合衆国のマシュー・ペリーと交渉
前提としてきた幕府 開港による経済的変動は下層の農民や都市民の没落に拍車
長崎の出島への折衝 オランダに軍艦鉄砲
アメリカ合衆国のマシュー・ペリーと交渉 外国奉行
アメリカ合衆国のマシュー・ペリーと交渉 米蘭露英仏の五カ国と修好通商
浦賀に黒船で強行上陸したアメリカ合衆国 大法則
浦賀に黒船で強行上陸 量の金貨が海外へ流失
江戸湾の目と鼻の先である浦賀 量の金貨
江戸湾の目と鼻の先である浦賀 工業で生産された安価
江戸湾の目と鼻の先である浦賀 1853年嘉永6年8月から江戸湾のお台場
江戸湾の目と鼻の先である浦賀 12代将軍家慶が今後の政治は徳川
```

## おおまかな仕組み

- 与えられた文章についてMeCabで形態素解析を行い名詞だけを列挙します。
- 名詞をローマ字に変換します。
- ローマ字に変換された名詞の子音と母音の並びを比較して韻を踏んでいるっぽいの名詞の組み合わせを列挙します。母音が一致しているほどスコア(ヴァイブス)を加算し、しきい値よりもヴァイブスが高い場合にライムとみなします。
- ライムと判定された名詞から文章をさかのぼり、適当にフレーズになるように文章を切り取ります。