自然言語処理のための分析モデルを容易に作成できる Language Understanding (LUIS)。LUIS では、分析モデルを作成するうえで、学習データの準備やエンジンの作成に自然言語処理 (NLP) が使われています。LUIS をより良くお使いいただくために、自然言語処理の基本となる NLP のプロセス、および それに沿って LUIS による分析モデルを作成する上で必要となる手順をご紹介します。
自然言語処理 (Natural Language Processing (NLP))
NLP とは、人間が日常的に使っている ”自然言語” をコンピューターに処理させる一連の技術 を指します。(出典: Wikipedia)
自然言語処理のプロセス
自然言語 (いわゆる話し言葉) を分析、判定するには、おおまかに 形態素解析→構文解析→意味解析 といったプロセスを経ることになります。
形態素解析 | 入力された文章を形態素(意味を持ち得る最小単位)で区切り(=分かち書き)、それぞれの形態素の品詞などを判別する | |
構文解析 | 単語や文節間の関連性(主に文節間の係り受け構造)を判別する(→構文木) | |
意味解析 | 単語の意味を考慮して、正しい構文木を選択する |
Language Understanding (旧称: Language Understanding Intelligent Service (LUIS))
マイクロソフトが提供する認知機能 API 群である Cognitive Services のひとつで、文意やエンティティの推測を行う分析エンジン (分析モデル) を簡易に作成し、Web API 経由で利用することができるサービスです。
Language Understanding (LUIS) による分析モデル (LUIS App) の作成方法
LUIS による分析モデル (サービス内で LUIS App と呼びます) を作成するステップは下記の通りシンプルです。
Step1: 文章を分類する"クラス"である Intent (意図、目的)、単語サイズで抽出したい エンティティである Entity を予めセットアップします。
Step2: 分析モデルを作成するための学習データとなる文章を入力し、Intent を付与します。形態素分析を行ったうえで Entity も付与します。ある程度のボリュームの学習データが入力できたら、分析モデルを学習させます。
Step3: テストを行い、精度が確認できたら Web API として公開します。
LUIS は意味解析までは行いませんが、学習データに付与された Intent や Entity を元に構文を解析して、同様のパターンを見つけ出し、新しく投入される Intent および Entity の推測を行います。
分析モデル (LUIS App) の Web API からの利用
上記 Step 3 で公開した LUIS App に Web API (GET または POST) や 各言語の SDK・ライブラリーからアクセスすることが可能です。
GET https://LOCATIONNAME.api.cognitive.microsoft.com/luis/v2.0/apps/LUISAPPNAME? subscription-key=LUISKEY&verbose=true&timezoneOffset=0&q=こんにちは |
各言語では、例えば C#では汎用の Microsoft.Cognitive.LUIS というライブラリーで個別に推定結果を取得可能です。
C# |
using Microsoft.Cognitive.LUIS; var luisClient = new LuisClient("LuisAppId","LuisAPIKey", domain: "LuisAPIHostName"); var luisResult = await luisClient.Predict(message.Text); if (luisResult != null) { switch (luisResult.Intents[0].Actions[0].Name) { case "Greeting": await GreetingIntent(luisResult); break; : (後略) |
Bot Framework (C#) では、Bot Builder SDK にLUISを利用するライブラリーが含まれています。
[Serializable] public class RootDialog : LuisDialog
This post first appeared on MSDN Blogs | Get The Latest Information, Insights, Announcements, And News From Microsoft Experts And Developers In The MSDN Blogs., please read the originial post: here