どうも、Champignon(きのこ)です。
今回は、プログラミングのお話です。
この記事を読んでいただきたい方
●Pythonで文章要約したい方
●ウェブアプリケーション(Django)に要約機能を搭載したい方
前回、
Django×ワードクラウドで好きな小説を画像化しよう!【画像あり】という記事を上げました。
その後、「ログイン機能」などを搭載していこうとしたのですが、
飽き性の私は、
「なんかもっと機能追加してかっこいいアプリにしたい!!!」
というあほみたいな発想に至りました。。。
(いったんサーバーにおいてウェブで使えるような状態にできるようになってからやれよ、、、ってほんと思います。)
そんな思い付きがどんな感じになったのか、お付き合いいただければ幸いです。
(後述しますが、若干ミスってしまい、あまりよろしくない機能になってしまいました。今回の記事は、素人がもがいてるなーって感じで優しく見てくださいw)
搭載した機能
前回、小説をワードクラウド化する機能を作っていたので、テキスト処理と親和性のある機能を探しました。
そこで思いついたのが、「文章要約」でした。
本当は、Attentionベースのものを作りたかったのですが、まだやりかけのまま放置していたので、とりあえずもっと簡単に実装できるものを探しました。
すると、「sumy」というライブラリがあるのを発見しました。sumy_pypi
これは、
Simple library and command line utility for extracting summary from HTML pages or plain texts. The package also contains simple evaluation framework for text summaries. Implemented summarization methods: sumy_pypiより
すなわち、「要約して、それを評価するための機能を備えたライブラリ」です。
しかも、要約の手法もいろいろ用意されているので、試してみてよさそうなものを採用するものいいかもしれませんね!!
今回は、手っ取り早く実装したかったので、他のサイトでもよく使用されていた”LexRank”を使用しました。
Unsupervised approach inspired by algorithms PageRank and HITS, reference
ということですが、早く実装したいので、実装出来たらちゃんと勉強します笑
どんな感じになった?
でお見せしたアプリケーションに追加しました。
それが、こんな感じになりました!!!
『銀河鉄道の夜』宮沢賢治
画面がぎちぎちなのは、ご了承くださいw
無事、「ワードクラウド」と「要約文」が表示されています。
ワードクラウドの方は有名な「ジョバンニ」や「カムパネラ」がしっかり大きくなってますね!
要約の方はどうでしょうか?人それぞれ記憶に残っている部分は違うと思うので、感想を聞かせてください!!
それはひる学校で見たあの図よりはずうっと小さかったのですがその日と時間に合せて盤をまわすとそのとき出ているそらがそのまま楕円形のなかにめぐ
ってあらわれるようになって居りやはりそのまん中には上から下へかけて銀河がぼうとけむったような帯になってその下の方ではかすかに爆発して湯気で
もあげているように見えるのでした。
鷺をつかまえてせいせいしたとよろこんだり白いきれでそれをくるくる包んだりひとの切符をびっくりしたように横目で見てあわててほめだしたりそんな
ことを一一考えているともうその見ず知らずの鳥捕りのためにジョバンニの持っているものでも食べるものでもなんでもやってしまいたいもうこの人のほ
んとうの幸になるなら自分があの光る天の川の河原に立って百年つづけて立って鳥をとってやってもいいというような気がしてどうしてももう黙っていら
れなくなりました。
そのとき俄かに大きな音がして私たちは水に落ちもう渦に入ったと思いながらしっかりこの人たちをだいてそれからぼうっとしたと思ったらもうここへ来
ていたのです。
それはだんだん数を増して来てもういまは列のように崖と線路との間にならび思わずジョバンニが窓から顔を引っ込めて向う側の窓を見ましたときは美し
いそらの野原の地平線のはてまでその大きなとうもろこしの木がほとんどいちめんに植えられてさやさや風にゆらぎその立派なちぢれた葉のさきからはま
るでひるの間にいっぱい日光を吸った金剛石のように露がいっぱいについて赤や緑やきらきら燃えて光っているのでした。
」ジョバンニは思わずかけよって博士の前に立ってぼくはカムパネルラの行った方を知っていますぼくはカムパネルラといっしょに歩いていたのですと云
おうとしましたがもうのどがつまって何とも云えませんでした。
ミスった、、、
他の方の実装では、よく「動詞」など活用を原型に変形させてから、要約を開始していらっしゃいました。
当然、「同じ単語が活用が違うことで別の単語と認識されてしまう」よりも精度があがるのは間違いないです。
調子にのっていろいろ手を広げたがるから1つ1つが雑になってしまいました。
次に記事にするときは、もう少し頑張ります。
ほな、さいなら。