Get Even More Visitors To Your Blog, Upgrade To A Business Listing >>

Language Understanding (LUIS) による自然言語処理: 概要、分析モデル作成、Web API 経由の利用

自然言語処理のための分析モデルを容易に作成できる 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
{
    public BasicLuisDialog() : base(new LuisService("LuisAppId","LuisAPIKey","LuisAPIHostName"))
    {}
    : (中略)
    [LuisIntent("Greeting")]
    public async Task GreetingIntent(IDialogContext context, LuisResult result)
    {
        await context.PostAsync($"You have reached {result.Intents[0].Intent}. You said: {result.Query}");
        context.Wait(MessageReceived);
    }
: (後略)

Share the post

Language Understanding (LUIS) による自然言語処理: 概要、分析モデル作成、Web API 経由の利用

×

Subscribe to Msdn Blogs | Get The Latest Information, Insights, Announcements, And News From Microsoft Experts And Developers In The Msdn Blogs.

Get updates delivered right to your inbox!

Thank you for your subscription

×