簡體   English   中英

如何在Bot Framework(C#SDK)的單個Luis對話框中集成多個Luis語言模型

[英]How to integrate multiple Luis languge models in single Luis Dialog in Bot Framework (C# SDK)

我希望我的機器人支持德語 因此,我為德語創建了一個單獨的模型,其意圖和實體與英語模型相同。 如何根據用戶語言在運行時選擇特定模型。 顯然,我可以要求用戶選擇他們的語言首選項,然后將其保存在Bot Databag中,然后基於此設置區域性“ en ”或“ de ”。 但是,如何在運行時選擇德語/英語模型? 我遵循了Luis模型,並將德語和英語模型鍵均作為屬性。 PS我讀過其他相關文章,它們是關於兩個具有不同意圖和實體的模型。 我有兩個具有不同語言環境的模型。

[LuisModel("LuisID", "English Model-Key")]
[LuisModel("LuisID", "German Model-Key")]
[Serializable]
public class LUISDialogClass : LuisDialog<object>
{
    public LUISDialogClass(params ILuisService[] services) : base(services)
        {

        }
    [LuisIntent("A")]
    public async Task A(IDialogContext context, LuisResult result)
    {

    }
    [LuisIntent("B")]
    public async Task B(IDialogContext context, LuisResult result)
    {

    }
}

有兩種解決方案:

  1. 自己控制對LUIS的Rest呼叫。
  2. 創建兩個對話框LUISDialogClassDe和LUISDialogClassUs。

闡述第二種解決方案:

a)在抽象類中實現所有邏輯:

[Serializable]
public abstract class LUISDialogClass : LuisDialog<object>
{
    public LUISDialogClass(params ILuisService[] services) : base(services)
    {

    }

    [LuisIntent("A")]
    public async Task A(IDialogContext context, LuisResult result)
    {

    }

    [LuisIntent("B")]
    public async Task B(IDialogContext context, LuisResult result)
    {

    }
}

b)創建一個具體類來擴展抽象類,其唯一目的是提供Luis憑據。

[Serializable]
[LuisModel("key_DE", "programmatic_key_DE")]
public class LUISDialogClassDe : LUISDialogClass
{
}

c)根據需要重復多次。

[Serializable]
[LuisModel("key_US", "programmatic_key_US")]
public class LUISDialogClassUs : LUISDialogClass
{
}

d)在您的代碼中按如下方式使用它:

var state = activity.GetStateClient();
var userdata = state.BotState.GetUserData(activity.ChannelId, activity.From.Id);
var cultureInfo = userdata.GetProperty<CultureInfo>("lang");

if (cultureInfo.Equals(new CultureInfo("de-DE")))
{
    await Conversation.SendAsync(activity, () => new LUISDialogClassDe());
}
else
{
    await Conversation.SendAsync(activity, () => new LUISDialogClassUs());
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM