リクルートの公開したSummpyを試してみました

  • 13 Nov 2015

リクルートの大杉さんがsummpyというAPIを公開していたので試してみました。

リクルートの大杉さんがsummpyというAPIを公開していたので試してみました。

自動要約APIを作ったので公開します

ソースはこちら。

https://github.com/recruit-tech/summpy

必要環境

  • Python 2.7.*
  • numpy
  • networkx
  • scikit-learn
  • cherrypy
  • MeCab or janome
  • pulp (if you use 'algo=mcp')

環境構築

必要なモジュールが多いのと、WindowsでMeCabは個人的に鬼門のためVagrantからVM上に構築。OSはubuntu14を利用します。

まずはpipと必要なモジュールインストール。

sudo apt-get update

# git 
sudo apt-get install git

# pip インストール
curl -kL https://bootstrap.pypa.io/get-pip.py | sudo python

# numpy
sudo apt-get install python-numpy

# networkx
sudo pip install networkx

# scikit-learnに必要なSciPyをインストール
sudo apt-get install python-scipy

# scikit-learn
sudo pip install scikit-learn

# cherrypy
sudo pip install cherrypy

# MeCab
sudo apt-get install mecab
sudo apt-get install python-mecab
sudo apt-get install mecab-ipadic-utf8

# pulp
sudo pip install pulp

scikit-learnだけ依存関係があるため、先にscipyをインストールする必要があります。
他はまとめてインストールでも問題なさそうです。

サーバー立ち上げてみる

ポート8080番でAPIサーバー立ち上げます。

git clone https://github.com/recruit-tech/summpy.git
cd summpy
sudo nohup python api/server.py -h 0.0.0.0 -p 8080 > out.log &

-h0.0.0.0を指定しているのは、Vagrantからportforwardするときにホスト名がlocalhostでは機能しないようなので。

参考:Vagrantのport forwardingができなかった

さらに、VM側でfirewallの設定を行っている人は8080ポートを開けてください。

ufw allow 8080

あとはVagrantfileに以下を追記。

config.vm.network "forwarded_port", guest: 8080, host: 8080

リロードします。

vagrant reload

HOSTから以下のURLにアクセスします。

http://localhost:8080/static/test.html

以下のような画面がでればOKです。

test.html

あとは試しにHOSTのブラウザから

http://localhost:8080/summarize?sent_limit=3&text=何か文章

でアクセスしてみてください。
おそらくjson形式のレスポンスが返ってくると思います。

もしjsonが文字化けしていたら、summpy/api/server.pyの106行目を以下のように修正するとよいでしょう。

- ('Content-type', 'application/json')
+ ('Content-type', 'application/json; charset=utf-8')

今回はここまでにします。