Formato de arquivo .lu

APLICA-SE A: SDK v4

Um arquivo .lu descreve um modelo de compreensão de linguagem. Um arquivo .lu contém definições simples baseadas em texto semelhantes a Markdown para conceitos de compreensão de linguagem. Você pode usar um ou mais arquivos .lu para treinar um modelo de linguagem para o serviço ou mecanismo de compreensão de linguagem natural (NLU) que seu bot usa, como Language Understanding (LUIS) ou Orchestrator. O mecanismo NLU escolhido só poderá interpretar subconjuntos dos elementos que um arquivo .lu pode descrever.

Um mecanismo NLU depende de um modelo de linguagem para entender o que um usuário diz. O mecanismo cria um modelo de linguagem a partir de conjuntos de exemplos de treinamento, assim como qualquer algoritmo de aprendizado de máquina. Uma vez treinado, o mecanismo usa o modelo para prever a intenção de um enunciado, geralmente na forma de uma ou mais intenções que representam uma tarefa ou ação que o usuário deseja executar e zero ou mais entidades que representam elementos relevantes para a intenção.

Você pode usar o LUIS ou o Orchestrator com qualquer bot desenvolvido usando o SDK ou o Composer do Bot Framework.

Nota

O Language Understanding (LUIS) será aposentado em 1 de outubro de 2025. A partir de 1 de abril de 2023, não será possível criar novos recursos LUIS. Uma versão mais recente do entendimento de idiomas agora está disponível como parte do Azure AI Language.

O entendimento de linguagem conversacional (CLU), um recurso do Azure AI Language, é a versão atualizada do LUIS. Para obter mais informações sobre o suporte à compreensão de linguagem no SDK do Bot Framework, consulte Compreensão de linguagem natural.

Este artigo é uma referência sobre como representar elementos de modelo de linguagem no formato de arquivo .lu. Para obter informações sobre como o entendimento de linguagem é usado em bots, consulte Compreensão de linguagem ou Processamento de linguagem natural no Composer.

Definindo intenções usando enunciados de exemplo

Uma intenção representa uma tarefa ou ação que o usuário deseja executar, conforme expresso no enunciado de um usuário. Você adiciona intenções ao seu bot para permitir que ele identifique grupos de perguntas ou comandos que representam a mesma intenção do usuário.

Alguns exemplos de intenções que você pode definir para um bot de viagem, com os enunciados de exemplo a partir dos quais eles são definidos:

Intenção Expressões de exemplo
ReservarBilhete "Reserve um voo para Maui na próxima semana"
"Voe-me para Maui no dia 17"
"Preciso de um bilhete de avião na próxima sexta-feira para Maui"
Greeting (Saudação) "Olá"
"Olá"
"Boa tarde"
CheckWeather "Como está o tempo em Maui na próxima semana?"
None "Gosto de biscoitos"
"Rãs-touro foram registadas a saltar mais de 7 pés"

Além das intenções que você define, Nenhum é uma intenção de fallback que faz com que o unknownIntent evento seja acionado quando nenhuma intenção pode ser determinada a partir da declaração dos usuários. Ao usar o LUIS, a intenção Nenhum é uma intenção necessária que você precisa criar com expressões que estão fora do seu domínio. Os enunciados associados à sua intenção Nenhum devem compreender aproximadamente 10% do total de enunciados no seu arquivo .lu.

As intenções com os seus enunciados de amostra são declaradas da seguinte forma:

# <intent-name>
    - <utterance1>
    - <utterance2>

# <intent-name> Descreve uma nova seção de definição de intenção. Cada linha após a definição de intenção são expressões de exemplo que descrevem essa intenção usando o - <utterance> formato.

Aqui está um arquivo .lu de exemplo demonstrando essas intenções e expressões de exemplo que capturam maneiras pelas quais os usuários podem expressar a intenção:

> Use ">" to create a comment in your .lu files.
> Use multiple comment ">" characters to define outlining
> sections in the file to help you organize the content.

>> Primary intents
# BookFlight
- Book me a flight to Maui next week
- Fly me to Maui on the 17th
- I need a plane ticket next Friday to Maui

# Greeting
- Hi
- Hello
- Good afternoon

>> Secondary intents
# CheckWeather
- What's the weather like in Maui next week?

Nota

Use o -caractere , +ou * para indicar listas. Não há suporte para listas numeradas.

Use > para criar um comentário.

Vários caracteres de comentário (">") também podem ser usados para definir seções de contorno no arquivo .lu para ajudá-lo a organizar o conteúdo. O Composer permite que você aproveite os contornos ao editar arquivos LU.

Para obter mais informações sobre intenções e enunciados, consulte Intenções em seu aplicativo LUIS e Entender o que são bons enunciados para seu aplicativo LUIS na documentação do LUIS.

Entidades

Uma entidade é parte de um enunciado que pode ser pensado como um parâmetro que pode ser usado na interpretação de uma intenção. Por exemplo, na declaração Reserve um bilhete para Maui, Maui é uma entidade FlightDestination.

Exemplo de enunciado do usuário Intenção prevista Entidades extraídas Explicação
Olá, tudo bem? Greeting (Saudação) - Não há entidades para extrair.
"Reserve um voo para Maui" ReservarBilhete "Maui" A entidade "FlightDestination" é extraída como "Maui".
"Como está o tempo em Maui na próxima semana?" CheckWeather "Maui", "próxima semana" A entidade "WeatherLocation" é extraída como "Maui" e a entidade "DateRange" é extraída como "próxima semana".
"Quero pedir uma pizza pequena" ordemPizza "Pequeno" A entidade "Size" é extraída como "pequena".
"Agendar reunião às 13:00 com o João da Distribuição” AgendarReunião "13h", "Bob" A entidade "MeetingTime" é extraída como "13h" e a entidade "Participantes" é extraída como "Bob".

Gorjeta

Para obter mais informações específicas sobre o uso de entidades no LUIS, consulte Entidades no LUIS na documentação do LUIS .

Definições de entidade

Uma definição de entidade define como reconhecer uma extensão em um enunciado como uma entidade que você pode usar em seu bot. Existem muitos tipos diferentes de entidades, incluindo: aprendidas por máquina, pré-construídas, listas, expressões regulares e padrões.

As definições de entidade em arquivos .lu iniciam a entrada com o sinal de arroba (@) seguido do tipo de entidade e nome da entidade:

@ <entity-type> <entity-name>

Opcionalmente, cada entidade também pode ter funções que identificam diferentes usos da mesma entidade. Você também pode adicionar recursos para ajudar a fazer um trabalho melhor de reconhecimento de entidades. A sintaxe geral tem esta aparência:

@ <entity-type> <entity-name> [[hasRole[s]] <comma-separated-list-of-roles>] [hasFeature[s] <comma-separated-list-of-features>]

As entidades que exigem uma definição, como entidades de lista e expressão regular, são representadas usando a seguinte notação:

@ <entity-type> <entity1-name> = <definition>

Exemplos adicionais de declarações de entidades serão demonstrados nas secções seguintes, juntamente com os tipos de entidades a que se aplicam.

Com exceção de entidades pré-criadas, os nomes de entidades podem conter várias palavras com espaços. Todos os nomes de entidades com espaços devem ser colocados entre aspas:

@ ml "this is a simple entity" role1, role2 = definition
@ ml 'another simple entity' hasRole role1 hasFeatures feature1, feature2

Tipos de entidades

Existem vários tipos de entidades no LUIS. Nas seções a seguir, você aprenderá sobre esses tipos de entidade e conceitos relacionados, como funções e recursos, e exemplos de como criar modelos de LU que os usam.

Entidade de aprendizagem automática

Entidades aprendidas por máquina são entidades que permitem fornecer exemplos onde você as rotula nos enunciados de exemplo. Isto dá-lhes o contexto necessário para aprender. A entidade aprendida por máquina é ideal para identificar dados que nem sempre estão bem formatados, mas têm o mesmo significado.

O exemplo a seguir demonstra uma entidade aprendida por máquina chamada city (@ ml city) e uma bookFlight intenção com expressões de exemplo com suas entidades rotuladas:

> Define the city machine-learned entity
@ ml city

> Define the bookFlight intent with sample utterances that contain the machine-learned entities
# bookFlight
- Book a flight from {@city = Cairo} to {@city = Seattle}
- Get me 2 tickets for a flight to {@city = Bengaluru}
- Purchase ticket from {@city = Washington} to {@city = Tampa Bay}

Quando um utilizador diz algo semelhante como "Preciso de um voo reservado de Londres para Madrid", o LUIS deteta a intenção do 'bookFlight' e extrai Londres e Madrid como entidades da cidade.

As funções são essencialmente uma camada adicional de informações contextuais que você pode adicionar às suas entidades aprendidas por máquina, que também aprendem com o contexto. O enunciado de exemplo a seguir mostra as funções de partida e destino associadas à entidade da cidade:

- Book a flight from {@city:departure = Cairo} to {@city:destination = Seattle}

As entidades aprendidas por máquina também podem ser complexas quando têm uma hierarquia de entidades relacionadas entre si. Por exemplo, você pode ter algo como uma pizzaOrder entidade que tenha as seguintes entidades filhas: quantidade, tamanho, crosta, coberturas e assim por diante.

Você define uma entidade filho antecipando um traço (-) ao sinal de arroba (@) e recuando, como demonstra o exemplo a seguir:

@ prebuilt number
@ list sizeList
@ list crustList
@ list toppingList

@ ml pizzaOrder
    - @ number Quantity
    - @ sizeList Size
    - @ crustList Crust
    - @ toppingList Topping

No exemplo acima, a entidade number é uma entidade pré-construída. As restantes entidades são todas entidades de lista.

O próximo exemplo mostra uma definição de uma address entidade aprendida por máquina, com fromAddress e toAddress como duas funções, bem como filhos.

@ list cityList
@ prebuilt number
@ prebuilt geographyV2
@ regex regexZipcode = /[0-9]{5}/
@ ml address hasRoles fromAddress, toAddress
@ address =
    - @ number 'door number'
    - @ ml streetName
    - @ ml location usesFeature geographyV2
        - @ cityList city
        - @ regexZipcode zipcode

Entidades pré-criadas

As entidades LUIS pré-construídas são definidas pelo sistema. Isso economiza seu trabalho, pois eles são de alta qualidade e fornecem valores normalizados que são mais fáceis de usar em programas. Por exemplo, a frase "mil e dois" se tornaria o número 1002. Os seguintes tipos de LUIS [entidade pré-construída][entidade pré-construída] são suportados:

  • idade
  • datetimeV2
  • dimensão
  • Correio eletrónico
  • geografiaV2
  • frase-chave
  • dinheiro
  • Número
  • Ordinal
  • ordinalV2
  • percentage
  • nome_da-pessoa
  • número de telefone
  • temperatura
  • URL
  • datetime

Aqui estão exemplos de como definir entidades pré-criadas:

@ prebuilt number 
@ prebuilt datetimeV2
@ prebuilt age

Entidade de lista

[Listar entidades] [list-entity] representa um conjunto fixo e fechado de palavras relacionadas, juntamente com seus sinônimos. O valor normalizado é retornado quando qualquer um dos sinônimos correspondentes é reconhecido. Eles diferenciam maiúsculas de minúsculas e são extraídos com base em uma correspondência de texto exata.

O exemplo a seguir mostra a sintaxe para definir uma entidade de lista:

@ list <entityName>  =
    - <normalized-value> :
        - <synonym1>
        - <synonym2>
        - ...
    - <normalized-value> :
        - <synonym1>, <synonym2>, ...

Estendendo o pizzaOrder exemplo da seção de entidade aprendida por máquina, aqui está um exemplo de listas para as entidades filhas de tamanho e crosta:

@ list sizeList = 
    - Extra Large :
        - extra large
        - XL
        - xl
        - huge
        - massive
    - Large:
        - large
        - big
    - Medium :
        - medium
        - regular
    - Small :
        - small
        - smallest
        - individual

@ list crustList = 
    - Stuffed Crust :
        - stuffed crust
        - stufffed crust
    - Thin :
        - thin
        - thin crust
    - Thick :
        - thick
        - thick crust
        - Deep Dish
        - deep dish

Gorjeta

Como uma entidade de lista requer uma correspondência exata para ser extraída, seus resultados podem melhorar adicionando erros ortográficos comuns. Uma causa comum de erros ortográficos é o resultado de erros de digitação, como letras duplas triplicadas como em "crosta recheada" no exemplo acima.

Ao usar entidades de lista, você deve incluir um valor da lista diretamente no enunciado, não é necessário rotular entidades de lista, embora ainda possa usá-las como espaços reservados em um padrão. O exemplo a seguir mostra um enunciado com valores da lista:

- I'd like to order a large pepperoni stuffed crust pizza.

Entidade de expressão regular

Uma [entidade de expressão regular][entidade de expressão regular] extrai uma entidade com base em um padrão de caractere de expressão regular fornecido. As expressões regulares são melhores para texto estruturado ou uma sequência predefinida de valores alfanuméricos esperados em um determinado formato. Por exemplo:

Entidade Regular expression Exemplo
Número de Voo voo [A-Z] [0-9]{2}{4} voo AS 1234
Número do Cartão de Crédito [0-9]{16} 5478789865437632

Aqui está um exemplo das definições de entidade de expressão regular:

> Flight Number regular expression entity definition
@ regex flightNumber = /flight [A-Z]{2} [0-9]{4}/

> Credit Card Number regular expression entity definition
@ regex creditCardNumber = /[0-9]{16}/

Funções

Uma função é um alias nomeado para uma entidade com base no contexto dentro de um enunciado. Uma função pode ser usada com qualquer tipo de entidade pré-criada ou personalizada e são usadas em enunciados e padrões de exemplo.

No exemplo abaixo, a entidade Location tem duas funções edestination: origin

Entidade Função Objetivo
Localização origem De onde parte o avião
Localização destino Onde o avião pousa

As funções no formato de arquivo .lu podem ser explícita ou implicitamente definidas. A definição explícita da função segue a notação:

@ <entityType> <entityName> [hasRole[s]] role1, role2, ...

Abaixo estão mostradas as várias maneiras pelas quais você pode definir explicitamente entidades e suas funções:

> # ml entity definition with roles
> the following are 4 different approaches to define roles:

@ ml name role1, role2

@ ml name hasRoles role1, role2

@ ml name
@ name hasRoles role1, role2

@ ml name
@ name hasRole role1
@ name hasRole role2

Você também pode definir implicitamente funções diretamente em padrões e enunciados rotulados usando o seguinte formato:

{@<entityName>:<roleName>}

Você pode ver no exemplo abaixo como as funções userName:firstName e userName:lastName são implicitamente definidas:

# getUserName
- My first name is {@userName:firstName=vishwac}
- My full name is {@userName:firstName=vishwac} {@userName:lastName=kannan}
- Hello, I'm {@userName:firstName=vishwac}
- {@userName=vishwac} is my name

@ ml userName

Em padrões, você pode usar funções usando a {<entityName>:<roleName>} notação. Eis um exemplo:

# getUserName
- call me {name:userName}
- I'm {name:userName}
- my name is {name:userName}

Você também pode definir várias funções para uma entidade em padrões, vistos abaixo:

> Roles can be specified for list entity types as well - in this case fromCity and toCity are added as roles to the 'city' list entity defined further below

# BookFlight
- book flight from {city:fromCity} to {city:toCity}
- [can you] get me a flight from {city:fromCity} to {city:toCity}
- get me a flight to {city:toCity}
- I need to fly from {city:fromCity}

$city:Seattle=
- Seattle
- Tacoma
- SeaTac
- SEA

$city:Portland=
- Portland
- PDX

Padrões

[Padrões] [] permitem que você cubra um grande número de exemplos que devem ser correspondidos criando um enunciado com espaços reservados para onde as entidades devem ser encontradas. Os padrões são uma expressão regular de nível de token com espaços reservados para entidades. Se um enunciado tiver qualquer entidade, espaços reservados ou sintaxe de padrão, ele será interpretado como um padrão. Caso contrário, é interpretado como um enunciado para treinar o aprendizado de máquina.

Os espaços reservados de entidade podem corresponder a entidades de qualquer tipo ou podem ser definidos pelo próprio padrão, como quando uma seção no padrão é uma entidade que é identificada observando as palavras ao redor.

Sintaxe de padrão

O formato de ficheiro .lu suporta o LUIS [Sintaxe padrão][]. A sintaxe de padrão é um modelo incorporado em um enunciado. O modelo deve conter palavras e entidades que você deseja corresponder, bem como palavras e pontuação que você deseja ignorar. O modelo não é uma expressão regular.

Entidades em padrões são cercadas por chaves, {}. Os padrões podem incluir entidades e entidades com funções. [Padrão.qualquer] [pattern-any] é uma entidade usada apenas em padrões.

Function Sintaxe Nível de aninhamento Exemplo
entidade {} - aparelhos ortodônticos 2 Where is form {entity-name}?
opcional [] - colchetes
Há um limite de 3 nos níveis de aninhamento de qualquer combinação de opcional e agrupamento
2 The question mark is optional [?]
agrupamento () - parênteses 2 is (a \| b)
ou | - barra vertical (tubo)Há um limite de 2 nas barras verticais (ou)
em um grupo
- Where is form ({form-name-short} \| {form-name-long} \| {form-number})
início e/ou fim do enunciado ^ - Caret - ^begin the utterance
the utterance is done^
^strict literal match of entire utterance with {number} entity^

Consulte o artigo [Pattern syntax][] na documentação do LUIS para obter mais informações.

O exemplo a seguir mostra uma definição que seria tratada como um padrão com uma alarmTime entidade definida pelo padrão:

# DeleteAlarm
- delete the {alarmTime} alarm

O enunciado "excluir o alarme das 7h" corresponderia ao padrão e reconheceria uma alarmTime entidade de "7h".

Por outro lado, o exemplo a seguir é um enunciado rotulado onde alarmTime é uma entidade aprendida por máquina, uma vez que tem um valor rotulado 7AM:

# DeleteAlarm
- delete the {alarmTime=7AM} alarm

Não é possível misturar rótulos de entidade e espaços reservados de entidade no mesmo enunciado, mas é possível usar espaços reservados que correspondam a entidades aprendidas por máquina.

Gorjeta

Você deve entender como seu bot responde à entrada do usuário antes de adicionar padrões, porque os padrões são mais pesados do que os enunciados de exemplo e distorcerão a confiança. Não há nenhum dano em adicioná-los no início do design do modelo, mas é mais fácil ver como cada padrão muda o modelo depois que o modelo é testado com enunciados.

Lista de frases

Uma [lista de frases][lista de frases] é uma lista de palavras ou frases que ajudam a encontrar o conceito que você está tentando identificar. A lista não diferencia maiúsculas de minúsculas. As listas de frases têm duas finalidades diferentes:

  • Estender o dicionário: Este é o padrão quando você define uma lista de frases e é conhecido como não intercambiável. Frases com várias palavras se tornam um recurso para o aprendizado de máquina, que requer menos exemplos para aprender. Neste uso, não há relação entre os membros da lista de fases.
  • Definir sinónimos: As listas de frases intercambiáveis são utilizadas para definir sinónimos que significam a mesma coisa. Esse uso ajuda a generalizar com menos exemplos. Qualquer frase na lista resulta no mesmo recurso para o aprendizado de máquina. Para usar isso é necessário especificar interchangeable na sua definição de lista de frases (@ phraselist <Name>(interchangeable))

Nota

Um recurso pode ser uma frase, lista ou entidade que você associa a uma intenção ou entidade para enfatizar a importância desse recurso na deteção precisa da intenção do usuário. Consulte Adicionar uma lista de frases como um recurso para obter mais informações.

Para obter informações adicionais sobre quando e como usar listas de frases, incluindo cenários típicos para os quais elas são usadas, consulte [Criar uma lista de frases para um conceito][lista de frases].

Você define listas de frases usando a seguinte notação:

@ phraselist <Name>
    - <phrase1>
    - <phrase2>

Aqui está um exemplo de uma lista de frases usada para estender o dicionário:

@ phraseList newTerms=
- surf the sky
- jump on the beam
- blue sky pajamas

As listas de frases também podem ser usadas para definir sinónimos, marcando-os como intercambiáveis.

@ phraseList Want(interchangeable) =
    - require, need, desire, know

> You can also break up the phrase list values into a bulleted list
@ phraseList Want(interchangeable) =
    - require
    - need
    - desire
    - know

Por padrão, as listas de frases estão disponíveis para todas as intenções e entidades aprendidas. Existem três estados de disponibilidade:

Estado de disponibilidade Descrição
habilitadoForAllModels (padrão) Quando uma lista de frases é marcada como , ela está disponível para todos os modelos, independentemente de você listá-la especificamente como enabledForAllModelsum recurso.
disabledForAllModels Quando uma lista de frases é marcada como , ela só é usada em um modelo se estiver listada especificamente como disabledForAllModelsum recurso.
desativado Quando uma lista de frases é marcada como , ela não é usada em nenhum lugar, incluindo quaisquer modelos em que esteja especificamente listada como disabledum recurso. Isso fornece um meio fácil de desativar uma lista de frases para ver como as coisas funcionam bem sem ela.

As listas de frases estão disponíveis globalmente por padrão e também podem ser definidas especificamente usando a enabledForAllModels palavra-chave:

@ phraselist abc enabledForAllModels

Dois exemplos de como definir uma lista de frases como disabledForAllModels:

@ phraselist abc disabledForAllModels

> You can also use this approach
@ phraselist question(interchangeable) =
    - are you
    - you are

@ question disabledForAllModels

Ao definir uma lista de frases como , ela não será usada, mesmo quando listada especificamente como disabledum recurso:

> phrase list definition, temporarily set to disabled to measure its impact

@ phraselist yourPhraseList disabled

> phrase list as feature to intent, won't be used

@ intent yourIntent usesFeature yourPhraseList

As listas de frases podem ser usadas como recursos para intenções e entidades específicas, conforme descrito na próxima seção.

Adicionando recursos a intenções e entidades

O aprendizado de máquina funciona pegando recursos e aprendendo como eles se relacionam com a intenção ou entidade desejada a partir de enunciados de exemplo. Por padrão, os recursos são simplesmente as palavras que compõem os enunciados. As listas de frases fornecem um meio de agrupar várias palavras em um novo recurso; Isso faz com que o aprendizado de máquina generalize melhor a partir de menos exemplos. Por padrão, as listas de frases são globais e se aplicam a todos os modelos aprendidos por máquina, mas você também pode vinculá-las a intenções ou entidades específicas. Você também pode usar intenções ou entidades como recursos para detetar outras intenções como entidades. Isso fornece modularidade para que você possa construir conceitos mais complexos a partir de blocos de construção mais simples.

Nota

No aprendizado de máquina, um recurso é um texto que descreve um traço distintivo ou atributo de dados que seu sistema observa e aprende. Listas de frases, intenções e entidades podem ser usadas como recursos, conforme explicado nesta e nas seções a seguir.

Os recursos podem ser adicionados a qualquer intenção ou entidade aprendida usando a usesFeature palavra-chave.

Adicionar uma lista de frases como um recurso

As listas de frases podem ser adicionadas como um recurso a intenções ou entidades. Isso ajuda essas intenções ou entidades específicas sem afetar outras intenções e entidades. Aqui está um exemplo de como definir uma lista de frases como um recurso para outro modelo:

> phrase list definition

@ phraseList PLCity(interchangeable) =
    - seattle
    - space needle
    - SEATAC
    - SEA

> phrase list as feature to intent 

@ intent getUserProfileIntent usesFeature PLCity

> phrase list as a feature to an ml entity

@ ml myCity usesFeature PLCity

@ regex regexZipcode = /[0-9]{5}/

> a phrase list is used as a feature in a hierarchal entity

@ ml address fromAddress, toAddress
@ address =
    - @ number 'door number'
    - @ ml streetName
    - @ ml location
        - @ ml city usesFeature PLCity
        - @ regexZipcode zipcode

Adicionar uma entidade ou intenção como um recurso

Abaixo estão exemplos de como adicionar intenções e entidades como um recurso com usesFeature:

> entity definition - @ <entityType> <entityName> [<roles>]

@ prebuilt personName
@ prebuilt age

> entity definition with roles

@ ml userName hasRoles fistName, lastName

> add an entity as a feature to another entity

@ userName usesFeature personName

> add an entity as feature to an intent

@ intent getUserNameIntent usesFeature personName

> Intent definition

# getUserNameIntent
- utterances

> multiple entities as a feature to a model

@ intent getUserNameIntent usesFeature age, personName

> intent as a feature to another intent

@ intent getUserProfileIntent usesFeature getUserNameIntent

# getUserProfileIntent
- utterances

Metadados

Você pode incluir metadados relacionados ao seu aplicativo LUIS ou à base de conhecimento do QnA Maker no arquivo .lu. Isso ajudará a direcionar o analisador para lidar com o conteúdo LU corretamente. Os metadados normalmente são adicionados ao início do arquivo .lu.

Veja como definir informações de configuração usando > !#:

> !# @<property> = <value>
> !# @<scope>.<property> = <value>
> !# @<scope>.<property> = <semicolon-delimited-key-value-pairs>

Observe que qualquer informação passada explicitamente por meio de argumentos da CLI substituirá as informações no arquivo .lu.

> LUIS application information
> !# @app.name = my luis application
> !# @app.desc = description of my luis application
> !# @app.versionId = 1.0
> !# @app.culture = en-us
> !# @app.luis_schema_version = 7.0.0
> !# @app.settings.NormalizePunctuation = true
> !# @app.settings.NormalizeWordForm = true
> !# @app.settings.UseAllTrainingData = true
> !# @app.tokenizerVersion = 1.0.0

Consulte a tabela abaixo para obter uma descrição dos valores de metadados do aplicativo usados no exemplo acima. Para obter informações sobre app.settings no LUIS, consulte [App and version settings][luis-metadata] na documentação do LUIS.

Metadados Descrição
Name O nome do seu aplicativo
VersionId O nome dessa versão específica
Cultura A língua utilizada pela sua candidatura
Versão do esquema O esquema LUIS é atualizado sempre que um novo recurso ou configuração é adicionado no LUIS. Use o número de versão do esquema que você usou ao criar ou atualizar seu modelo LUIS.

Referências externas

As seções abaixo detalham como fazer referências de arquivo local e URI .

Referências de ficheiros locais

Nota

O Azure AI QnA Maker será desativado em 31 de março de 2025. A partir de 1º de outubro de 2022, você não poderá criar novos recursos ou bases de conhecimento do QnA Maker. Uma versão mais recente do recurso de perguntas e respostas agora está disponível como parte da Linguagem de IA do Azure.

A resposta a perguntas personalizadas, um recurso do Azure AI Language, é a versão atualizada do serviço QnA Maker. Para obter mais informações sobre o suporte a perguntas e respostas no SDK do Bot Framework, consulte Compreensão de linguagem natural.

Faz referência ao arquivo .lu. Siga a sintaxe do link Markdown. As referências suportadas incluem:

  • Referência a outro arquivo .lu via [link name](<.lu file name>). A referência pode ser um caminho absoluto ou um caminho relativo do arquivo .lu que contém.
  • A referência a uma pasta com outros arquivos .lu é suportada através de:
    • [link name](<.lu file path>*): procura arquivos .lu sob o caminho absoluto ou relativo especificado
    • [link name](<.lu file path>**): procura recursivamente arquivos .lu no caminho absoluto ou relativo especificado, incluindo subpastas.
  • Você também pode adicionar referências a enunciados definidos em um arquivo específico em uma seção de intenção ou como pares QnA.
    • [link name](<.lu file path>#<INTENT-NAME>): localiza todos os enunciados em <INTENT-NAME> no arquivo .lu e os adiciona à lista de enunciados onde a referência é especificada.
    • [link name](<.lu file path>#<INTENT-NAME>*utterances*): localiza todos os enunciados (não padrões) em <INTENT-NAME> no arquivo .lu e os adiciona à lista de enunciados onde a referência é especificada.
    • [link name](<.lu file path>#<INTENT-NAME>*patterns*): localiza todos os padrões (não enunciados) em <INTENT-NAME> no arquivo .lu e os adiciona à lista de padrões onde a referência é especificada.
    • [link name](<.lu file path>#*utterances*): localiza todos os enunciados no arquivo .lu e os adiciona à lista de enunciados onde a referência é especificada.
    • [link name](<.lu file path>#*patterns*): localiza todos os padrões no arquivo .lu e os adiciona à lista de enunciados onde a referência é especificada.
    • [link name](<.lu file path>#*utterancesAndPatterns*): localiza todos os enunciados e padrões no arquivo .lu e os adiciona à lista de enunciados onde a referência é especificada.
    • [link name](<.qna file path>#$name?): Localiza todas as alterações da definição de alteração específica no conteúdo .qna e adiciona-as à lista de enunciados onde a referência é especificada.
    • [link name](<.qna file path>#*alterations*?): localiza todas as alterações do conteúdo .qna e as adiciona à lista de enunciados onde a referência é especificada.
    • [link name](<.qna file path>#?question-to-find?): localiza todas as perguntas de variação da pergunta específica e adiciona-as à lista de enunciados onde a referência é especificada. Observe que todos os espaços na sua pergunta precisarão ser substituídos - pelo personagem.
    • [link name](<.qna file path>#*answers*?): Localiza todas as respostas e adiciona-as à lista de enunciados onde a referência é especificada.

Aqui está um exemplo das referências acima mencionadas:

> You can include references to other .lu files

[All LU files](./all.lu)

> References to other files can have wildcards in them

[en-us](./en-us/*)

> References to other lu files can include subfolders as well.
> /** indicates to the parser to recursively look for .lu files in all subfolders as well.

[all LU files](../**)

> You can include deep references to intents defined in a .lu file in utterances

# None
- [None uttearnces](./all.lu#Help)

> With the above statement, the parser will parse all.lu and extract out all utterances associated with the 'Help' intent and add them under 'None' intent as defined in this file.

> NOTE: This **only** works for utterances as entities that are referenced by the uttearnces in the 'Help' intent won't be brought forward to this .lu file.

# All utterances
> you can use the *utterances* wild card to include all utterances from a lu file. This includes utterances across all intents defined in that .lu file.
- [all.lu](./all.lu#*utterances*)
> you can use the *patterns* wild card to include all patterns from a lu file.
> - [all.lu](./all.lu#*patterns*)
> you can use the *utterancesAndPatterns* wild card to include all utterances and patterns from a lu file.
> - [all.lu](./all.lu#*utterancesAndPatterns*)

> You can include wild cards with deep references to QnA maker questions defined in a .qna file in utterances

# None
- [QnA questions](./*#?)

> With the above statement, the parser will parse **all** .lu files under ./, extract out all questions from QnA pairs in those files and add them under 'None' intent as defined in this file.

> You can include deep references to QnA maker questions defined in a .qna file in utterances

# None
- [QnA questions](./qna1.qna#?)

> With the above statement, the parser will parse qna1.lu and extract out all questions from QnA pairs in that file and add them under 'None' intent as defined in this file.

Referências de URI

Abaixo estão exemplos de como fazer referências de URI:

> URI to LU resource
[import](http://.../foo.lu)

# intent1
> Ability to pull in specific utterances from an intent
- [import](http://.../foo.lu#None)

# intent2
> Ability to pull in utterances or patterns or both from a specific intent 'None'
- [import](http://..../foo.lu#None*utterances*)
- [import](http://..../bar.lu#None*patterns*)
- [import](http://..../taz.lu#None*utterancesandpatterns*)

# intent3
> Ability to pull in all utterances or patterns or both across all intents
- [import](http://..../foo.lu#*utterances*)
- [import](http://..../bar.lu#*patterns*)
- [import](http://..../taz.lu#*utterancesandpatterns*)

Informações adicionais

  • Leia o formato de arquivo .qna para obter mais informações sobre arquivos .qna.