SprachgenerierungLanguage Generation

gilt für: SDK v4APPLIES TO: SDK v4

Die Sprachgenerierung (Language Generation, LG) ermöglicht es Entwicklern, eingebettete Zeichenfolgen aus ihrem Code und ihren Ressourcendateien zu extrahieren und diese über eine Runtime und ein Dateiformat für die Sprachgenerierung zu verwalten.Language Generation (LG) allows developers to extract embedded strings from their code and resource files and manage them through a LG runtime and file format. Mit der Sprachgenerierung können Entwickler eine natürlichere Konversationsumgebung erstellen, indem sie mehrere Variationen eines Begriffs definieren, einfache Ausdrücke basierend auf Kontext ausführen und auf einen Konversationsspeicher verweisen.With LG, developers can create a more natural conversation experience by defining multiple variations on a phrase, executing simple expressions based on context, and referring to conversational memory.

Die Sprachgenerierung kann für Folgendes verwendet werden:LG can be used by developers to:

  • Erzielen einer kohärenten Persönlichkeit und eines kohärenten Tonfalls für den Botachieve a coherent personality, tone of voice for their bot
  • Trennen der Geschäftslogik von der Darstellungseparate business logic from presentation
  • Einschließen von Variationen und einer ausgefeilten, kompositionsbasierten Auflösung für alle Antworten des Botsinclude variations and sophisticated composition based resolution for any of their bot's replies
  • Entwickeln von Anpassungen zwischen gesprochener und geschriebener Spracheconstruct speak .vs. display adaptations
  • Entwickeln von Karten, vorgeschlagenen Aktionen und Anhängenconstruct cards, suggested actions and attachments

Die Erweiterung von Vorlagen und die Ersetzung von Entitäten bilden den Kern der Sprachgenerierung.At the core of LG lies template expansion and entity substitution. Sie können einmalige Variationen zur Erweiterung bereitstellen oder Vorlagen basierend auf Bedingungen erweitern.You can provide one-of variation for expansion as well as conditionally expand a template. Die Ausgabe der Sprachgenerierung kann eine einzelne Textzeile, eine mehrzeilige Antwort oder eine komplexe Objektnutzlast sein, mit der eine Ebene oberhalb der Sprachgenerierung eine Aktivität konstruiert.The output from LG can be a simple text string, multi-line response, or a complex object payload that a layer above LG will use to construct an activity.

Im Folgenden sehen Sie eine einfache Sprachgenerierungsvorlage für Begrüßungen.The following is a simple greeting LG template. Beachten Sie, dass alle Grußformeln mit der Variable ${user.name} auf den Benutzernamen im Speicher verweisen.Notice that all of the greetings reference the user's name in memory with the variable ${user.name}.

# greetingTemplate
- Hello ${user.name}, how are you?
- Good morning ${user.name}.It's nice to see you again.
- Good day ${user.name}. What can I do for you today?

Die Sprachgenerierung in AktionLG in action

Sie können die Sprachgenerierung beim Entwickeln von Bots auf unterschiedlichste Weise verwenden.You can use LG in a variety of ways when developing bots. Erstellen Sie zunächst eine oder mehrere LG-Dateien, um alle möglichen Szenarien abzudecken, in denen Sie das Subsystem der Sprachgenerierung mit den Antworten Ihres Bots an einen Benutzer verwenden.To start, create one or more .lg file(s) to cover all possible scenarios where you would use the language generation sub-system with your bot's replies to a user.

Schließen Sie die Bibliothek für die Sprachgenerierung ein: Microsoft.Bot.Builder.LanguageGeneration.Make sure you include the language Generation library Microsoft.Bot.Builder.LanguageGeneration. Danach analysieren Sie Vorlagen und laden sie in Ihre LG-Datei, indem Sie Folgendes hinzufügen:Then parse and load templates in your .lg file by adding the following:

    _templates = Templates.ParseFile(fullPath);

Wenn Sie eine Vorlagenerweiterung benötigen, verwenden Sie Evaluate und übergeben den entsprechenden Vorlagennamen.When you need template expansion, use Evaluate and pass in the relevant template name.

    var lgOutput = _templates.Evaluate(<TemplateName>);

Wenn zur Auflösung bzw. Erweiterung bestimmte Eigenschaften an die Vorlage übergeben werden müssen, können Sie dafür den Aufruf von Evaluate verwenden.If your template needs specific properties to be passed for resolution/expansion, you can pass them when calling Evaluate.

    var lgOutput = _templates.Evaluate("WordGameReply", new { GameName = "MarcoPolo" } );

Richtlinie für mehrsprachige Generierung und SprachfallbackMultilingual generation and language fallback policy

Ihr Bot kann möglicherweise mehr als eine Sprache für gesprochene oder geschriebene Texte verarbeiten.Your bot might target more than one spoken or display language. Sie können separate Instanzen von TemplateEngine verwalten – eine pro Zielsprache.You can manage separate instances of the TemplateEngine, one per target language. Ein Beispiel für das Hinzufügen von mehreren Sprachen zu Ihrem Bot zu Fallbackzwecken finden Sie im Beispiel mit Fallbacksprachen für Eingabeaufforderungen mit mehreren Turns in C# oder JavaScript.For an example of how to add multiple languages, also known as language fallback, to your bot, see the multi-turn prompt with language fallback sample in C# or JavaScript.

API zur ErweiterungExpand API

Um alle möglichen Erweiterungen einer Vorlage abzurufen, können Sie ExpandTemplate verwenden.To get all possible expansions of a template, you can use ExpandTemplate.

    var results = lgTemplates.ExpandTemplate("WordGameReply", { GameName = "MarcoPolo" } )

Sehen Sie sich beispielsweise folgenden Sprachgenerierungsinhalt an:For example, given this LG content:

# Greeting
- Hi
- Hello

#TimeOfDay
- Morning
- Evening

# FinalGreeting
- ${Greeting()} ${TimeOfDay()}

# TimeOfDayWithCondition
- IF: ${time == 'morning'}
    - ${Greeting()} Morning
- ELSEIF: ${time == 'evening'}
    - ${Greeting()} Evening
- ELSE:
    - ${Greeting()} Afternoon

Der Aufruf von ExpandTemplate("FinalGreeting") führt zu vier Auswertungen:The call ExpandTemplate("FinalGreeting") results in four evaluations:

  • Hi MorningHi Morning
  • Hi EveningHi Evening
  • Hello MorningHello Morning
  • Hello EveningHello Evening

Der Aufruf von ExpandTemplate("TimeOfDayWithCondition", new { time = "evening" }) führt zu zwei Erweiterungen:The call ExpandTemplate("TimeOfDayWithCondition", new { time = "evening" }) with scope, results in two expansions:

  • Hi EveningHi Evening
  • Hello EveningHello Evening

Zusätzliche RessourcenAdditional resources