Sintaxe de padrão

Importante

O LUIS será aposentado em 1º de outubro de 2025 e a partir de 1º de abril de 2023 você não poderá criar novos recursos do LUIS. Recomendamos migrar seus aplicativos LUIS para o entendimento de linguagem conversacional para se beneficiar do suporte contínuo ao produto e dos recursos multilíngues.

A sintaxe de padrão é um modelo para um enunciado. O modelo deve conter palavras e entidades que você deseja corresponder, bem como palavras e pontuação que você deseja ignorar. Não é uma expressão regular.

Atenção

Os padrões incluem apenas pais de entidades de aprendizado de máquina, não subentidades. Entidades em padrões são cercadas por colchetes encaracolados, {}. Os padrões podem incluir entidades e entidades com funções. Pattern.any é uma entidade usada apenas em padrões.

A sintaxe padrão suporta a seguinte sintaxe:

Function Sintaxe Nível de aninhamento Exemplo
entidade {} - Suportes encaracolados 2 Onde está o formulário {entity-name}?
opcional [] - colchetes

Há um limite de 3 nos níveis de aninhamento de qualquer combinação de opcional e agrupamento
2 O ponto de interrogação é opcional [?]
agrupamento () - parênteses 2 é (a | b)
ou | - barra vertical (tubo)

Há um limite de 2 nas barras verticais (Ou) em um grupo
- Onde está a forma ({form-name-short} | {nome-formulário-longo} | {número-formulário})
início e/ou fim do enunciado ^ - Caret - ^iniciar o enunciado
o enunciado está feito^
^correspondência literal estrita de todo o enunciado com {número} entidade^

Sintaxe de aninhamento em padrões

A sintaxe opcional , com colchetes, pode ser aninhada em dois níveis. Por exemplo: [[this]is] a new form. Este exemplo permite os seguintes enunciados:

Exemplo de enunciado opcional aninhado Explicação
Este é um novo formulário corresponde a todas as palavras no padrão
é uma nova forma Corresponde a palavras opcionais externas e palavras não opcionais no padrão
um novo formulário corresponde apenas às palavras necessárias

A sintaxe de agrupamento , entre parênteses, pode ser aninhada em dois níveis. Por exemplo: (({Entity1:RoleName1} | {Entity1:RoleName2} ) | {Entity2} ). Esse recurso permite que qualquer uma das três entidades seja correspondida.

Se a Entidade1 for um Local com funções como origem (Seattle) e destino (Cairo) e a Entidade 2 for um nome de construção conhecido de uma entidade de lista (RedWest-C), os seguintes enunciados serão mapeados para esse padrão:

Exemplo de enunciado de agrupamento aninhado Explicação
RedWest-C corresponde à entidade de agrupamento externo
Porto corresponde a uma das entidades de agrupamento interno
Cairo corresponde a uma das entidades de agrupamento interno

Limites de aninhamento para grupos com sintaxe opcional

Uma combinação de agrupamento com sintaxe opcional tem um limite de 3 níveis de aninhamento.

Permitido Exemplo
Sim ( [ ( test1 | test2 ) ] | teste3 )
Não ( [ ( [ test1 ] | test2 ) | teste3 )

Limites de aninhamento para grupos com sintaxe or-ing

Uma combinação de agrupamento com sintaxe or-ing tem um limite de 2 barras verticais.

Permitido Exemplo
Sim ( teste1 | teste2 | ( teste3 | teste4 )
Não ( teste1 | teste2 | teste3 | ( teste4 | teste5 )

Sintaxe para adicionar uma entidade a um modelo de padrão

Para adicionar uma entidade ao modelo de padrão, envolva o nome da entidade com chaves encaracoladas, como Who does {Employee} manage?.

Padrão com entidade
Who does {Employee} manage?

Sintaxe para adicionar uma entidade e função a um modelo de padrão

Uma função de entidade é indicada como {entity:role} com o nome da entidade seguido por dois pontos e, em seguida, o nome da função. Para adicionar uma entidade com uma função ao modelo de padrão, envolva o nome da entidade e o nome da função com chaves curvas, como Book a ticket from {Location:Origin} to {Location:Destination}.

Padrão com funções de entidade
Book a ticket from {Location:Origin} to {Location:Destination}

Sintaxe para adicionar um pattern.any ao modelo pattern

A entidade Pattern.any permite que você adicione uma entidade de comprimento variável ao padrão. Desde que o modelo de padrão seja seguido, o pattern.any pode ter qualquer comprimento.

Para adicionar uma entidade Pattern.any ao modelo de padrão, envolva a entidade Pattern.any com as chaves encaracoladas, como How much does {Booktitle} cost and what format is it available in?.

Padrão com entidade Pattern.any
How much does {Booktitle} cost and what format is it available in?
Títulos de livros no padrão
Quanto custa este livro e em que formato está disponível?
Quanto custa o pedido e em que formato está disponível?
Quanto custa O Curioso Incidente do Cão na Noite e em que formato está disponível?

As palavras do título do livro não são confusas para LUIS porque LUIS sabe onde o título do livro termina, com base na entidade Pattern.any.

Listas explícitas

criar uma Lista Explícita por meio da API de criação para permitir a exceção quando:

  • Seu padrão contém um Pattern.any
  • E essa sintaxe de padrão permite a possibilidade de uma extração de entidade incorreta com base no enunciado.

Por exemplo, suponha que você tenha um padrão contendo sintaxe []opcional , e sintaxe de entidade, {}, combinados de forma a extrair dados incorretamente.

Considere o padrão '[encontrar] e-mail sobre {assunto} [de {pessoa}]'.

Nos enunciados a seguir, o sujeito e a entidade pessoa são extraídos correta e incorretamente:

Expressão Entidade Extração correta
e-mail sobre cães de Chris sujeito=cães
pessoa=Chris
e-mail sobre o homem de La Mancha sujeito=o homem
pessoa=La Mancha
X

Na tabela anterior, o assunto deve ser the man from La Mancha (um título de livro), mas como o assunto inclui a palavra fromopcional, o título é previsto incorretamente.

Para corrigir essa exceção ao padrão, adicione the man from la mancha como uma correspondência de lista explícita para a entidade {subject} usando a API de criação para lista explícita.

Sintaxe para marcar texto opcional em um enunciado de modelo

Marque o texto opcional no enunciado usando a sintaxe de colchete da expressão regular, []. O texto opcional pode aninhar colchetes até dois colchetes apenas.

Padrão com texto opcional Significado
[find] email about {subject} [from {person}] find e from {person} são opcionais
'Você pode me ajudar[?] O sinal de pontuação é opcional

Os sinais de pontuação (?, !, .) devem ser ignorados e você precisa ignorá-los usando a sintaxe entre colchetes em padrões.

Próximos passos

Saiba mais sobre padrões:

Entenda como o sentimento é retornado na resposta .json.