実践!話題の人工知能無料API「wit.ai」に日本語で言語認識させてみよう
株式会社wevnalでCTOを務めている木曽です。近年、チャット利用者の入力した文章や音声からその内容を汲み取って適切な応答を返す仕組み、このようなものがWebサービスとして昨今いくつも立ち上がっています。
今回は、ここ数年の技術系トピックとしてNo.1と言っていい「AI」や「Chatbot」について、ユーザーの皆さんにもプログラミングなしでその片鱗に触れていただけるような内容をお届けしていきます。
特に、その中でもFacebook系のサービス「wit.ai」を実際に使う手順をご紹介しながら、日本語の自然言語処理について触れていただきたいと考えています。
Wit.aiならブラウザ上で自然言語学習やChatbotの構築が可能
Wit.aiとは、Chatbot、モバイルアプリ、音声デバイスなどと連携した"自然言語処理を支援する無償のサービス"です。
Wit.aiは2013年に創業したのち、2015年にFacebookに買収され、Facebook傘下のボットエンジンとなりました。類似のサービスとしてはGoogle傘下のapi.ai、MicrosoftのLUISなどがあり、活況を呈しています。
Wit.aiは現在50言語をサポートしていますが、日本語を含む39言語についてはまだβ版の状態です。日本語が、英語を始めとする欧米言語と大きく異なる点の1つに「単語がスペースで区切られていないこと」があります。このため、Wit.aiでの日本語の扱いには正直苦戦するところがあるのですが、「わかち書き」という手法を組み合わせることで、日本語の自然言語認識を構築することができます。
Wit.aiの利用手順(アカウント作成)
Wit.aiを利用するにあたり、まずアカウントを作成する必要があります。
GitHub、またはFacebookのアカウントでログインすることが可能です。ここでは、FacebookアカウントでログインしてWit.aiアカウントを作成してみます。
- [Log in with Facebook] を押します。
2. Facebookログインダイアログが出ますので、Facebookのアカウント情報でログインします。
3. 追加情報として、WIt.ai上でのユーザー名、メールアドレス、利用目的を聞かれますので入力します。利用目的が特に審査されることはないので適当な記載で大丈夫です。
ここまで進むと、早速、MyFirstAppというアプリの作成画面に移ります。ここで自然言語認識を利用した会話モデルを作成していくことができます。
【実践】航空券予約を理解させてみよう
続いては、「XからYへの航空券を予約したい」という発言から、航空券予約を行うChatbotを作成すると仮定して、Wit.aiの自然言語処理を使ってみます。
インテントとエンティティ
まずは、会話モデルを作成していきます。その際、Wit.aiで会話モデルを作るにあたって2つの定義、「インテント(intent)」と「エンティティ(entity)」を理解しておきましょう。
インテントとは
インテントとは「意図」の意味です。ユーザーの発言の内容から、ユーザーが何を問いかけているのか、その意図を分類する概念です。例えば、「東京の明日の天気は?」といった発言から、ユーザーは「天気を尋ねている」とユーザーの意図を分類・認識する仕組みです。この認識により初めて「天気を応答する」処理を開始することができます。
エンティティとは
エンティティとは、発言の中に含まれる「(インテントにとって)意味を持つ単語」の意味です。エンティティは、日時や場所、依頼や質問の対象となるモノなどを分離、認識する概念です。例えば、前述の「東京の明日の天気は?」といった発言からは、具体的にどのような天気を知りたいのかを認識する必要があります。ここでは「東京」「明日」という言葉が、天気を答えるにあたって意味を持つ単語であり、すなわちエンティティである、ということができます。
●自然言語の認識を行うにあたりwit.aiでは
1. 発言の内容からインテントを推定し、そのインテントに対応する処理を決定する。
2. また、発言の内容からエンティティを推定し、処理のパラメータ(日時、場所といった具体的な要求)を処理に渡して実行する。
自然言語の認識を行うにあたって、wit.aiは上記のような動作を行います。これにより、自然言語による発言から実際の処理への結び付けを行っているのです。そして、このインテントの推定やエンティティの推定の部分に人工知能が用いられています。
日本語を学習させる
●App新規作成
では、Wit.ai上に実際にプロジェクトを作成して、日本語を学習させてみましょう。
Wit.aiではプロジェクトを「App」と呼んでいます。Wit.aiにログイン後、上図のように右上の「+(New App)」を押して新規App作成へ進みます。
すると、こちらの画面となるので、「App Name」にプロジェクトの名前を入力します。必要であれば「App Description」にプロジェクトの説明文も記載します。
その後「Language」を「Japanese」を選択し、「Open/Private」はプロジェクトを公開するか、自分や限られたメンバーだけで利用するかの設定です。
ここでは「Private」にしておきます。最後に「+Create App」を押して新規作成は終了となり、下記画面になります。
●学習の開始
では、さっそく文章の学習を開始しましょう。Appを作成しただけでは、まだ何も知らない赤ん坊の状態です。これからいくつかの文章とインテント、エンティティを教えていきます。
ここでは以下のような学習文を用意しました。
明日羽田からハノイに行きたいです
明日成田からルクセンブルクに行こうと思います
7/22に成田からロンドンに行きたい
福岡から羽田に来週月曜日に行きたい
月曜日の成田発ドバイ行きのチケットはありますか?
再来週関空からフランクフルトへ行きたい
いずれも「航空券の予約(空き状況の確認)」を意図として、想定した学習文です。
この場合、インテントは「航空券の予約」で、エンティティに相当するのは「明日」「ルクセンブルク」「福岡」「パリ」など日付や場所を表す単語になります。
まず「Test how your app understands a sentence」の下の入力欄に「明日羽田からハノイに行きたいです」と入力します。その下に「+ Add a new entity」というリンクがありますが、これを使って、エンティティを教えていきます。
入力した文の「明日」の部分をマウスで選択します。すると、その下が「+ Create an entity for "明日"」に変化します。
そこにマウスカーソルを合わせて「date」と記載します。
この作業は「"明日"という単語は"date"という名のエンティティとして学習してください」という指示になります。
※「date」と入力する際に、いくつか推薦候補が表示されますがここではいったん無視してください
続いて、「羽田」をエンティティとして登録します。入力文の「羽田」の部分をマウスで選択します。「+ Create an entity for "羽田"」となったところで、「from_location」と新しいエンティティ名を入力します。これは、「この『羽田』という語は『from _location』すなわち出発地という意味のエンティティですよ」と教えるわけです。なお、エンティティ名(ここではfrom _location)は、任意に決めることができます。
同様に「ハノイ」を「to_location」という到着地という意味のエンティティとして登録します。
「行きたい」を選択し、「+ Create an entity for "行きたい"」の中から、「intent」を選択します。これにより文に対するインテントを認識させ、最後に「Validate」ボタンを押して、この学習を登録します。
これで、「明日」「羽田」「ハノイ」というエンティティ、「行きたい」というインテントが学習されました。
- アプリ
- アプリとは、アプリケーション・ソフトの略で、もとはパソコンの(エクセル・ワード等)作業に必要なソフトウェア全般を指す言葉でした。 スマートフォンの普及により、スマートフォン上に表示されているアイコン(メール・ゲーム・カレンダー等)のことをアプリと呼ぶことが主流になりました。
- デバイス
- デバイスとは「特定の機能を持つ道具」を表す語で、転じてパソコンを構成するさまざまな機器や装置、パーツを指すようになりました。基本的に、コンピューターの内部装置や周辺機器などは、すべて「デバイス」と呼ばれます。
- Googleとは、世界最大の検索エンジンであるGoogleを展開する米国の企業です。1998年に創業され急激に成長しました。その検索エンジンであるGoogleは、現在日本でも展開していて、日本のYahoo!Japanにも検索結果のデータを提供するなど、検索市場において圧倒的な地位を築いています。
- UI
- UIとは、ユーザーインターフェイス(User Interface)の略で、ユーザー(使い手)とデバイスとのインターフェイス(接点)のことを意味します。
- アカウント
- アカウントとは、コンピューターやある会員システムなどサービスを使うときに、その人を認識する最低必要な情報として、パスワードと対をなして使う、任意で決めるつづりです。ユーザー、ID、などとも言います。
- アカウント
- アカウントとは、コンピューターやある会員システムなどサービスを使うときに、その人を認識する最低必要な情報として、パスワードと対をなして使う、任意で決めるつづりです。ユーザー、ID、などとも言います。
- アカウント
- アカウントとは、コンピューターやある会員システムなどサービスを使うときに、その人を認識する最低必要な情報として、パスワードと対をなして使う、任意で決めるつづりです。ユーザー、ID、などとも言います。
- アプリ
- アプリとは、アプリケーション・ソフトの略で、もとはパソコンの(エクセル・ワード等)作業に必要なソフトウェア全般を指す言葉でした。 スマートフォンの普及により、スマートフォン上に表示されているアイコン(メール・ゲーム・カレンダー等)のことをアプリと呼ぶことが主流になりました。
- リンク
- リンクとは、インターネット上では、あるページの中に記された、他のページの所在を表す情報のことを「ハイパーリンク」と呼び、これを略した言葉です。リンクのある場所をクリックすると、他のページにジャンプするようになっています。
おすすめ記事
おすすめエントリー
同じカテゴリから記事を探す
カテゴリから記事をさがす
●Webマーケティング手法
- SEO(検索エンジン最適化)
- Web広告・広告効果測定
- SNSマーケティング
- 動画マーケティング
- メールマーケティング
- コンテンツマーケティング
- BtoBマーケティング
- リサーチ・市場調査
- 広報・PR
- アフィリエイト広告・ASP
●ステップ
●ツール・素材
- CMS・サイト制作
- フォーム作成
- LP制作・LPO
- ABテスト・EFO・CRO
- Web接客・チャットボット
- 動画・映像制作
- アクセス解析
- マーケティングオートメーション(MA)
- メールマーケティング
- データ分析・BI
- CRM(顧客管理)
- SFA(商談管理)
- Web会議
- 営業支援
- EC・通販・ネットショップ
- 口コミ分析・ソーシャルリスニング
- フォント
- 素材サイト
●目的・施策
- Google広告
- Facebook広告
- Twitter広告
- Instagram広告
- LINE運用
- LINE広告
- YouTube運用
- YouTube広告
- TikTok広告
- テレビCM
- サイト制作・サイトリニューアル
- LP制作・LPO
- UI
- UX
- オウンドメディア運営
- 記事制作・ライティング
- コピーライティング
- ホワイトペーパー制作
- デザイン
- セミナー・展示会
- 動画・映像制作
- データ分析・BI
- EC・通販・ネットショップ
- 口コミ分析・ソーシャルリスニング