巷では人工知能(AI)関連のニュースなどを頻繁に目にします。
そのコンポーネントとして、深層学習(deep learning)や自然言語処理にも注目が集まってますね。既にいろいろとサービスが提供されていたりします。
そんなサービスの1つである、Watson APIのNLC(Natural Language Classifier)を触ってみることにします。
NLCとは
NLCは、IBMがBluemix上で提供するWatson APIサービスの1つです。
自然言語テキストをクラス分類してくれます。何が嬉しいのかはやりながら見て行くことにします。
Bluemixが提供するサービスのカタログ
https://console.ng.bluemix.net/catalog/
※2016年5月 時点でWatson APIは17種
カタログからサービス作成
早速、Bluemixにログインして、自分のスペースにNLCを追加します。
カタログから選択して、作成ボタンを押すだけです。
Bluemixアカウントがない場合は、人様の記事を参考にアカウントを作成します。
IBM Bluemixフリートライアルアカウント作成手順
http://qiita.com/KenichiSekine/items/6ad49b25167b3f4cdb63
toolkitからNLCを触ってみる
作成されたサービスをクリックすると↓のような画面に遷移します。
手っ取り早くNLCを試してみたいので、"Access the beta toolkit"ボタンをポチっとします。
何も考えずに"Sign in with Bluemix"をクリック。
許可しないことには進まないので、素直に"確認"ボタンをクリック。
トレーニングデータを登録
こんな画面が表示されます。
これがtoolkit(beta版)の画面です。
ここから、NLCのクラス分類の機能を試すために、NLCにトレーニングデータを学習させる必要があります。
トレーニングデータは、「テキスト」と「クラス」が対になった構造です。
オフィシャルのイメージを引用すると以下のような構造。
今回はデートのお誘いに対する、脈あり/脈なし クラス分類をやってみたいので、以下のようなデータを登録してみます。
テキスト | クラス | テキスト | クラス |
---|---|---|---|
このお店に行きたいです | ok | ちょっと忙しい | ng |
いつなら都合いいですか? | ok | 今が一番忙しいんだ | ng |
飲みに行きたいです | ok | 予定がわからない | ng |
社交辞令じゃないですよね? | ok | 他の人も誘っていこう | ng |
お酒に詳しくないので教えてくれますか | ok | 他の人の予定も聞いてみよう | ng |
来週には落ち着くからまた誘って | ok | 最近仕事がバタバタしてる | ng |
都合がいい日があったら教えて | ok | ちょっと無理そう | ng |
明日なら早く帰れるよ | ok | もう予定が入ってる | ng |
来週の金曜はどう? | ok | また今度ね | ng |
絶対ですよ!約束ですからね | ok | いろいろ落ち着いたらね | ng |
いいですね! | ok | 予定が分かったらこっちから連絡するね | ng |
ということで、"Add training data"からトレーニングデータを以下のように設定していきます。
データを設定し終わったら、"Create classifier"ボタンでNLCに学習させます。
クラス分類してみる
トレーニングさせてしばらくすると、Availableになります。NLCの学習完了です。
矢印→ボタンをクリックして、クラス分類を試してみます。
テキストボックスに適当な文言を入れて、"Classify"ボタンをクリックすると、入力したテキストを確信度とともにクラス分類してくれます。
「みなとみらい行きたい!」は、OK (99%), NG (1%)に分類されました。
脈ありと判断してよいでしょう。
ここで注目したいのは、「みなとみらい行きたい!」というそのもののテキストはトレーニングデータにはないということです。
ただし、「マジ無理」という人間の判断では明らかにNGなテキストに対しては、NG (62%), OK (38%)と、ちょっと迷ってる感があります。
このテキストはNGクラスとして、トレーニングデータに追加した方が良さそうです。
次回(があれば)は、アプリからNLCのサービスをつついてみたいと思います。
⇒(2016/07/08)つつきました。Watson on Bluemix でNLCことはじめ (2)