LoginSignup
6

posted at

updated at

自然言語処理ライブラリspaCy/GiNZAのオンラインデモサイトを立ててみた

はじめに

Mecabには形態素解析ウェブアプリUniDic-MeCabMeCab/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モデルを利用しました。

参考サイトなど

最後に

ソースコードはGithub にあります。
皆さんもspaCy/GiNZA オンラインデモで感触を試し、興味がある方はローカルでもspaCy/GiNZAを使ってみてください。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
6