#きっかけ
flask、herokuを利用し、ちまちまとテキストマイニング・可視化webアプリを作っていた。
ある日、nteractを知る。
nteract
https://github.com/nteract/nteract
https://blog.nteract.io/designing-the-nteract-data-explorer-f4476d53f897
・自動インタラクティブ可視化機能がついたjupyter notebookだとおもいねぇ。
「おう、pandasのDataFrame表示するんと同じ手間でこんだけ可視化できるんけ。こりゃ使うてみるしかあるまぁのう・・・(試用中)・・・なんぼか弱点はあるのう・・・
弱点はあらぁが、webアプリとできれば、ハードを選ばずどこからでもやりたいときに速やかに可視化できよる。制限の多いGoogle Colaboratoryより、ある意味便利かのう。」
というわけで、
heroku上でnteractを稼働させてみた。
#参照
*なぜかnteractの情報はあまりないのよね・・・
Pythonを使った機械学習の勉強にはJupyter NotebookをHerokuの無料枠で立ててスマホからでも実行できるようにして共有しよう
https://qiita.com/G-awa/items/8530a10cb847e4080df3
Deploy a Jupyter Notebook Online with Voila and Heroku
https://pythonforundergradengineers.com/deploy-jupyter-notebook-voila-heroku.html
#構成
heroku:アプリケーションサーバー
nteract:heroku上で起動させる
github private:ファイルサーバー
#コード
- 次のファイルを作成しデプロイ。指定されたアドレスを開けば動く。
- 注意:herokuの準備および説明は省略します。
- 注意:パスワードなどセキュリティ関連の処理は省略します。足すことを強くお勧めします。
- 注意:githubのpriveteをファイルサーバー代わりとしていますが、関連する処理は省略します。
xxxxxx (任意)
┣ Procfile
┣ requirements.txt
┣ start_jupyter
┗ (任意のipynbファイルなど)
gunicorn==19.9.0
click==7.1.1
Flask==1.1.2
itsdangerous==1.1.0
Jinja2==2.11.2
MarkupSafe==1.1.1
numpy==1.18.3
pandas==1.0.3
plotly==4.6.0
python-dateutil==2.8.1
pytz==2019.3
retrying==1.3.3
six==1.14.0
Werkzeug==1.0.1
xlrd==1.2.0
nteract_on_jupyter
matplotlib
PyGithub
web: chmod +x start_jupyter ; start_jupyter
#!/usr/bin/env bash
jupyter nteract --no-browser --ip=* --port=$PORT
$ cd xxxxxx
$ git init
$ heroku create xxxxxx
$ git add .
$ git commit -m "first"
$ git push heroku master
#稼働例
herokuサーバーに常最新の前処理コードを記載したipynbファイルを置いておきけば、実行するだけで簡単に分析ができる。
#使用上の注意
herokuの仕様上、作成したデータやファイルは一定期間で消えてしまいます。必要なファイルがあるならば、herokuサーバー外に保存しておくことを忘れないようにしましょう。
(実行するごとにファイルをメール送信するコードを書いておく、などありえるでしょう。自分はそうしています。)
#参考
*要事mecabなど入れておいてもよいでしょう。
HerokuにMeCabを入れる際ハマっていた記録
https://qiita.com/kzuzuo/items/1b3e9c9af57bd4464690
*次、nteractベースに変更しても良いかな・・・
特許など比較的長文の文章間 類似可視化手法: tfidf/cluster vis: tfidf-word2vec-clustering visualization
https://qiita.com/kzuzuo/items/8a80d8974bf3a7db7e54
*次のようにin/outのないipynbファイルを入れておくのもよい
e-Gov法令APIとXML Pythonを用いた特定ワードが含まれる条文抽出
https://qiita.com/kzuzuo/items/d53ff2e092a69424fea0
*nteractではなくjupyter notebookであってもやることは同じ。
*webアプリ単体として成り立たせるならば、Dashで良い気もしている。
*pandasベースのインタラクティブ可視化手法には、Pandas-Bokehもあるらしい。
https://github.com/PatrikHlobil/Pandas-Bokeh/blob/master/README.md
*pandasベースのインタラクティブ可視化手法には、Cufflinksもある。
https://medium.com/@ozan/interactive-plots-with-plotly-and-cufflinks-on-pandas-dataframes-af6f86f62d94
→pandasのplot()からplotlyが呼べるようになったそうです。
pd.options.plotting.backend = `plotly`
df.plot.bar()
*インタラクティブ可視化手法には、もちろんplotlyもある。