Watson StudioにNLC向けのツールが入ったので使ってみた

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/e2983092-03e1-254d-d6f2-10123678f133.png)

:warning: 当記事は2018/07/01にBeta公開時点で投稿したものです。当機能は2018/08/10に:newspaper: [正式リリース](https://www.ibm.com/blogs/bluemix/2018/08/watson-nlc-tooling-ga/)されています。

<li>

# はじめに

全国一千万のNLCファン[^0]の皆様、お待たせしました！**2018/07/1付でWatson Studioの開発ツールにNLC(Natural Language Classifier)用のツールが入りました！**
:blue_book: Watson Studio [What's New](https://dataplatform.ibm.com/docs/content/getting-started/whats-new.html)

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/2707d207-5ec1-d868-e391-0eac4849baf0.png)

- :warning: **NLCはライト・アカウントではご利用いただけません** 

[^0]: 勢いで言いましたが、そんなにはいませんよね。。

NLC(Natural Language Classifier=自然言語分類器)は、入力された自然言語の文章を、あらかじめ決めておいたカテゴリーに分類する機能です。

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/ee79e77f-c68d-373a-a7c0-ff17e50dc7f0.png)

NLCはかなり以前から存在するWatsonのAPIですが、その後Watson Assistant（旧Conversation)のインテントの仕組みの流れに発展しました。[^1] 現在でも会話/チャットではなくFAQを検索するようなシステムにおいて、質問文の意図を理解するために広く使われています。その後、Watson AssistantはインテントをCSVでインポート/エクスポートするパネルをはじめ、かなりの機能強化が行われ、UIもツールも洗練されたものが提供されましたが、NLCは「APIでがんばって！」ってことで、ツール面では特に強化はなく放置状態でした。(まあそんなに複雑な機能ではないですが。。）

Watson Studioでは2018/3月のお披露目で「今後のWatson APIのカスタマイズ環境や使いやすくする機能はWatson Studio側に載せていくよ！」という発表をしました。その第一弾としてはVisual Recognitionが載りましたが、今回は**第二弾としてNLCがWatson Studio上のツールとして載りました**。

- :warning: 2018/7時点はベータとしてのお披露目です
- :jp: 日本語も使えます

[^1]: 正確には、NLCとWatson_AssistantのIntentは元になったシステムや解決する課題は同じですが、その後の進化が異なり現在はブツとしては似てますが別のものです。Assistantが内部的にNLCを呼んでいるわけではありません。

# で、要は何ができるようになったの?

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/13c0083d-3e2b-46ab-5c0c-a71c6e24a29e.png)

要は**Watson Studio上でNLCのトレーニングとテストのためのパネル/UIが使えるようになりました**。従来はNLCのトレーニングはCSVを用意してAPIでトレーニングを起動していましたしテストもAPIで行っていましたが、当UIを使えばプログラミングなしでもNLCの開発テストができるようになりました。(ぶっちゃけ、これ、Watson Assistantでは前からできていたので、Watson Assistantをご存知の方には「当たり前」で「え、今まで無かったのか」と思われるかもしれませんネ)

# やってみた

前置きはこれくらいにして、さっそく、やってみます。( :jp:日本語も使えます)

:blue_book: [Overview: Natural Language Classifier in Watson Studio](https://dataplatform.ibm.com/docs/content/analyze-data/nlc-overview.html?audience=wdp)

### NLCのサービスインスタンスの登録
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/488fd22e-705b-7672-4bec-ad6b20b01044.png)

( なければNLCのサービス・インスタンスを作成の上) Watson StudioのプロジェクトのSettingsでAssociated Serviceとして登録します。

### CSVファイルのアップロード

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/26f33e8c-2424-dac8-ac4a-23971fa48763.png)

「入力となる文章,分類」の形式のCSVファイルを用意し、Watson Studio のData Assetsとしてアップロードします。

- CSVはUTF-8であること
- 分類あたり、最低でも5つの例文が必要(ツールでチェックされます）
 
上の例では一連の文章をREPAIRというカテゴリーに分類しています。

### ツールの起動

前項の「New Natural Language Classifier model」をクリック
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/e2701d6c-e9d6-4463-424e-ff0383b4b97b.png)

表示されたパネルでCSVを選んで「Add to Model」

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/b46fa232-d19c-413c-7f11-c2051563a7ff.png)

エラーがある場合は解消しないとトレーニングが起動できません。たとえば上記のケースは「例文が最低の５個無いよ」と言っていますが、クリックすれば直接追加できます。（管理の面では元のCSVに追加して再度アップしたほうがよいのでしょうけれど)
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/83e03c5f-54e9-c9f9-f0e6-fa3ae7779388.png)

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/76256cdb-e351-7cea-0359-6363b4900b15.png)
エラーがすべて消えればトレーニングできるようになりますので、ボタンを押して、言語を指定して「Train」ボタン。しばし待ちます。。。 :clock9: 

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/dfe58c9c-1a50-41de-a0e6-f8a179a27282.png)

StatusがAvailableになればオーケーです。

### テスト
![image](https://qiita-image-store.s3.amazonaws.com/0/108535/2ab10ca8-1cd2-1972-f213-33d6c625aaae.png)
「Test」タブでテストできます。文章を入力して「Classify」を押すと分類結果が表示されます。

![image](https://qiita-image-store.s3.amazonaws.com/0/108535/16b429b3-9233-586d-986b-650d89d01ada.png)
「Implementation」タブではコマンドや各種言語からの呼び出し例が見られます。

「やってみた」は以上です。

NLCにすでにお取り組みの方は既にAPIをベースにした各種のシェルや手順があるでしょうから、いますぐこちらのUIに移行することもないかと思いますが、パネルは「わかりやすさ」「とっつきの良さ」では優れていると思いますので、長期的には使い分けなど含めご検討されるとよいかと思います。

今回はNLCでちょっと地味目でしたが、今後も続々新しいツールがWatson Studioに載ってくると思います。お楽しみに！