はじめに
「Wit.ai」は無料の人工知能APIで、音声やテキストデータをインプットすることで何らかのアクションを起こすAIを簡単に作ることができます。
対応言語は、Node、Ruby、Python、C、Rust、Javaなど豊富なのが特徴で、iOS/Androidなどのスマートフォンデバイスに対応させる事も可能です。
今回の記事ではNode.js SDKであるnode-witを使って実際に作っていきます。
まずは体験
下記のページを見てみてください。
https://labs.wit.ai/demo/index.html
中央のマイクボタンを押下し、「Turn on the TV」と話しかけ、再度マイクボタンを押します。すると・・ 画面上のテレビのスイッチがつきました!
Wit.aiが音声データを解釈し、テレビのスイッチをいれたのです。これは応用次第で実際の生活にも組み込むことができそうです。
Wit.aiに登録してみる
Wit.aiはGitHubアカウントもしくはfacebookアカウントで登録できます。
登録が終わったら、メニューバーの左端にある「+」ボタンを押してアプリを登録していきます。
必要な情報を登録し、最後に画面下部にある「Create App」を押して登録を完了させます。
Wit.aiに学習させる
アプリの登録が完了したところで、インプットするデータを実際に学習させていきます。
今回は先ほど扱った「Turn on the TV」という文章を入力してみます。「Test how your app understands a sentence」の下にあるフォームに入力してみてください。
Wit.aiにこの文章を学習させていきます。
が、その前に「インテント」と「エンティティ」という2つの概念を学ばなければなりません。
「インテント」と「エンティティ」
インテントは与えられたデータの「意図」のことです。インプットされたデータがどのような処理を求めているかを判断するためのもので、上記の文章でいうと「Turn」に当たる部分です。
エンティティは「インテントの目的となるもの」です。「TV」がこれに相当します。また、その状態である「on/off」もエンティティに当たります。
Wit.aiに限らず、他の人工知能APIでも同様の概念が登場するので覚えておきたいところです。
では実際にこの「インテント」と「エンティティ」を学習させていきます。
まずはエンティティを登録していきます。
文章中の「on」の部分を選択して、「state」という名前でエンティティを登録します。
同様に「TV」の部分を選択して、「target」という名前で登録します。
すると以下のような状態になりました。エンティティはstate
とtarget
を持ち、その値としてon
とTV
をそれぞれ持っています。
続いてインテントです。
「Add a new entity」からintent
を選択して、Valueを「turn」として登録します。
そして最後に「validate」ボタンを押します。
これによってWit.aiはこの文章を解釈できるようになりました。
試しに一度フォームをクリアして、再度「Turn on the TV」と入力してみましょう。
さきほど登録したインテントとエンティティが認識されていれば成功です!
次回はnode-witを使ってコンソールからWit.aiにアクセスしていきます。