soy-curd's blog

へぼプログラマーです [https://twitter.com/soycurd1]

自動要約プログラムshucaを使ってニ郎コピペを要約した

はじめに

2chまとめを読んでいたら、"長い"みたいなレスを投げられていた二郎コピペがあった。せっかく名文なのに長いの一言で一蹴されては報われないので、日本語の自動要約をしてくれるshucaを用いて短く要約してみた。

shucaとは?

github.com

python2系で動く自動要約プログラム。shuca単体では動作せず、他に京大で開発されているjuman(形態素解析プログラム)とknp(構文解析プログラム)が必要。

実際に要約してみる

まずはコピペを以下から拾ってくる。

fullopen.blog.jp

■その50
今日、ついに二郎デビューしたんでレポっす!

川崎店に行ったらすごい行列でまずびっくり!
すっげえな!と思って店の中を見て、
みんなが食ってるラーメンのボリュームを見てまたびっくり!
これが二郎・・・と、思わずヨダレが出る。
待つ事20分、やっと席につくことができた。
「ヤサイマシマシ、ニンニクチョモランマ!」並んで待っている間に、
他の客から呪文はラーニングしていた。
聞き返されることなく店主にコールが伝わり、ただそれだけの事が嬉しい・・・!
イカンイカン、食う前から俺、既に二郎にハマっとるw
すると、俺より1分遅れて左側の席に着いたやつが、トントンと俺の肩を叩く。
「キミ、大豚頼んだでしょ。バトルしようよ。」と、
大豚はおまえだろ、と突っ込みたくなるような
デブが話しかけてきた。・・・バトル?何いきなり言ってきてるんだこいつ。
「ここ、ラーメン屋ですよね?バトルってどういうことですか?」
と聞き返すとその大豚は呆れ顔で
「へぁ?二郎って言ったらバトルは常識っしょ。
あ、キミのホームではデュエルって言うのかなw」
とブヒブヒ笑っている。

そこでハッと、俺はいつか見た二郎コピペを思い出した。
そうだ・・・あそこにも確か、バトルがどうのこうの書いてあったな・・・。
ここでバトルを断ったら、ロット乱し(?)と思われてしまうかもしれない・・・!
「OK、そのバトル受けよう。開始の合図は?」
「ブヒヒ。合図もなにも、目の前に二郎が出てきたらバトルスタートだよ。」
なるほどそういうものか。
そのとき、ドンッ!と目の前に野菜山盛りの二郎が置かれた。
バトルスタートだ!
すかさず俺は、左ひじを大豚の顔面に思い切り叩き込む。飛び散る血しぶき。
大豚の脂ぎった髪の毛をつかみ、何度もみぞおち目掛けヒザをブチ込む。
よろける大豚の軸足を正面から蹴りつけると、
ボクッ!っといい音がして脚の骨が砕けた。
大豚が床に突っ伏し、ぴくりとも動かなくなるまでわき腹を蹴り続けた後、
俺はゆうゆうと激ウマ二郎を二人分たいらげ、店主に軽く会釈して店を出た。
初二郎でしかもバトル勝利のおまけつき!二郎最高ー!

以上、チラ裏っす。

確かに長いかもしれないので、要約してみる。

インストール手順は以下(履歴の切り貼りなので適宜調節してください)。

その後、解析したい文章を適当なファイル(下例ではtmp.txt)に格納し、

cat tmp.txt |juman |knp -simple -anaphora | ./lib/Shuca.py 

すれば結果がとれる。

解析結果

■その50
今日、ついに二郎デビューしたんでレポっす!

これが二郎・・・と、思わずヨダレが出る。
「へぁ?二郎って言ったらバトルは常識っしょ。

そこでハッと、俺はいつか見た二郎コピペを思い出した。
「ブヒヒ。合図もなにも、目の前に二郎が出てきたらバトルスタートだよ。」
俺はゆうゆうと激ウマ二郎を二人分たいらげ、店主に軽く会釈して店を出た。
初二郎でしかもバトル勝利のおまけつき!二郎最高ー!

以上、チラ裏っす。

確かに、短くなった。 ストーリーがカットされているぶん、文章の勢いが増した気がする。『バトルスタートだよ→ゆうゆうと激ウマ二郎を二人分たいらげ〜』のくだりが非常に楽しい。

終わりに

他にもいろいろな文章で試してみたいが、knpが結構解析に時間かかるっぽいので試行錯誤中です。

入門 自然言語処理

入門 自然言語処理