はじめに
Mecabには形態素解析ウェブアプリUniDic-MeCabやMeCab/Unidic Demonstration といったオンラインデモサイトがありますが、2022年3月現在spaCy/GiNZAのデモサイトはなさそうなのでHerokuで立てました。
2022年11月Herokuの無料枠が終了したため、Render.comで立てました。
さっそく、オンラインで試したいという方は下記にアクセスしてみてください。
https://chai3.github.io/spacy-ginza-online-demonstration/
spaCy/GiNZAとは
GiNZA は、Universal Dependencies(UD)に基づいたオープンソースな日本語処理ライブラリです。
spaCyというMITライセンスで商用レベルな自然言語処理フレームワークをベースに構築されています。
Herokuとは
HerokuはWebアプリケーションのためのクラウドプラットフォームです。無料プランもあり、簡単にWebアプリをホスティングすることができます。
runtime.txtにPythonのバージョン、ProcfileにWebアプリの起動方法
requirements.txt(Pipfileでも可)にpip依存関係を書けば、サーバーを立ち上げることができます。
また、Github連携で自動デプロイも簡単です。
工夫した点など
Heroku無料プランでは30分未使用で停止され、コールドブートが発生してしまいます。
有料プランかHeroku公式提供のHeroku Schedulerで常時起動すれば回避できますが、今回は以下の緩和策を行い許容することにしました。
Render.comもHeroku同様に未使用で停止され、コールドブートが発生してしまいます。
今回は以下の緩和策を行い許容することにしました。
- htmlなど静的ファイルはGithub pagesによりホスティングする
- ユーザーがそのhtmlを表示した際/warmup APIを空打ちしてHerokuのDyno(コンテナ)を起動する
- /analyze API呼び出し時(RUNクリック時)はVuetifyのv-progress-linearで処理中をアピールする
- このときDyno起動処理中であっても通信エラーにならず、キューにたまるためfetchのリトライ処理は不要のようです
また、spaCy/GiNZAのja-ginza-electraモデルは精度は高いものメモリ使用量が高いため、従来のja-ginzaモデルを利用しました。
参考サイトなど
- 自然言語処理ライブラリGiNZAの解析結果を解りやすく表示してみた - Qiita
- GiNZA v5.0.0 重要な変更
- ginzaコマンドのオプション
- Sudachi The modes of splitting
無料で試せて月額固定ならHerokuがおすすめ - Qiita- Server Workers - Gunicorn with Uvicorn - FastAPI
最後に
ソースコードはGithub にあります。
皆さんもspaCy/GiNZA オンラインデモで感触を試し、興味がある方はローカルでもspaCy/GiNZAを使ってみてください。