はつねの日記

Kinect, Windows 10 UWP, Windows Azure, IoT, 電子工作

LUISが日本語対応したよ

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です。

image

 

新規作成の[+]ボタン、真ん中は[Cortana pre-built apps]ボタン、一番右側は[Start Tutorial]ボタンでチュートリアルを見るためのボタンです。

image

真ん中の[Cortana pre-built apps]ボタンでコルタナの受け答え言語理解モデルを使ってアプリをつくてれます。残念ながら日本語はまだ提供されていません。

しかたがないので、新規作成ボタンで言語理解モデルなしでアプリを作成しましょう。

 

シナリオとして、IoT、Bot、Mobile、Otherなどが選べます。今回はBotを選んでおきます。

また、ドメインもいろいろ選べます。ドメインを指定するのは、同じ言葉でも分野によって意味づけが異なるからです。

  1. Booking & Reference
  2. Business
  3. Comics
  4. Communication
  5. Education
  6. Entertainment
  7. Finance
  8. Gaming
  9. Health & Fitness
  10. Home Automation
  11. Media & Video
  12. Medical
  13. Music & Audio
  14. Navigation & Maps
  15. News & Magazine
  16. Personalization
  17. Productivity
  18. Real Estate
  19. Sceduler
  20. Shopping
  21. Social Network
  22. Sports
  23. Telecom
  24. Tools
  25. Transportation
  26. Translation
  27. Travel & Local
  28. Weather
  29. Other

ここは、Comics、Gaming、Media & Video、Social Networkを選んでみます。たぶん、分野を絞れば絞るほどその分野において的確な意味としてとらえてくれるはずです。どのあたりをターゲットにするのかよく考えて絞り込みましょう。

image

そしてもちろん[Choose Application Culture]には「Japanese」を選択します。

[Add App]ボタンをクリックすればアプリケーションの作成が開始されます。1~2分かかりますが気長に待ちましょう。

 

生成された直後は、こんな感じです。この状態では何もできません。なにかするにはメニュー右端の[Edit]をクリックしてセッティングを行わないとダメなのです。

image

 

Editをクリックしたときに表示される画面はこんな感じ。

image

まずは何も設定せずに[New utterances]に「みなさん、こんにちは。初音ミクです。永遠の16才の電子の歌姫です。」といれてみましょう。

image

その結果は、半角区切りが入って次のように分解されて表示されます。

  • みなさん、
  • こんにちは
  • 初音
  • ミク
  • です
  • 永遠
  • 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]で登録してみましょう。

image

「名前」EntitiyはInclude childrenということで「姓」と「名」を子供に定義して作成します。

作成が終わったら左下の[Train]ボタンを押してみましょう。

 

次に[Review labels]でさっき入れた文章を表示し、「初音」をクリックして「姓」、「ミク」をクリックして「名」をEntityとして選びます。

image

それでは試しにこれで何ができるか確認してみましょう。

左下の[Train]ボタンをクリックしてトレーニングをしてから左上の[Publish]ボタンで公開します。

 

Query欄に「初音ミクって誰?」と入れた結果は次のようなJSONで返却されます。

image

 

それでは次にIntentを追加してみましょう。左メニューのIntentの[+]ボタンをクリックして、「GetTopic」という名前で「初音ミクは、永遠の16才の電子の歌姫です。」と登録してみましょう。

image

そしてさっきと同様に「姓」と「名」のEntityを設定して[submit]します。

 

[Train]ボタンを忘れずに押してから[Publish]して、[Update published application]ボタンをクリックしたら、Queryにさっきと同じ質問をいれた結果のJSONは次のように変化しました。

image

このようにEntityはIntentを設定して初めて抽出してくれるのです。

 

これで「初音ミク」って要素が入ったテキストに対しては「GetTopic」という話題を返せばいいという言語理解モデルができあがりました。

 

最後に、英語の意味を少し理解しておきましょう。

Intent:意図、目的

Entity:実体(要は、名という識別に対する実データ)

 

月1万トランザクション(以前は10万トランザクションまでだったけれど9/15に改訂。言語増えたから世界的に使われる量が増えることを見越してかな?)までは無料なのでぜひ使ってみてくださいね。

日本語の言語理解モデルとかがOSSとしてgithubあたりに流通し始めると面白いかもね。

今期アニメ言語理解モデルとか。