Procedure consigliate per la creazione di un'app LUIS (Language Understanding)

Usare il processo di creazione di app per compilare l'app LUIS:

  • Creare modelli di linguaggio (finalità ed entità)
  • Aggiungere alcune espressioni di esempio di training (da 15 a 30 per finalità)
  • Pubblicare nell'endpoint
  • Test dall'endpoint

Dopo la pubblicazione dell'app, usare il ciclo di vita di sviluppo per aggiungere funzionalità, pubblicare e testare dall'endpoint. Non iniziare il ciclo di creazione successivo aggiungendo altre espressioni di esempio perché ciò non consente a LUIS di apprendere il modello con espressioni utente reali.

Non espandere le espressioni finché il set corrente di espressioni di esempio e di endpoint non restituisce punteggi di stima elevati e sicuri. Migliorare i punteggi usando l'apprendimento attivo.

Procedure consigliate e procedure rischiose

L'elenco seguente include le procedure consigliate per le app LUIS:

Cosa fare Cosa non fare
Pianificare lo schema Compilare e pubblicare senza un piano
Definire le finalità distinte
Aggiungere funzionalità alle finalità
Usare entità machine learned Aggiungere molte espressioni di esempio alle finalità
Usare poche o semplici entità
Trovare un compromesso tra troppo generico e troppo specifico per ogni finalità Usare LUIS come piattaforma di training
Compilare l'app in modo iterativo con le versioni
Compilare entità per la scomposizione del modello
Aggiungere molte espressioni di esempio dello stesso formato, ignorando gli altri
Aggiungere modelli nelle iterazioni successive Combinare la definizione di finalità ed entità
Bilanciare le espressioni tra tutte le finalità ad eccezione della finalità None (Nessuna).
Aggiungere espressioni di esempio alla finalità None (Nessuna)
Creare elenchi di frasi con tutti i valori possibili
Usare la funzionalità suggerimento per l'apprendimento attivo Aggiungere troppi criteri
Monitorare le prestazioni dell'app con i test in batch Eseguire il training e pubblicare con ogni singola espressione di esempio aggiunta

Pianificare lo schema

Prima di iniziare a compilare lo schema dell'app, è necessario identificare cosa e dove si prevede di usare questa app. Più la pianificazione è completa e specifica, migliore sarà la qualità dell'app.

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

Definire finalità distinte

Assicurarsi che il vocabolario per ogni finalità sia specifico di quella finalità e che non si sovrapponga a un'altra. Ad esempio, se si vuole realizzare un'app per gestire i viaggi, ad esempio i voli aerei e gli hotel, è possibile scegliere di definire queste aree di interesse come finalità separate o una sola finalità con entità per dati specifici all'interno dell'espressione.

Se il vocabolario tra due finalità è lo stesso, combinare la finalità e usare le entità.

Considerare le espressioni di esempio seguenti:

Espressioni di esempio
Prenota un volo
Prenota un hotel

Book a flight e Book a hotel usano lo stesso vocabolario di book a . Questo formato è lo stesso, quindi dovrebbe essere la stessa finalità con le diverse parole flight di e come entità hotel estratte.

Aggiungere funzionalità alle finalità

Le funzionalità descrivono i concetti relativi a una finalità. Una funzionalità può essere un elenco di frasi di parole significative per tale finalità o un'entità significativa per tale finalità.

Trovare un compromesso per le finalità

Usare i dati di stima LUIS per determinare se le finalità si sovrappongono. Le finalità sovrapposte confondono LUIS. Il risultato è che la finalità con il punteggio più alto è troppo vicina a un'altra finalità. Poiché LUIS non usa ogni volta lo stesso percorso esatto attraverso i dati per il training, una finalità sovrapposta ha la possibilità di essere la prima o la seconda nel training. Si vuole che il punteggio dell'espressione per ogni finalità sia più distante affinché questo non si verifichi. La distinzione ottimale tra le finalità dovrebbe produrre ogni volta la finalità principale prevista.

Usare entità machine learned

Le entità di Machine Learned sono personalizzate per l'app e richiedono l'etichettatura per avere esito positivo. Se non si usano entità machine learned, è possibile che si utilizzi lo strumento errato.

Le entità di Machine Learned possono usare altre entità come funzionalità. Queste altre entità possono essere entità personalizzate, ad esempio entità di espressioni regolari o entità elenco, oppure è possibile usare entità predefinite come funzionalità.

Informazioni sulle entità machine learned efficaci.

Compilare l'app in modo iterativo con le versioni

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

Eseguire la compilazione per la scomposizione del modello

La scomposizione del modello ha un processo tipico di:

  • creare la finalità in base alle intenzioni dell'utente dell'app client
  • aggiungere 15-30 espressioni di esempio in base all'input utente reale
  • etichettare il concetto di dati di primo livello nell'espressione di esempio
  • suddividere il concetto di dati in sotto-entità
  • aggiungere funzionalità alle sotto entità
  • aggiungere funzionalità alle finalità

Dopo aver creato la finalità e aggiunto espressioni di esempio, l'esempio seguente descrive la scomposizione delle entità.

Per iniziare, identificare i concetti di dati completi da estrarre in un'espressione. Questa è l'entità di Machine Learning. Quindi scomporre la frase nelle sue parti. Ciò include l'identificazione di entità secondarie e funzionalità.

Ad esempio, se si vuole estrarre un indirizzo, l'entità di Machine Learning principale potrebbe essere denominata Address . Durante la creazione dell'indirizzo, identificare alcune delle relative entità secondarie, ad esempio via, città, stato e codice postale.

Continuare a scomporre gli elementi in base a:

  • Aggiunta di una funzionalità obbligatoria del codice postale come entità di espressione regolare.
  • Scomposizione dell'indirizzo stradale in parti:
    • Numero civico con una funzionalità obbligatoria di un'entità di numero predefinito.
    • Nome di via.
    • Tipo di strada con una funzionalità obbligatoria di un'entità elenco che include parole come viale, cerchio, strada e corsia.

L'API di creazione V3 consente la scomposizione del modello.

Aggiungere modelli nelle iterazioni successive

È necessario comprendere il comportamento dell'app prima di aggiungere criteri perché i criteri sono ponderati in modo più importante rispetto alle espressioni di esempio e inclinano l'attendibilità.

Dopo aver compreso il comportamento dell'app, aggiungere i modelli che si applicano all'app. Non è necessario aggiungerli con ogni iterazione.

Non vi è alcun danno aggiungerli all'inizio della progettazione del modello, ma è più facile vedere come ogni criterio cambia il modello dopo che il modello è stato testato con espressioni.

Bilanciare le espressioni tra tutte le finalità

Affinché LUIS possa produrre stime precise, la quantità di espressioni di esempio in ogni finalità (ad eccezione della finalità None), deve essere relativamente equivalente.

In presenza di una finalità con 100 espressioni di esempio e una finalità con 20 espressioni di esempio, la finalità con 100 espressioni produrrà più stime.

Aggiungere espressioni di esempio alla finalità None (Nessuna)

Questa finalità è la finalità di fallback, che indica tutto ciò che si trova all'esterno dell'applicazione. Aggiungere un'espressione di esempio alla finalità None (Nessuna) ogni 10 espressioni di esempio nel resto dell'app LUIS.

Usare la funzionalità suggerimento per l'apprendimento attivo

Usare regolarmente Review endpoint utterances (Rivedi espressioni endpoint) dell'apprendimento attivo anziché aggiungere più espressioni di esempio alle finalità. Poiché l'app riceve costantemente espressioni endpoint, questo elenco è destinato a crescere e a cambiare.

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 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 pubblicare troppo rapidamente

La pubblicazione troppo rapida dell'app, senza una pianificazioneappropriata, può causare diversi problemi, ad esempio:

  • L'app non funzionerà nello scenario effettivo a un livello di prestazioni accettabile.
  • Lo schema (finalità ed entità) non sarebbe appropriato e se è stata sviluppata la logica dell'app client seguendo lo schema, potrebbe essere necessario riscriverla da zero. Ciò causerebbe ritardi imprevisti e un costo aggiuntivo per il progetto su cui si sta lavorando.
  • Le espressioni che si aggiungono al modello potrebbero causare distorsioni verso il set di espressioni di esempio difficile da eseguire per il debug e l'identificazione. Inoltre, la rimozione dell'ambiguità sarà difficile dopo il commit in un determinato schema.

Non aggiungere molte espressioni di esempio alle finalità

Dopo la pubblicazione dell'app, aggiungere solo le espressioni dell'apprendimento attivo nel processo del ciclo di vita di sviluppo. Se le espressioni sono troppo simili, aggiungere un criterio.

Non usare poche entità o entità semplici

Le entità vengono compilate per l'estrazione e la stima dei dati. È importante che ogni finalità abbia entità di Machine Learning che descrivono i dati nella finalità. Ciò consente a LUIS di prevedere la finalità, anche se l'applicazione client non deve usare l'entità estratta.

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.

Non aggiungere molte espressioni di esempio dello stesso formato, ignorando gli altri

LUIS prevede variazioni nelle espressioni di una finalità. Le espressioni possono variare mantenendo lo stesso significato generale. Le variazioni possono includere lunghezza dell'espressione, scelta e posizionamento delle parole.

Non usare lo stesso formato Usare formati diversi
Acquista un biglietto per Seattle
Acquista un biglietto per Parigi
Acquista un biglietto per Orlando
Acquista 1 biglietto per Seattle
Prenota due posti sul red eye per Parigi lunedì prossimo
Desidero prenotare 3 biglietti per Orlando per le vacanze di primavera

La seconda colonna usa verbi diversi (acquista, prenota, riserva), quantità diverse (1, due, 3) e disposizioni diverse delle parole, ma tutti hanno la stessa intenzione di acquistare biglietti aerei.

Non combinare la definizione di finalità ed entità

Creare una finalità per qualsiasi azione che eseguirà il bot. Usare le entità come parametri che rendono possibile tale azione.

Per un bot che prenota voli aerei, creare una finalità BookFlight. Non creare una finalità per ogni compagnia aerea o per ogni destinazione. Usare questi dati come entità e contrassegnarle nelle espressioni di esempio.

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.

Non aggiungere molti criteri

Non aggiungere troppi criteri. LUIS apprenderà rapidamente con un minor numero di esempi. Non sovraccaricare il sistema inutilmente.

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.

Passaggi successivi