2016/09/15にLUISが日本語対応しました。
https://www.microsoft.com/cognitive-services/en-us/news
LUIS = Language Understanding Intelligent Serviceということで、話し言葉をテキストで入力するとその意味を解析してテキストの要素を認識してくれるサービスが日本語対応しました。
早速、LUISを使ってみましょう。C#のSDKもありますがまずはWebのエンドポイントから軽く試してみましょう。
まずはLUISのWebサイト(https://www.luis.ai/) からMicrosoftアカウントでログインしましょう。
初回ログインのところでの質問はこんな感じに回答すればOKです。
新規作成の[+]ボタン、真ん中は[Cortana pre-built apps]ボタン、一番右側は[Start Tutorial]ボタンでチュートリアルを見るためのボタンです。
真ん中の[Cortana pre-built apps]ボタンでコルタナの受け答え言語理解モデルを使ってアプリをつくてれます。残念ながら日本語はまだ提供されていません。
しかたがないので、新規作成ボタンで言語理解モデルなしでアプリを作成しましょう。
シナリオとして、IoT、Bot、Mobile、Otherなどが選べます。今回はBotを選んでおきます。
また、ドメインもいろいろ選べます。ドメインを指定するのは、同じ言葉でも分野によって意味づけが異なるからです。
- Booking & Reference
- Business
- Comics
- Communication
- Education
- Entertainment
- Finance
- Gaming
- Health & Fitness
- Home Automation
- Media & Video
- Medical
- Music & Audio
- Navigation & Maps
- News & Magazine
- Personalization
- Productivity
- Real Estate
- Sceduler
- Shopping
- Social Network
- Sports
- Telecom
- Tools
- Transportation
- Translation
- Travel & Local
- Weather
- Other
ここは、Comics、Gaming、Media & Video、Social Networkを選んでみます。たぶん、分野を絞れば絞るほどその分野において的確な意味としてとらえてくれるはずです。どのあたりをターゲットにするのかよく考えて絞り込みましょう。
そしてもちろん[Choose Application Culture]には「Japanese」を選択します。
[Add App]ボタンをクリックすればアプリケーションの作成が開始されます。1~2分かかりますが気長に待ちましょう。
生成された直後は、こんな感じです。この状態では何もできません。なにかするにはメニュー右端の[Edit]をクリックしてセッティングを行わないとダメなのです。
Editをクリックしたときに表示される画面はこんな感じ。
まずは何も設定せずに[New utterances]に「みなさん、こんにちは。初音ミクです。永遠の16才の電子の歌姫です。」といれてみましょう。
その結果は、半角区切りが入って次のように分解されて表示されます。
- みなさん、
- こんにちは
- 。
- 初音
- ミク
- です
- 。
- 永遠
- の
- 16才
- の
- 電子
- の
- 歌姫
- です
- 。
しかし何も設定していないので、出力はこれだけです。もう一度、同じ文章を入れたら「This utterance has already been labeled. You can make changes to the label, or type in a different utterance.」って表示されます。
この一度入れたものは[Review labels]でも表示できます。
これだけって書きましたけれど、文章を入れてこういったこと=「形態素解析」ができることだけでもすごいですよね。
それではLUISに意味を教えていきましょう。
はい。もうわかりましたね。LUISを使えば勝手に意味を抽出してくれるんじゃなくて、言語理解モデルというものが必要なわけです。
左端のEntitiesの+を押して[Add a new Entity]で登録してみましょう。
「名前」EntitiyはInclude childrenということで「姓」と「名」を子供に定義して作成します。
作成が終わったら左下の[Train]ボタンを押してみましょう。
次に[Review labels]でさっき入れた文章を表示し、「初音」をクリックして「姓」、「ミク」をクリックして「名」をEntityとして選びます。
それでは試しにこれで何ができるか確認してみましょう。
左下の[Train]ボタンをクリックしてトレーニングをしてから左上の[Publish]ボタンで公開します。
Query欄に「初音ミクって誰?」と入れた結果は次のようなJSONで返却されます。
それでは次にIntentを追加してみましょう。左メニューのIntentの[+]ボタンをクリックして、「GetTopic」という名前で「初音ミクは、永遠の16才の電子の歌姫です。」と登録してみましょう。
そしてさっきと同様に「姓」と「名」のEntityを設定して[submit]します。
[Train]ボタンを忘れずに押してから[Publish]して、[Update published application]ボタンをクリックしたら、Queryにさっきと同じ質問をいれた結果のJSONは次のように変化しました。
このようにEntityはIntentを設定して初めて抽出してくれるのです。
これで「初音ミク」って要素が入ったテキストに対しては「GetTopic」という話題を返せばいいという言語理解モデルができあがりました。
最後に、英語の意味を少し理解しておきましょう。
Intent:意図、目的
Entity:実体(要は、名という識別に対する実データ)
月1万トランザクション(以前は10万トランザクションまでだったけれど9/15に改訂。言語増えたから世界的に使われる量が増えることを見越してかな?)までは無料なのでぜひ使ってみてくださいね。
日本語の言語理解モデルとかがOSSとしてgithubあたりに流通し始めると面白いかもね。
今期アニメ言語理解モデルとか。