Pianificare l'app LUIS

Importante

LUIS verrà ritirato il 1° ottobre 2025 e a partire dal 1° aprile 2023 non sarà possibile creare nuove risorse LUIS. È consigliabile eseguire la migrazione delle applicazioni LUIS alla comprensione del linguaggio conversazionale per trarre vantaggio dal supporto del prodotto continuo e dalle funzionalità multilingue.

Uno schema di app Language Understanding (LUIS) contiene finalità ed entità rilevanti per il dominio soggetto. Le finalità classificano le espressioni utente e le entità estraggono i dati dalle espressioni utente. Finalità ed entità rilevanti per il dominio soggetto. Le finalità classificano le espressioni utente.

Un'app LUIS impara e esegue in modo più efficiente quando lo si sviluppa in modo iterativo. Ecco un tipico ciclo di iterazione:

  1. Creare una nuova versione
  2. Modificare lo schema dell'app LUIS. ad esempio:
    • Finalità con espressioni di esempio
    • Entità
    • Funzionalità
  3. Eseguire il training, il test e la pubblicazione
  4. Testare l'apprendimento attivo esaminando le espressioni inviate all'endpoint di stima
  5. Raccogliere dati dalle query dell'endpoint

Screenshot che mostra il ciclo di creazione

Identificare il dominio

Un'app LUIS è centrata su un dominio soggetto. Ad esempio, potrebbe essere disponibile un'app di viaggio che gestisce la prenotazione di biglietti, voli, alberghi e auto di noleggio. Un'altra app potrebbe fornire contenuti relativi ad allenamento fisico, monitoraggio degli sforzi e impostazione degli obiettivi. L'identificazione del dominio consente di trovare parole o frasi rilevanti per il dominio.

Suggerimento

LUIS offre domini predefiniti per molti scenari comuni. Verificare se è possibile utilizzare un dominio predefinito come punto di partenza per l'app.

Identificare le finalità

Si considerino le finalità importanti per l'attività dell'applicazione.

Si consideri l'esempio di un'app di viaggi con funzioni per la prenotazione di un volo e il controllo delle previsioni meteo relative alla destinazione dell'utente. È possibile definire due finalità, BookFlight e GetWeather per queste azioni.

In un'app più complessa con più funzioni, probabilmente si avranno più finalità e si dovrebbe definirle attentamente in modo che non siano troppo specifiche. Ad esempio, BookFlight e BookHotel potrebbero essere finalità separate, ma BookInternationalFlight e BookDomesticFlight potrebbero essere troppo simili.

Nota

È consigliabile limitare il numero delle finalità solo a quelle necessarie per eseguire le funzioni dell'app. Se si definiscono troppe finalità, per LUIS sarà più difficile classificare correttamente le espressioni. Se si definiscono troppo pochi, potrebbero essere così generali che si sovrappongono.

Se non è necessario identificare l'intenzione complessiva dell'utente, aggiungere tutte le espressioni utente di esempio alla None finalità. Se l'app diventa necessaria più finalità, è possibile crearle in un secondo momento.

Creare espressioni di esempio per ogni finalità

Per iniziare, evitare di creare troppe espressioni per ogni finalità. Dopo aver determinato le finalità necessarie per l'app, creare da 15 a 30 espressioni di esempio per finalità. Ogni espressione deve essere diversa dalle espressioni fornite in precedenza. Includere un'ampia gamma di conteggi delle parole, scelte di parola, tensi verbi e punteggiatura.

Per altre informazioni, vedere Informazioni sulle espressioni valide per le app LUIS.

Identificare le entità

Nelle espressioni di esempio individuare le entità che si intende estrarre. Per prenotare un volo, sono necessarie informazioni come la destinazione, la data, la compagnia aerea, la categoria di biglietti e la classe di viaggio. Creare entità per questi tipi di dati e quindi contrassegnare le entità nelle espressioni di esempio. Le entità sono importanti per eseguire una finalità.

Quando si determina quali entità usare nell'app, tenere presente che esistono diversi tipi di entità per acquisire relazioni tra tipi di oggetto. Per altre informazioni sui diversi tipi, vedere Entità in LUIS .

Suggerimento

LUIS offre entità predefinite per scenari utente comuni e conversazionali. Prendere in considerazione l'uso di entità predefinite come punto di partenza per lo sviluppo di applicazioni.

Finalità e entità

Una finalità è il risultato desiderato dell'intera espressione mentre le entità sono parti di dati estratti dall'espressione. In genere le finalità sono associate alle azioni, che l'applicazione client deve eseguire. Le entità sono informazioni necessarie per eseguire questa azione. Dal punto di vista della programmazione, una finalità attiva una chiamata al metodo e le entità verranno usate come parametri per tale chiamata al metodo.

Questa espressione deve avere una finalità e può avere entità:

"Acquistare un biglietto aereo da Seattle a Cairo"

Questa espressione ha un'unica intenzione:

  • Acquisto di un biglietto aereo

Questa espressione può avere diverse entità:

  • Località di Seattle (origine) e Cairo (destinazione)
  • Quantità di un singolo biglietto

Risoluzione nelle espressioni con più di una funzione o finalità

In molti casi, soprattutto quando si lavora con la conversazione naturale, gli utenti forniscono un'espressione che può contenere più di una funzione o una finalità. Per risolvere questo problema, una strategia generale consiste nel comprendere che l'output può essere rappresentato sia dalle finalità che dalle entità. Questa rappresentazione deve essere mappabile alle azioni dell'applicazione client e non deve essere limitata alle finalità.

Int-ent-ties è il concetto che le azioni (in genere comprese come finalità) possono essere acquisite anche come entità nell'output dell'app e mappate a azioni specifiche. La negazione,ad esempio, si basa comunemente sulla finalità e sull'entità per l'estrazione completa. Prendere in considerazione le due espressioni seguenti, che sono simili nella scelta della parola, ma hanno risultati diversi:

  • "Pianificare il mio volo da Cairo a Seattle"
  • "Annulla il mio volo da Cairo a Seattle"

Anziché avere due finalità separate, è necessario creare una singola finalità con un'entità di Machine Learning FlightAction. Questa entità di Machine Learning deve estrarre i dettagli dell'azione per la pianificazione e l'annullamento delle richieste e un percorso di origine o di destinazione.

Questa entità FlightAction sarà strutturata con le seguenti entità di Machine Learning di primo livello e sottoentities:

  • FlightAction
    • Azione
    • Origine
    • Destination

Per facilitare l'estrazione, si aggiungerebbero funzionalità alle sottoentities. Scegliere le funzionalità in base al vocabolario che si prevede di visualizzare nelle espressioni utente e i valori che si desidera restituire nella risposta di stima.

Procedure consigliate

Pianificare lo schema

Prima di iniziare a creare lo schema dell'app, è necessario identificare come e dove si prevede di usare questa app. Più approfondita e specifica la pianificazione, la migliore sarà la tua app.

  • Ricerca di utenti mirati
  • Definire le persone end-to-end per rappresentare l'app - voce, avatar, gestione dei problemi (proattiva, reattiva)
  • Identificare i canali di interazioni utente (ad esempio testo o voce), passando a soluzioni esistenti o creando una nuova soluzione per questa app
  • Percorso utente end-to-end
    • Cosa ci si aspetta che questa app faccia e non lo faccia? Quali sono le priorità di cosa deve fare?
    • Quali sono i casi d'uso principali?
  • Raccolta di dati: informazioni sulla raccolta e la preparazione dei dati

Non eseguire il training né pubblicare con ogni singola espressione di esempio

Aggiungere 10 o 15 espressioni prima di procedere con il training e la pubblicazione. In questo modo, si vedrà l'impatto sulla precisione della stima. L'aggiunta di una singola espressione potrebbe non avere un impatto visibile sul punteggio.

Non usare LUIS come piattaforma di training

LUIS è specifico di un dominio di modello di linguaggio. Non è progettato per l'uso come piattaforma di training in linguaggio naturale generale.

Compilare l'app in modo iterativo con le versioni

Ogni ciclo di creazione deve essere contenuto all'interno di una nuova versione, clonato da una versione esistente.

Non pubblicare troppo rapidamente

La pubblicazione dell'app troppo rapidamente e senza una corretta pianificazione può causare diversi problemi, ad esempio:

  • L'app non funzionerà nello scenario effettivo a un livello accettabile di prestazioni.
  • Lo schema (finalità ed entità) potrebbe non essere appropriato e, se è stata sviluppata la logica dell'app client seguendo lo schema, potrebbe essere necessario ripetere l'operazione. Ciò potrebbe causare ritardi imprevisti e costi aggiuntivi per il progetto su cui si sta lavorando.
  • Le espressioni aggiunte al modello potrebbero causare pregiudizi verso espressioni di esempio difficili da eseguire per il debug e l'identificazione. La rimozione dell'ambiguità sarà difficile anche dopo il commit di un determinato schema.

Non monitorare le prestazioni dell'app

Monitorare la precisione della stima usando un set di test batch.

Mantenere un set separato di espressioni che non vengono usate come espressioni di esempio o espressioni di endpoint. Continuare a migliorare l'app per il set di test. Adattare il set di test per riflettere espressioni utente reali. Usare questo set di test per valutare ogni iterazione o versione dell'app.

Non creare elenchi di frasi con tutti i valori possibili

Fornire alcuni esempi negli elenchi di frasi , ma non ogni parola o frase. LUIS generalizza e tiene conto del contesto.

Passaggi successivi

Intenti