リクルートの大杉さんがsummpyという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 &
-h
に0.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です。
あとは試しに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')
今回はここまでにします。