Apitore blog

Apitoreを運営していた元起業家のブログ

【API】kuromoji-ipadic-neologdをWebAPIで利用できるようにしました

はじめに

今となっては少し古い情報ですが、neologd(ネオログディー)という辞書が2015年3月に公開されました。neologdはいわゆる新語辞書です。kuromojiという形態素解析器のgithubプロジェクトにneologd対応版が登録されていたので、そちらをWebAPIにして公開しました。このWebAPIのソースコードはGithubで公開しています。 amarec(20160711-220733)

API

日本語形態素解析WebAPI

サンプルコード

ちょっと補足説明

neologd辞書の詳細についてはこちらを参照するとよいと思います。一言でいえば、最近の語(新語)を含む文章を正しく形態素解析できます。残念ながら崩れた表現(e.g. ねみい、ねむーい)は対象じゃありませんが、「きゃりーぱみゅぱみゅ」などはちゃんと形態素解析できます。すばらしい。 neologdのgithubプロジェクトはこちらで、辞書データは週に2回ほど更新されています。そして定期的にgithubにアップデートされています。残念ながらkuromojiのほうはneologdのアップデートにそこまで追従してアップデートはしていません。 neologdはとても大きな辞書で、2GB以上のメモリの空きがないとコンパイルすらできません。公式にはメモリ5GBを推奨しています。辞書のコンパイルさえ済めば、kuromojiでneologd辞書を使うときは1GB未満のメモリ占有で収まっています。それなりにハイスペックなPCが必要なので試したくても試せない方がいらっしゃるのかなと思い、kuromoji版をWebAPIにしてApitoreで無料で公開しました。WebAPIのソースコードはGithubで公開しています。

WebAPIの特徴

実行環境は以下です。

  • Maven 3以上
  • JDK 1.8以上

コンパイルして実行する手順は以下です。

  1. kuromoji-ipadic-neologd」を「mvn clean install」する。
  2. kuromoji-ipadic」を「mvn clean install」する。
  3. api-kuromoji-server」を「mvn clean package」する。
  4. 「java -jar api-kuromoji-server.jar」する。

通常版は「http://localhost:30201/kuromoji-ipadic/open/tokenize?text=hoge」で動きます。neologd版は「http://localhost:30201/kuromoji-ipadic-neologd/open/tokenize?text=hoge」で動きます。「hoge」の部分を適当なテキストで置き換えてください。 Apitoreで公開するにあたって内部的にEureka ServerにAPIを登録しに行きますが、Eureka Serverはなくても動作します。また、Apitoreで公開するにあたって入力テキスト長を400文字までとしています。 swaggerでAPI部分を整備していて、swagger-uiを使えば素敵なUIが使えます。こちらもApitoreで公開するにあたってOauth認証の関係の記述を追加しています。こちらのプロジェクト単体で使う場合は気にしなくてOKです。 spring-frameworkを使っているので、負荷には強い作りになっています。Thread Safeになっているので、多重同時アクセスでも頑健です。

ApitoreでのAPIの使い方

こちらにアクセスします。「使い方」の「Swagger-UI」をクリックします。 amarec(20160711-221137) access_tokenにアクセストークンを、textに形態素解析したいテキストを入力します。アクセストークンの発行の仕方はこちらを参照してください。 amarec(20160711-221254)

おわりに

以上でkuromojiのneologd辞書版形態素解析について説明は終わりです。APIの形で公開しておけば、IoT端末のようにハイスペックなCPUとメモリが積めない端末からでも利用できて便利です。ご不明点があればコメントください。

2017/2/27追記

APIコールのRubyサンプルを追加しました。