Padrões nas aplicações LUIS

Importante

O LUIS será descontinuado a 1 de outubro de 2025 e a partir de 1 de abril de 2023 não poderá criar novos recursos do LUIS. Recomendamos que migre as suas aplicações LUIS para a compreensão de linguagem de conversação para beneficiar do suporte contínuo do produto e das capacidades multilingues.

Os padrões são concebidos para melhorar a precisão quando várias expressões são muito semelhantes. Um padrão permite-lhe obter mais precisão para uma intenção sem fornecer mais expressões.

Padrões resolvem confiança de intenção baixa

Considere uma aplicação de Recursos Humanos que reporta no gráfico organizacional em relação a um funcionário. Tendo em conta o nome e a relação de um funcionário, o LUIS devolve os colaboradores envolvidos. Considere um empregado, Tom, com um gerente chamado Alice, e uma equipa de subordinados chamada: Michael, Rebecca e Carl.

Uma captura de ecrã a mostrar a utilização de padrões

Expressões Intenção prevista Pontuação da intenção
Quem é o subordinado do Tom? GetOrgChart 0.30
Quem é o subordinado de Tom? GetOrgChart 0.30

Se uma aplicação tiver entre 10 e 20 expressões com diferentes comprimentos de frase, ordem de palavras diferentes e até palavras diferentes (sinónimos de "subordinado", "gerir", "relatório"), o LUIS poderá devolver uma classificação de confiança baixa. Crie um padrão para ajudar o LUIS a compreender a importância da ordem da palavra.

Os padrões resolvem as seguintes situações:

  • A classificação da intenção é baixa
  • A intenção correta não é a melhor classificação, mas está demasiado próxima da classificação superior.

Os padrões não são uma garantia de intenção

Os padrões utilizam uma combinação de técnicas de predição. Definir uma intenção para uma expressão de modelo num padrão não é uma garantia da predição da intenção, mas é um sinal forte.

Os padrões não melhoram a deteção de entidades de machine learning

Um padrão destina-se principalmente a ajudar na predição de intenções e funções. A entidade "pattern.any" é utilizada para extrair entidades de forma livre. Embora os padrões utilizem entidades, um padrão não ajuda a detetar uma entidade de machine learning.

Não espere ver uma predição de entidade melhorada se fechar várias expressões num único padrão. Para que as entidades simples sejam utilizadas pela sua aplicação, tem de adicionar expressões ou utilizar entidades de lista.

Os padrões utilizam funções de entidade

Se duas ou mais entidades num padrão estiverem contextualmente relacionadas, os padrões utilizam funções de entidade para extrair informações contextuais sobre entidades.

Pontuações de predição com e sem padrões

Tendo em conta expressões de exemplo suficientes, o LUIS pode ser capaz de aumentar a confiança de predição sem padrões. Os padrões aumentam a classificação de confiança sem terem de fornecer tantas expressões.

Correspondência de padrões

Um padrão é correspondido ao detetar primeiro as entidades dentro do padrão e, em seguida, validar o resto das palavras e a ordem das palavras do padrão. As entidades são necessárias no padrão para que um padrão corresponda. O padrão é aplicado ao nível do token, não ao nível do caráter.

Entidade Pattern.any

A entidade pattern.any permite localizar dados de forma livre em que o texto da entidade dificulta distinguir o final da entidade do resto da expressão.

Por exemplo, considere uma aplicação de Recursos Humanos que ajude os colaboradores a encontrar documentos da empresa. Esta aplicação poderá ter de compreender as seguintes expressões de exemplo.

  • "Onde está HRF-123456?".
  • "Quem criou HRF-123234?".
  • "A HRF-456098 é publicada em francês?"

No entanto, cada documento tem um nome formatado (utilizado na lista acima) e um nome legível por humanos, como Pedir reposicionamento de funcionários novos para a empresa versão 5 de 2018.

As expressões com o nome legível por humanos podem ter o seguinte aspeto:

  • "Onde está o Pedido de reposicionamento de funcionários novo para a empresa 5 versão 2018?".
  • "Quem criou "Pedir a reposicionamento do funcionário novo para a empresa 5"?"
  • O pedido de reposicionamento de funcionários novo para a empresa versão 5 de 2018 é publicado em francês?"

As expressões incluem palavras que podem confundir o LUIS sobre onde a entidade termina. A utilização de uma entidade Pattern.any num padrão permite-lhe especificar o início e o fim do nome do documento, pelo que o LUIS extrai corretamente o nome do formulário. Por exemplo, as seguintes expressões de modelo:

  • Onde está {FormName}[?]
  • Quem é o autor de {FormName}[?]
  • O {FormName} é publicado em francês[?]

Melhores práticas para Padrões:

Adicionar padrões em iterações posteriores

Deve compreender como a aplicação se comporta antes de adicionar padrões porque os padrões são mais ponderados do que expressões de exemplo e irão distorcer a confiança.

Assim que compreender o comportamento da sua aplicação, adicione padrões à medida que se aplicam à sua aplicação. Não precisa de as adicionar sempre que iterar na estrutura da aplicação.

Não existem danos ao adicioná-los no início da estrutura do modelo, mas é mais fácil ver como cada padrão altera o modelo depois de o modelo ser testado com expressões.

Não adicione muitos padrões

Não adicione demasiados padrões. O LUIS destina-se a aprender rapidamente com menos exemplos. Não sobrecarregue o sistema desnecessariamente.

Funcionalidades

No machine learning, uma funcionalidade é um traço distinto ou atributo de dados que o seu sistema observa e aprende.

As funcionalidades de machine learning dão ao LUIS pistas importantes para onde procurar coisas que distinguem um conceito. São sugestões que o LUIS pode utilizar, mas não são regras rígidas. O LUIS utiliza estas sugestões com as etiquetas para localizar os dados.

Uma funcionalidade pode ser descrita como uma função, como f(x) = y. Na expressão de exemplo, a funcionalidade indica-lhe onde procurar o traço distinto. Utilize estas informações para ajudar a criar o esquema.

Tipos de funcionalidades

As funcionalidades são uma parte necessária da estrutura do esquema. O LUIS suporta listas de expressões e modelos como funcionalidades:

  • Funcionalidade de lista de expressões
  • Modelo (intenção ou entidade) como uma funcionalidade

Localizar funcionalidades nas expressões de exemplo

Uma vez que o LUIS é uma aplicação baseada em idiomas, as funcionalidades são baseadas em texto. Selecione o texto que indica o traço que pretende distinguir. Para o LUIS, a unidade mais pequena é o token. Para o idioma inglês, um token é um intervalo contíguo de letras e números que não tem espaços nem pontuação.

Uma vez que os espaços e a pontuação não são tokens, concentre-se nas pistas de texto que pode utilizar como funcionalidades. Lembre-se de incluir variações de palavras, tais como:

  • Formulários plural
  • Tempos de verbo
  • Abreviaturas
  • Ortografias e erros ortográficos

Determine se o texto precisa do seguinte porque distingue um traço:

  • Corresponder a uma palavra ou expressão exata: considere adicionar uma entidade de expressão regular ou uma entidade de lista como uma funcionalidade à entidade ou intenção.
  • Corresponda a um conceito bem conhecido, como datas, horas ou nomes de pessoas: utilize uma entidade pré-criada como uma funcionalidade para a entidade ou intenção.
  • Conheça novos exemplos ao longo do tempo: utilize uma lista de expressões de alguns exemplos do conceito como uma funcionalidade para a entidade ou intenção.

Criar uma lista de expressões para um conceito

Uma lista de expressões é uma lista de palavras ou expressões que descrevem um conceito. Uma lista de expressões é aplicada como uma correspondência não sensível a maiúsculas e minúsculas ao nível do token.

Ao adicionar uma lista de expressões, pode definir a funcionalidade como global. Uma funcionalidade global aplica-se a toda a aplicação.

Quando utilizar uma lista de expressões

Utilize uma lista de expressões quando precisar da sua aplicação LUIS para generalizar e identificar novos itens para o conceito. As listas de expressões são como vocabulário específico do domínio. Melhoram a qualidade de compreensão para intenções e entidades.

Como utilizar uma lista de expressões

Com uma lista de expressões, o LUIS considera o contexto e generaliza para identificar itens que são semelhantes, mas não são, uma correspondência de texto exata. Siga estes passos para utilizar uma lista de expressões:

  1. Comece com uma entidade de machine learning:
  2. Adicione expressões de exemplo.
  3. Etiqueta com uma entidade de machine learning.
  4. Adicionar uma lista de expressões:
  5. Adicione palavras com um significado semelhante. Não adicione todas as palavras ou expressões possíveis. Em vez disso, adicione algumas palavras ou expressões de cada vez. Em seguida, volte a preparar e publicar.
  6. Reveja e adicione palavras sugeridas.

Um cenário típico para uma lista de expressões

Um cenário típico de uma lista de expressões é aumentar as palavras relacionadas com uma ideia específica.

Os termos médicos são um bom exemplo de palavras que podem precisar de uma lista de expressões para aumentar o seu significado. Estes termos podem ter significados físicos, químicos, terapêuticos ou abstratos específicos. O LUIS não saberá que os termos são importantes para o seu domínio de assunto sem uma lista de expressões.

Por exemplo, para extrair os termos médicos:

  1. Criar expressões de exemplo e etiquetar termos médicos nessas expressões.
  2. Crie uma lista de expressões com exemplos dos termos no domínio do assunto. Esta lista de expressões deve incluir o termo real que rotulou e outros termos que descrevem o mesmo conceito.
  3. Adicione a lista de expressões à entidade ou subentidade que extrai o conceito utilizado na lista de expressões. O cenário mais comum é um componente (subordinado) de uma entidade de machine learning. Se a lista de expressões deve ser aplicada em todas as intenções ou entidades, marque a lista de expressões como uma lista de expressões global. O sinalizador enabledForAllModels controla este âmbito de modelo na API.

Correspondências de tokens para uma lista de expressões

Uma lista de expressões aplica-se sempre ao nível do token. A tabela seguinte mostra como uma lista de expressões com a palavra Ann se aplica a variações dos mesmos carateres nessa ordem.

Variação de token de "Ann" A lista de expressões corresponde quando o token é encontrado
ANN
aNN
Sim - token é Ann
Ann's Sim - token é Ann
Ana Não - token é Anne

Um modelo como uma funcionalidade ajuda outro modelo

Pode adicionar um modelo (intenção ou entidade) como uma funcionalidade a outro modelo (intenção ou entidade). Ao adicionar uma intenção ou entidade existente como uma funcionalidade, está a adicionar um conceito bem definido que tem exemplos etiquetados.

Ao adicionar um modelo como uma funcionalidade, pode definir a funcionalidade como:

  • Obrigatório. Tem de encontrar uma funcionalidade necessária para que o modelo seja devolvido do ponto final de predição.
  • Global. Uma funcionalidade global aplica-se a toda a aplicação.

Quando utilizar uma entidade como uma funcionalidade para uma intenção

Adicione uma entidade como uma funcionalidade a uma intenção quando a deteção dessa entidade for significativa para a intenção.

Por exemplo, se a intenção for reservar um voo, como o BookFlight , e a entidade for informação sobre pedidos de suporte (como o número de lugares, origem e destino), então encontrar a entidade ticket-information deve adicionar um peso significativo à predição da intenção BookFlight .

Quando utilizar uma entidade como uma funcionalidade para outra entidade

Uma entidade (A) deve ser adicionada como uma funcionalidade a outra entidade (B) quando a deteção dessa entidade (A) for significativa para a predição da entidade (B).

Por exemplo, se uma entidade de endereço de envio estiver contida numa subentidade de endereço de rua, encontrar a subentidade de endereço de rua aumenta significativamente a predição para a entidade de endereço de envio.

  • Endereço de envio (entidade de machine learning):
    • Número da rua (subentidade)
    • Rua (subentidade)
    • Cidade (subentidade)
    • Estado ou Província (subentidade)
    • País/Região (subentidade)
    • Código postal (subentidade)

Subentidades aninhadas com funcionalidades

Uma subentidade de machine learning indica que está presente um conceito para a entidade principal. O principal pode ser outra subentidade ou a entidade superior. O valor da subentidade funciona como uma funcionalidade para o respetivo elemento principal.

Uma subentidade pode ter uma lista de expressões e um modelo (outra entidade) como uma funcionalidade.

Quando a subentidade tem uma lista de expressões, aumenta o vocabulário do conceito, mas não adiciona nenhuma informação à resposta JSON da predição.

Quando a subentidade tem uma funcionalidade de outra entidade, a resposta JSON inclui os dados extraídos dessa outra entidade.

Funcionalidades necessárias

Uma funcionalidade necessária tem de ser encontrada para que o modelo seja devolvido do ponto final de predição. Utilize uma funcionalidade necessária quando souber que os dados recebidos têm de corresponder à funcionalidade.

Se o texto da expressão não corresponder à funcionalidade necessária, não será extraído.

Uma funcionalidade necessária utiliza uma entidade que não é de machine learning:

  • Entidade de expressão regular
  • Entidade de lista
  • Entidade pré-criada

Se tiver a certeza de que o modelo será encontrado nos dados, defina a funcionalidade conforme necessário. Uma funcionalidade necessária não devolve nada se não for encontrada.

Continuando com o exemplo do endereço para envio:

Endereço de envio (entidade machine learned)

  • Número da rua (subentidade)
  • Rua (subentidade)
  • Nome da rua (subentidade)
  • Cidade (subentidade)
  • Estado ou Província (subentidade)
  • País/Região (subentidade)
  • Código postal (subentidade)

Funcionalidade necessária com entidades pré-criadas

As entidades pré-criadas, como a cidade, o estado e o país/região, são geralmente um conjunto fechado de listas, o que significa que não mudam muito ao longo do tempo. Estas entidades podem ter as funcionalidades recomendadas relevantes e essas funcionalidades podem ser marcadas conforme necessário. No entanto, o sinalizador isRequired está apenas relacionado com a entidade à qual está atribuído e não afeta a hierarquia. Se a funcionalidade de sub-entidade pré-criada não for encontrada, isto não afetará a deteção e o retorno da entidade principal.

Como exemplo de uma funcionalidade necessária, considere que pretende detetar endereços. Pode considerar tornar um número de rua um requisito. Isto permitiria que um utilizador introduzisse "1 Microsoft Way" ou "One Microsoft Way", e ambos resolveriam para a sub-entidade numeral "1" para o número de rua. Veja o artigo da entidade pré-criadapara obter mais informações.

Funcionalidade necessária com entidades de lista

Uma entidade de lista é utilizada como uma lista de nomes canónicos, juntamente com os seus sinónimos. Como uma funcionalidade necessária, se a expressão não incluir o nome canónico ou um sinónimo, a entidade não será devolvida como parte do ponto final de predição.

Suponha que a sua empresa apenas é enviada para um conjunto limitado de países/regiões. Pode criar uma entidade de lista que inclua várias formas de o cliente referenciar o país/região. Se o LUIS não encontrar uma correspondência exata no texto da expressão, a entidade (que tem a funcionalidade necessária da entidade de lista) não é devolvida na predição.

Nome canónico** Sinónimos
Estados Unidos da América U.S.
E.U.A.
EUA
E.U.A.
0

Uma aplicação cliente, como um chat bot, pode fazer uma pergunta de seguimento para ajudar. Isto ajuda o cliente a compreender que a seleção de país/região é limitada e necessária.

Funcionalidade necessária com entidades de expressão regulares

Uma entidade de expressão regular que é utilizada como uma funcionalidade necessária fornece capacidades avançadas de correspondência de texto.

No exemplo de endereço de envio, pode criar uma expressão regular que captura regras de sintaxe dos códigos postais de país/região.

Funcionalidades globais

Embora a utilização mais comum seja aplicar uma funcionalidade a um modelo específico, pode configurar a funcionalidade como uma funcionalidade global para aplicá-la a toda a aplicação.

A utilização mais comum para uma funcionalidade global é adicionar um vocabulário adicional à aplicação. Por exemplo, se os seus clientes utilizarem um idioma primário, mas esperarem poder utilizar outro idioma na mesma expressão, pode adicionar uma funcionalidade que inclua palavras do idioma secundário.

Uma vez que o utilizador espera utilizar o idioma secundário em qualquer intenção ou entidade, adicione palavras do idioma secundário à lista de expressões. Configure a lista de expressões como uma funcionalidade global.

Combinar funcionalidades para benefício adicional

Pode utilizar mais do que uma funcionalidade para descrever um traço ou conceito. Um emparelhamento comum é utilizar:

Exemplo: funcionalidades da entidade de reserva de pedidos de suporte para uma aplicação de viagens

Como exemplo básico, considere uma aplicação para reservar um voo com uma intenção de reserva de voo e uma entidade de reserva de bilhetes. A entidade de reserva de bilhetes captura as informações para reservar um bilhete de avião num sistema de reservas.

A entidade de machine learning do ticket-book tem duas subentidades para capturar a origem e o destino. As funcionalidades têm de ser adicionadas a cada subentidade e não à entidade de nível superior.

Captura de ecrã a mostrar entidades de exemplo para uma aplicação de reserva de pedidos de suporte.

A entidade de reserva de pedidos de suporte é uma entidade de machine learning, com subentidades, incluindo Origem e Destino. Estas subentidades indicam uma localização geográfica. Para ajudar a extrair as localizações e a distinguir entre Origem e Destino, cada subentidade deve ter funcionalidades.

Tipo Subentidade de origem Subentidade de destino
Modelo como uma funcionalidade geographyV2 entidade pré-criada geographyV2 entidade pré-criada
Lista de expressões Palavras de origem : comece em, comece a partir de, deixe Palavras de destino : para, chegar, aterrar, ir, ir, ficar, cabeçalho
Lista de expressões Códigos de aeroporto – a mesma lista para a origem e o destino Códigos de aeroporto – a mesma lista para a origem e o destino
Lista de expressões Nomes dos aeroportos – a mesma lista para a origem e o destino Códigos de aeroporto – a mesma lista para a origem e o destino

Se antecipar que as pessoas utilizam códigos de aeroporto e nomes de aeroportos, o LUIS deverá ter listas de expressões que utilizem ambos os tipos de expressões. Os códigos de aeroporto podem ser mais comuns com o texto introduzido num chatbot, enquanto os nomes dos aeroportos podem ser mais comuns com conversações faladas, como um chatbot com capacidade de voz.

Os detalhes correspondentes das funcionalidades são devolvidos apenas para modelos, não para listas de expressões porque apenas os modelos são devolvidos no JSON de predição.

Etiquetagem de reserva de pedidos na intenção

Depois de criar a entidade de machine learning, tem de adicionar expressões de exemplo a uma intenção e etiquetar a entidade principal e todas as subentidades.

Para o exemplo de reserva de pedidos de suporte, etiquetar as expressões de exemplo na intenção com a entidade TicketBooking e quaisquer subentidades no texto.

Uma captura de ecrã a mostrar a etiquetagem de uma expressão de exemplo.

Exemplo: aplicação de encomenda de pizzas

Por um segundo exemplo, considere uma aplicação para um restaurante de pizza, que recebe pedidos de pizza, incluindo os detalhes do tipo de pizza que alguém está a encomendar. Cada detalhe da pizza deve ser extraído, se possível, para concluir o processamento da encomenda.

A entidade de machine learning neste exemplo é mais complexa com subentidades aninhadas, listas de expressões, entidades pré-criadas e entidades personalizadas.

Captura de ecrã a mostrar uma entidade de machine learning com subentidades diferentes.

Este exemplo utiliza funcionalidades ao nível da subentidade e subordinado do nível de subentidade. Que nível obtém que tipo de lista de expressões ou modelo como uma funcionalidade é uma parte importante do design da sua entidade.

Embora as subentidades possam ter muitas listas de expressões como funcionalidades que ajudam a detetar a entidade, cada subentidade tem apenas um modelo como funcionalidade. Nesta aplicação de pizza, estes modelos são principalmente listas.

Uma captura de ecrã a mostrar uma entidade de machine learning com muitas listas de expressões como funcionalidades.

As expressões de exemplo etiquetadas corretamente são apresentadas de forma a mostrar como as entidades são aninhadas.

Passos seguintes