Crea entità

Di seguito viene descritto come creare un'entità.

Per creare un'entità:
  1. Fare clic su Entità (Immagine dell'icona Entità.) nella barra di navigazione laterale.
  2. Fare clic su Aggiungi entità, quindi immettere il nome e selezionare il tipo. I campi della finestra di dialogo riflettono il tipo di entità. Ad esempio, per le entità delle espressioni regolari, è possibile aggiungere l'espressione. Per le entità Elenco valori, aggiungere i valori e i sinonimi.
    Se lo skill supporta più lingue tramite il supporto della lingua nativa di Digital Assistant, è necessario aggiungere le controparti in lingua straniera per i valori e i sinonimi dell'entità Elenco valori.

    Poiché questi valori devono essere mappati al valore corrispondente dalla lingua principale (il valore della lingua principale), è necessario selezionare il valore principale prima di aggiungere la corrispondente lingua secondaria. Ad esempio, se il francese è stato aggiunto come lingua secondaria a uno skill la cui lingua principale è l'inglese, selezionare innanzitutto Valore lingua principale, quindi aggiungere petite.

  3. Immettere una descrizione come passo facoltativo. È possibile utilizzare la descrizione per specificare l'entità, ad esempio i condimenti pizza per un'entità PizzaTopping. Questa descrizione non viene conservata quando si aggiunge l'entità a un sacchetto composito.
  4. È possibile aggiungere le seguenti funzioni, facoltative. Possono essere sovrascritti se si aggiunge l'entità a un sacchetto composito.
    • Se un'entità elenco di valori dispone di un lungo elenco di valori, ma si desidera visualizzare agli utenti solo alcune opzioni alla volta, è possibile impostare l'impaginazione di questi valori immettendo un numero nel campo Dimensione intervallo di enumerazione o definendo un'espressione FreeMarker Apache che restituisce questo numero. Ad esempio, è possibile definire un'espressione che restituisca i valori enum in base al canale.

      Quando si imposta questa proprietà su 0, lo skill non restituirà alcun elenco, ma l'utente immetterà un valore di entità.

      Se si imposta questo numero su un valore inferiore al numero totale di valori definiti per questa entità, nel componente Risolvi entità viene visualizzato il pulsante Mostra altri per accompagnare ogni insieme completo di valori. Se si utilizza un componente Risposta comune per risolvere l'entità, è possibile configurare manualmente il pulsante Mostra altro.
      Questa è un'immagine del pulsante Mostra altro.
      È possibile modificare il testo del pulsante Mostra altro utilizzando la proprietà showMoreLabel che appartiene ai componenti Risolvi entità e Risposta comune.

    • Aggiungere un messaggio di errore per l'input utente non valido. Utilizzare un'espressione FreeMarker Apache che includa la proprietà system.entityToResolve.value.userInput. Ad esempio, ${system.entityToResolve.value.userInput!'This'}' is not a valid pizza type.
    • Per consentire agli utenti di selezionare più valori da un'entità elenco di valori, attivare Valori multipli. Quando si attiva questa opzione, i valori vengono visualizzati come un elenco numerato.
      Immagine dell'elenco numerato a più valori.
      Se si disattiva questa opzione, i valori vengono visualizzati come un elenco di opzioni, che consente solo una singola scelta.
    • L'attivazione di Fuzzy Match aumenta le possibilità che l'input dell'utente corrisponda a un valore, in particolare quando i valori non hanno molti sinonimi. La corrispondenza parziale utilizza l'uso della parola derivata per identificare le corrispondenze dall'input utente. La disattivazione della corrispondenza non esatta impone una corrispondenza rigorosa, il che significa che l'input dell'utente deve essere una corrispondenza esatta con i valori e i sinonimi; "cars" non corrisponde a un valore denominato "car", né "manager" corrisponde a un valore "development manager".
    • Per gli skill configurati con un servizio di traduzione, la corrispondenza delle entità si basa sulla traduzione dell'input. Se si attiva Corrispondenza valore originale, l'input originale viene considerato anche nella corrispondenza delle entità, che potrebbe essere utile per la corrispondenza di valori non traducibili.
    • Per forzare un utente a selezionare un singolo valore, attivare Richiedi disambiguazione e aggiungere un prompt di disambiguazione. Per impostazione predefinita, questo messaggio è Selezionare un valore di <item name>, ma è possibile sostituirlo con un solo testo (È possibile ordinare una sola pizza alla volta. Quale pizza si desidera ordinare?) o una combinazione di testo ed espressioni FreeMarker. Ad esempio:
      "I found multiple dates: <#list system.entityToResolve.value.disambiguationValues.Date as date>${date.date?number_to_date}<#sep> and </#list>. Which date should I use as expense date?"
    • Definire una regola di convalida utilizzando un'espressione FreeMarker.
      Nota

      È possibile aggiungere prompt, disambiguazione e convalida solo per le entità incorporate quando appartengono a un sacchetto composto.
  5. Fare clic su Crea.
  6. Passi successivi
    1. Aggiungere l'entità a un intento. Indica la competenza dei valori che devono essere estratti dall'input utente durante l'elaborazione della lingua. Vedere Aggiungi entità a intenti.
    2. Nel flusso della finestra di dialogo, dichiarare una variabile per l'entità.
    3. Accedere ai valori delle variabili utilizzando le espressioni FreeMarker di Apache. Vedere Operazioni di array FreeMarker incorporate.
    4. Fare clic su Convalida e rivedere i messaggi di convalida per individuare eventuali errori correlati ai gestori di eventi entità (se utilizzati), potenziali problemi come più valori in un'entità elenco di valori che condivide lo stesso sinonimo e per indicazioni sull'applicazione di procedure ottimali quali l'aggiunta di più prompt per rendere lo skill più coinvolgente.

Entità elenco valori per più lingue

Quando si dispone di una competenza destinata a più lingue e che utilizza il supporto della lingua nativa di Digital Assistant, è possibile impostare i valori per ogni lingua della competenza. Per ogni valore entità nella lingua principale di uno skill, è necessario designare un valore corrispondente in ogni lingua aggiuntiva.

Suggerimento

Per garantire che la competenza produca costantemente risposte nella lingua rilevata, includere sempre useFullEntityMatches: true negli stati Risposta comune, Risolvi entità ed Entità corrispondenza. Come descritto in Aggiungi lingue supportate in modo nativo a una competenza, l'impostazione di questa proprietà su true (impostazione predefinita) restituisce il valore dell'entità come oggetto le cui proprietà differenziano la lingua principale dalla lingua rilevata. Quando viene fatto riferimento nelle espressioni FreeMarker di Apache, queste proprietà garantiscono che il linguaggio appropriato venga visualizzato nel testo e nelle etichette del messaggio dello skill.

Word Stemming Supporto in Fuzzy Match

A partire dalla Release 22.10, la corrispondenza non esatta per le entità del valore dell'elenco si basa sulla derivazione delle parole, in cui una corrispondenza di valori si basa sulla radice lessicale della parola. Nelle versioni precedenti, la corrispondenza parziale è stata abilitata mediante la corrispondenza parziale e la correzione automatica. Sebbene questo approccio fosse tollerante agli errori di battitura nell'input dell'utente, incluse le parole trasposte, potrebbe anche generare corrispondenze a più valori all'interno dell'entità elenco valori. Con lo stemming, questo scatter viene eliminato: le corrispondenze si basano sull'ordine delle parole dell'input dell'utente, quindi viene creata una singola corrispondenza o non ne viene trovata alcuna. Ad esempio, "Lovers Veggie" non genererebbe alcuna corrispondenza, ma "Veggie Lover" corrisponderebbe al valore di Veggie Lovers di un'entità di tipo pizza. (Si noti che "Lover" è arginato.) Le parole di arresto, come gli articoli e le preposizioni, vengono ignorate nei valori estratti, così come i caratteri speciali. Ad esempio, sia "Veggie the Lover" che "Veggie////Lover" corrispondono al valore di Veggie Lovers.

Crea entità ML

Le entità ML sono un approccio all'estrazione delle entità basato su modelli. Come gli intenti, crei entità ML da espressioni di addestramento - probabilmente le stesse espressioni di addestramento che hai usato per costruire i tuoi intenti. Per le entità ML, tuttavia, si annotano le parole nelle espressioni di addestramento che corrispondono a un'entità.

Per iniziare, è possibile annotare autonomamente alcuni dati di formazione, ma, come avviene per gli intenti, è possibile sviluppare una formazione più varia (e quindi solida) grazie al sourcing della folla. Come indicato nelle linee guida per la formazione, un rilevamento solido delle entità richiede da 600 a 5000 occorrenze di ogni entità ML in tutto il set di formazione. Inoltre, se i dati di addestramento dell'intento sono già espansivi, potresti voler affollarli anziché annotare ogni voce da solo. In entrambi i casi, è necessario analizzare i dati di formazione per scoprire se le entità sono rappresentate in modo uniforme e se i valori delle entità sono sufficientemente variati. Al termine delle annotazioni, addestrare il modello, quindi testarlo. Dopo aver esaminato le entità rilevate nelle esecuzioni dei test, è possibile continuare ad aggiornare il corpus e riaddestrare per migliorare la precisione.

Per creare un'entità ML:
  1. Fare clic su + Aggiungi entità.
  2. Completare la finestra di dialogo Crea entità. Tenere presente che il nome e la descrizione vengono visualizzati nelle pagine del crowd worker per le mansioni con annotazione entità.
    • Immettere un nome che identifichi il contenuto annotato. Un nome univoco aiuta i crowd worker.
    • Immettere una descrizione. Sebbene si tratti di una proprietà facoltativa, i crowd worker la utilizzano, insieme alla proprietà Name, per differenziare le entità.
    • Scegliere Entità ML dalla lista.
  3. Attivare Escludi corrispondenze entità di sistema quando le annotazioni di formazione contengono nomi, posizioni, numeri o altri contenuti che potrebbero potenzialmente scontrarsi con i valori delle entità di sistema. L'impostazione di questa opzione impedisce al modello di estrarre i valori delle entità di sistema all'interno dell'input risolto in questa entità ML. Applica un limite attorno a questo input in modo che il modello lo riconosca solo come valore di entità ML e non lo analizzi ulteriormente per i valori di entità di sistema. È possibile impostare questa opzione per le entità sacchetto composito che fanno riferimento a entità ML.
  4. Fare clic su Crea.
  5. Fare clic su +Value Elenca entità per associare questa entità a un massimo di cinque entità elenco valori. Questa opzione è facoltativa, ma l'associazione di un'entità ML a un'entità elenco di valori combina l'estrazione contestuale dell'entità ML e l'estrazione indipendente dal contesto dell'entità elenco di valori.
  6. Fare clic sulla scheda DataSet. Questa pagina elenca tutte le espressioni per ogni entità ML nella tua abilità, che includono le espressioni che ti sei aggiunto per eseguire il bootstrap dell'entità, quelle sottomesse da job di crowd sourcing o che sono state importate come oggetti JSON. Da questa pagina è possibile aggiungere espressioni manualmente o in blocco caricando un file JSON. È inoltre possibile gestire le espressioni da questa pagina modificandole (inclusa l'annotazione o la nuova annotazione), oppure eliminandole, importandole ed esportandole.
    • Aggiungere le espressioni manualmente:
      • Fare clic su Aggiungi disposizione. Dopo aver aggiunto l'espressione, fare clic su Modifica annotazioni per aprire la lista entità.
        Nota

        È possibile aggiungere una sola espressione alla volta. Se si desidera aggiungere espressioni in blocco, è possibile aggiungerle tramite un job Annotazione entità oppure caricare un file JSON.
      • Evidenziare il testo rilevante per l'entità ML, quindi completare l'etichettatura selezionando l'entità ML dall'elenco entità. È possibile rimuovere un'annotazione facendo clic su x nell'etichetta.
        Questa è un'immagine dell'icona Elimina in un'annotazione.

    • Aggiungere espressioni da un file JSON. Questo file JSON contiene una lista di oggetti di espressione.
      [
        {
          "Utterance": {
            "utterance": "I expensed $35.64 for group lunch at Joe's on 4/7/21",
            "languageTag": "en",
            "entities": [
              {
                "entityValue": "Joe's"   
                "entityName": "VendorName",
                "beginOffset": 37,
                "endOffset": 42
              }
            ]
          }
        },
        {
          "Utterance": {
            "utterance": "Give me my $30 for Coffee Klatch on 7/20",
            "languageTag": "en",
            "entities": [
              {
                "entityName": "VendorName",
                "beginOffset": 19,
                "endOffset": 32
              }
            ]
          }
        }
      ]
      È possibile caricarlo facendo clic su Altro > Importa per recuperarlo dal sistema locale.
      L'oggetto entities descrive le entità ML identificate all'interno dell'espressione. Anche se l'esempio precedente illustra un singolo oggetto entities per ogni espressione, un'espressione può contenere più entità ML che significa più oggetti entities:
      [
        {
          "Utterance": {
            "utterance": "I want this and that",
            "languageTag": "en",
            "entities": [
              {
                "entityName": "ML_This",
                "beginOffset": 7,
                "endOffset": 11
              },
              {
                "entityName": "ML_That",
                "beginOffset": 16,
                "endOffset": 20
              }
            ]
          }
        },
        {
          "Utterance": {
            "utterance": "I want less of this and none of that",
            "languageTag": "en",
            "entities": [
              {
                "entityName": "ML_This",
                "beginOffset": 15,
                "endOffset": 19
              },
              {
                "entityName": "ML_That",
                "beginOffset": 32,
                "endOffset": 36
              }
            ]
          }
        }
      ]
      entityName identifica l'entità ML stessa e entityValue identifica il testo con etichetta per l'entità. entityValue è una chiave facoltativa che è possibile utilizzare per convalidare il testo con etichetta rispetto alle modifiche apportate all'espressione. L'etichetta stessa è identificata dalle proprietà beginOffset e endOffset, che rappresentano l'offset per i caratteri che iniziano e terminano l'etichetta. Questo offset è determinato dal carattere, non dalla parola, ed è calcolato dal primo carattere dell'espressione (0-1).
      Nota

      Non è possibile creare le entità ML da questo JSON. Devono esistere prima di caricare il file.
      Se non si desidera determinare gli offset, è possibile lasciare l'oggetto entities non definito e quindi applicare le etichette dopo aver caricato il file JSON.
      [
        {
          "Utterance": {
            "utterance": "I expensed $35.64 for group lunch at Joe's on 4/7/21",
            "languageTag": "en",
            "entities": []
              
            
          }
        },
        {
          "Utterance": {
            "utterance": "Give me my $30 for Coffee Klatch on 7/20",
            "languageTag": "en",
            "entities": []
            
          }
        }
      ]
      Il sistema verifica la presenza di duplicati per evitare inserimenti ridondanti. Vengono applicate solo le modifiche apportate alla definizione entities nel file JSON. Se un'espressione è stata modificata nel file JSON, allora è considerata una nuova espressione.
    • Modificare un'espressione annotata:
      • Fare clic su Modifica Immagine dell'icona Modifica entità ML per rimuovere l'annotazione.
        Nota

        Un'espressione modificata viene considerata una nuova espressione (non concessa).
      • Fare clic su Modifica annotazioni per aprire la lista di entità.
      • Evidenziare il testo, quindi selezionare un'entità ML dall'elenco entità.
      • Se è necessario rimuovere un'annotazione, fare clic su x nell'etichetta.
  7. Quando hai completato l'annotazione delle espressioni. Fare clic su Formazione per aggiornare sia Tm formatore che il modello Entità.
  8. Eseguire il test del riconoscimento immettendo una frase di prova nel tester Utterance, idealmente una con un valore non trovato in alcun dato di addestramento. Controllare i risultati per scoprire se il modello ha rilevato l'entità ML corretta e se il testo è stato etichettato correttamente e completamente.
  9. Associare l'entità ML a un intento.

Escludi corrispondenze entità di sistema

Il passaggio a Escludi corrispondenze entità di sistema impedisce al modello di sostituire i valori di entità di sistema estratti in precedenza con valori concorrenti trovati entro i limiti di un'entità ML. Con questa opzione abilitata, "Creare una riunione il lunedì per discutere il deliverable del martedì" mantiene separati i valori delle entità DATE_TIME e ML risolvendo l'entità DATE_TIME applicabile (lunedì) e ignorando "Martedì" nel testo riconosciuto come entità ML ("discussione del deliverable del martedì").

Quando questa opzione è disabilitata, lo skill risolve invece due valori di entità DATE_TIME, lunedì e martedì. La combinazione di valori come questi riduce l'esperienza utente aggiornando un valore di entità precedentemente inserito in uno slot con un valore non intenzionale o interrompendo un prompt di disambiguazione che interrompe il flusso della conversazione.
Nota

È possibile impostare l'opzione Escludi corrispondenze entità di sistema per le entità sacchetto composto che fanno riferimento a un'entità ML.

Importare le entità elenco valori da un file CSV

Anziché creare le entità una alla volta, è possibile creare interi set di entità quando si importa un file CSV contenente le definizioni delle entità.

Questo file CSV contiene colonne per il nome dell'entità (entity), il valore dell'entità (value) ed eventuali sinonimi (synonyms). È possibile creare questo file da zero oppure riutilizzare o riutilizzare un file CSV creato da un'esportazione.

Sia che si stia iniziando di nuovo o si stia utilizzando un file esportato, è necessario essere consapevoli della versione dello skill in cui si sta importando a causa delle modifiche del formato e del contenuto per il supporto della lingua nativa introdotte nella versione 20.12. Sebbene sia possibile importare un file CSV da una release precedente in una competenza 20.12 senza incidenti nella maggior parte dei casi, potrebbero esserci ancora alcuni problemi di compatibilità che potrebbero essere necessari per risolvere. Ma prima di questo, diamo un'occhiata al formato di un file pre-20.12. Questo file è diviso nelle seguenti colonne: entity, value e synonyms. Ad esempio:
entity,value,synonyms
PizzaSize,Large,lrg:lrge:big
PizzaSize,Medium,med
PizzaSize,Small,little
Per gli skill creati con o aggiornati alla versione 20.12, i file di importazione presentano tag di lingua aggiunti alle intestazioni di colonna value e synonyms. Ad esempio, se la lingua nativa principale dello skill è l'inglese (en), le colonne value e synonyms sono en:value e en:synonyms:
entity,en:value,en:synonyms
PizzaSize,Large,lrg:lrge:big
PizzaSize,Medium,med
PizzaSize,Small,
PizzaSize,Extra Large,XL
I file CSV che supportano più lingue native richiedono set aggiuntivi di colonne value e synonyms per ogni lingua secondaria. Se la lingua secondaria di una competenza di lingua inglese nativa è il francese (fr), il file CSV contiene le colonne fr:value e fr:synonyms come controparti delle colonne en:
entity,en:value,en:synonyms,fr:value,fr:synonyms
PizzaSize,Large,lrg:lrge:big,grande,grde:g
PizzaSize,Medium,med,moyenne,moy
PizzaSize,Small,,petite,p
PizzaSize,Extra Large,XL,pizza extra large,
Ecco alcune cose da notare se si prevede di importare CSV tra le versioni:
  • Se si importa un file CSV precedente alla versione 20.12 in una competenza 20.12 (incluse quelle che supportano le lingue native o utilizzano servizi di traduzione), i valori e i sinonimi vengono importati come lingue principali.
  • Tutti i valori entità per le lingue principale e secondaria devono essere univoci all'interno di un'entità, pertanto non è possibile importare un file CSV se lo stesso valore è stato definito più di una volta per una singola entità. I valori duplicati possono verificarsi nelle versioni precedenti alla 20.12, dove i valori possono essere considerati univoci a causa delle variazioni nell'involucro delle lettere. Questo non è vero per 20.12, dove l'involucro è più rigorosamente applicato. Ad esempio, non è possibile importare un file CSV se contiene sia PizzaSize, Small che PizzaSize, SMALL. Se si prevede di aggiornare la versione 20.12, prima di eseguire l'aggiornamento è necessario risolvere tutti i valori entità uguali, ma differenziati solo per lettere.
  • Il supporto della lingua principale si applica agli skill creati con la versione 20.12 e successive, pertanto è necessario rimuovere i tag della lingua e le eventuali voci della lingua secondaria prima di poter importare un file CSV della versione 20.12 in uno skill creato con una versione precedente.
Quando si importa un file CSV 20.12 in una competenza 20.12:
  • È possibile importare un file CSV multilingue in skill che non utilizzano il supporto della lingua nativa, inclusi quelli che utilizzano servizi di traduzione.
  • Se si importa un file CSV multilingue in uno skill che supporta lingue native o utilizza servizi di traduzione, vengono importate solo le righe che forniscono un valore valido per la lingua principale. Il resto viene ignorato.
Con questi avvertimenti in mente, ecco come si creano entità attraverso un'importazione:
  1. Fare clic su Entità (Immagine dell'icona Entità.) nella barra di navigazione laterale.

  2. Fare clic su Altro, scegliere Importa entità elenco valori, quindi selezionare il file .csv dal sistema locale.
    Descrizione dell'importazione: entities.png
    Descrizione dell'immagine import-entities.png

  3. Aggiungere l'entità o le entità a un intento (o a un elenco di entità e quindi a un intento).

Esportare le entità elenco valori in un file CSV

È possibile esportare i valori e i sinonimi in un file CSV per riutilizzarli in un'altra abilità. I file CSV esportati condividono lo stesso formato dei file CSV utilizzati per creare entità mediante le importazioni in quanto contengono le colonne entity, value e synonyms. Questi CVS hanno requisiti specifici della release che possono influire sul loro riutilizzo.
  • I file CSV esportati da skill creati con o aggiornati alla versione 20.12 sono forniti per il supporto della lingua nativa tramite i tag di lingua primaria (e talvolta secondaria) aggiunti alle colonne value e synonyms. Ad esempio, il file CSV nel seguente snippet dispone di un set di colonne value e synonyms per la lingua principale dello skill, l'inglese (en) e un altro set per la lingua secondaria, il francese (fr):
    entity,en:value,en:synonyms,fr:value,fr:synonyms
    I tag della lingua principale sono inclusi in tutti i file CSV 20.12 indipendentemente dal supporto della lingua nativa. Sono presenti in competenze che non sono destinate a svolgere alcun tipo di traduzione (nativa o tramite un servizio di traduzione) e in competenze che utilizzano servizi di traduzione.
  • I file CSV esportati da skill in esecuzione su versioni precedenti alla 20.12 dispongono delle colonne entità, valore e sinonimi, ma non di tag lingua.
Per esportare le entità dell'elenco di valori, procedere come segue.
  1. Fare clic su Entità (Immagine dell'icona Entità.) nella barra di navigazione laterale.

  2. Fare clic su Altro, scegliere Esporta entità elenco valori, quindi salvare il file.
    Descrizione dell'esportazione: entities.png
    Descrizione della figura export-entities.png

    Il file .csv esportato viene denominato in base alla competenza. Se si intende utilizzare questo file come importazione, potrebbe essere necessario eseguire alcune delle modifiche descritte in Importa intenti da un file CSV se si intende importarlo o esportarlo da competenze e versioni precedenti della versione 20.12.

Crea entità dinamiche

I valori delle entità dinamiche vengono gestiti tramite gli endpoint dell'API Entità dinamiche descritti nell'API REST per Oracle Digital Assistant. Per aggiungere, modificare ed eliminare i valori e i sinonimi dell'entità, è innanzitutto necessario creare un'entità dinamica per generare il valore entityId utilizzato nelle chiamate REST.

Per creare l'entità dinamica, procedere come segue.
  1. Fare clic su + Entità.
  2. Scegliere Entità dinamiche dalla lista Tipo.
  3. Se il servizio backend non è disponibile o non ha ancora eseguito il PUSH di alcun valore oppure se non si gestisce il servizio, fare clic su + Valore per aggiungere i valori mock che è possibile utilizzare per il test. In genere, è necessario aggiungere questi valori statici prima che l'infrastruttura di entità dinamica sia attiva. Questi valori vengono persi quando si duplica, si esegue la versione o si esporta uno skill. Dopo aver eseguito il provisioning dei valori di entità tramite l'API, è possibile sovrascrivere o conservare questi valori, sebbene nella maggior parte dei casi li si sovrascriva.
  4. Fare clic su Crea.

Suggerimento

Se l'interfaccia API aggiorna i valori di entità durante il test della conversazione, fare clic su Reimposta per riavviare la conversazione.
Un paio di note per gli sviluppatori di servizi:
  • È possibile eseguire una query per le entità dinamiche configurate per uno skill utilizzando il file entityId generato con botId. Includere questi valori nelle chiamate per creare le richieste push e gli oggetti che aggiornano i valori dell'entità.
  • Un'entità non può avere più di 150.000 valori. Per ridurre la probabilità di superare questo limite quando si tratta di grandi quantità di dati, inviare richieste PATCH con le eliminazioni prima di inviare richieste PATCH con le aggiunte.
Nota

Le entità dinamiche sono supportate solo sulle istanze di Oracle Digital Assistant di cui è stato eseguito il provisioning su Oracle Cloud Infrastructure (a volte denominata infrastruttura cloud di generazione 2). Se il provisioning della tua istanza viene eseguito su Oracle Cloud Platform (come tutte le istanze della versione 19.4.1), non puoi utilizzare la funzione.

Linee guida per la creazione di entità ML

Ecco un approccio generale alla creazione di un'entità ML.
  1. Crea entità ML concise. La definizione di entità ML è alla base di un set di formazione utile, quindi la chiarezza è fondamentale in termini di nome e descrizione che aiutano i crowd worker ad annotare le espressioni.

    Poiché i crowd worker si basano sulle descrizioni e sui nomi delle entità ML, è necessario assicurarsi che le entità ML siano facilmente distinguibili l'una dall'altra, soprattutto in caso di potenziale sovrapposizione. Se le differenze non sono chiare per voi, è probabile che i lavoratori della folla saranno confusi. Ad esempio, le entità Commerciante e Tipo di conto potrebbero essere difficili da distinguere in alcuni casi. In "Trasferisci $ 100 dal mio conto di risparmio a Pacific Gas and Electric", puoi chiaramente etichettare "risparmi" come tipo di conto e Pacific Gas and Electric come commerciante. Tuttavia, il confine tra i due può essere sfocato in frasi come "Devo inviare denaro a John, trasferire $ 100 dai miei risparmi al suo conto corrente". Il "conto di controllo" è un tipo di conto o un nome commerciante? In questo caso, è possibile decidere che qualsiasi destinatario debba essere sempre un nome commerciante anziché un tipo di conto.

  2. In preparazione del crowdfunding delle espressioni di formazione, considera l'input tipico dell'utente per diversi contesti di estrazione delle entità. Ad esempio, il valore può essere estratto nel messaggio iniziale dell'utente (contesto di espressione iniziale) o viene estratto dalle risposte ai prompt dell'abilità (contesto di espressione della fascia)?
    Contesto descrizione; Valori di esempio (valori entità ML rilevati in grassetto)
    Contesto di pronuncia iniziale Messaggio che di solito è ben strutturato e include valori di entità ML. Per uno skill di reporting spese, ad esempio, l'espressione include un valore che il modello può rilevare per un'entità ML denominata Commerciante. Crea una spesa per la cena in team presso John's Pasta Shop per 85 dollari il 3 maggio
    Contesto espressione slot Messaggio utente che fornisce l'entità ML in risposta a un prompt, a causa della progettazione della conversazione (lo skill richiede "Chi è il commerciante?") o per inserire un valore nello slot perché non è stato fornito da una risposta sottomessa in precedenza.

    In altre circostanze, il valore dell'entità ML potrebbe essere già stato fornito, ma potrebbe essere incluso in altri messaggi utente nella stessa conversazione. Ad esempio, lo skill potrebbe richiedere agli utenti di fornire ulteriori dettagli sulle spese o descrivere l'immagine di una ricevuta caricata.

    • Il commerciante è John's Pasta Shop.
    • Cena di squadra. Quantità $85. Pasta shop di John.
    • La descrizione è TurboTaxi da casa all'aeroporto CMH.
    • Ricevuta del Grandiose Shack Hotel per il simposio sul cloud
  3. Raccogli i dati relativi a formazione e test.
    • Se si dispone già di una raccolta sufficiente di espressioni, è possibile valutarle per la distribuzione delle entità e la diversità dei valori delle entità prima di avviare un job Annotazione entità.
    • Se non si dispone di dati di formazione sufficienti o se si sta iniziando da zero, avviare un job di parafrasi intento. Per raccogliere espressioni valide (e abbondanti) per la formazione e il test, integrare il contesto dell'entità nel lavoro creando compiti per ogni intento. Per raccogliere frasi diverse, considerare di suddividere ogni intento in base al contesto di conversazione.
    • Per la richiesta del compito, fornisci contesto ai lavoratori della folla e chiedi loro: "Come risponderesti?" o "Cosa diresti?" Utilizzare i suggerimenti di accompagnamento per fornire esempi e illustrare contesti diversi. Ad esempio:
      Prompt Suggerimento
      Si sta parlando con un bot per le note spese e si desidera creare una spesa. Quale sarebbe la prima cosa che diresti? Assicurarsi che il nome del commerciante sia presente nell'espressione. Si potrebbe dire: "Crea una spesa per la cena di squadra al John's Pasta Shop per $ 85 il 3 maggio".
      Questo task richiede frasi che non solo avviino la conversazione, ma includano anche un nome commerciante. È inoltre possibile desiderare espressioni che riflettano le risposte richieste dallo skill quando l'utente non fornisce un valore. Ad esempio, "Merchant is John's Pasta Shop" in risposta al prompt "Who is the merchant?" dell'abilità.
      Prompt Suggerimento
      È stata sottomessa una spesa a un bot per le note spese, ma non è stato specificato un nome commerciante. Come rispondere? Identificare il commerciante. Ad esempio, "Merchant è il negozio di pasta di John".
      È stata caricata un'immagine di una ricevuta in un bot per le note spese. Ti sta chiedendo di descrivere la ricevuta. Come rispondere? Identificare il nome del commerciante sulla ricevuta. Ad esempio: "Grandiosa ricevuta di Shack Hotel per il simposio sul cloud".
      Per testare i falsi positivi per i test - parole e frasi che il modello non dovrebbe identificare come entità ML - potresti anche voler raccogliere "esempi negativi". Queste espressioni includono un valore di entità ML.
      Contesto Esempio di argomenti
      Contesto di pronuncia iniziale Pagami indietro per la cena di martedì
      Contesto espressione slot
      • Pos cena di presentazione. Importo $ 50, 4 persone.
      • Descrizione xerox pranzo per 5
      • Ricevuta hotel per soggiorno colloquio
    • Raccogliere un grande set di allenamento impostando un numero appropriato di parafrasi per intento. Affinché il modello si generalizzi correttamente, il data set deve contenere da qualche parte tra 500 e 5000 occorrenze per ogni entità ML. Idealmente, dovresti evitare la fascia bassa di questo intervallo.
  4. Una volta che i crowd worker hanno completato il job (o hanno completato un numero sufficiente di espressioni che è possibile annullare il job), è possibile aggiungere le espressioni oppure avviare un job di convalida degli intenti per verificarle. È inoltre possibile scaricare i risultati nel sistema locale per ulteriori revisioni.
  5. Riserva circa il 20% delle espressioni per i test. Per creare CSV per il tester di utenza dai file CSV scaricati per i job di parafrasi degli intenti e convalida degli intenti, effettuare le operazioni riportate di seguito.
    • Per i job di parafrasi intento: trasferire il contenuto nella colonna result (le espressioni fornite dai crowd worker) alla colonna utterance nel CSV Utterance Tester. Trasferire il contenuto della colonna intentName nella colonna expectedIntent nel file CSV del tester di Utterance.
    • Per i job di convalida degli intenti: trasferire il contenuto nella colonna prompt (le espressioni fornite dai crowd worker) alla colonna utterance nel file CSV del tester degli intenti. Trasferire il contenuto della colonna intentName nella colonna expectedIntent nel file CSV del tester di Utterance.
  6. Aggiungere le espressioni rimanenti a un file CSV con una sola colonna, utterance. Creare un job di annotazione entità caricando questo file CSV. Poiché i lavoratori stanno etichettando i valori delle entità, probabilmente classificheranno le espressioni negative come "Non sono sicuro" o "Nessuna delle entità si applica".
  7. Al termine del job Annotazione entità, è possibile aggiungere i risultati oppure avviare un job Convalida entità per verificare l'assegnazione etichette. Solo le espressioni che i lavoratori ritengono corrette in un job di convalida entità possono essere aggiunte al corpus.

    Suggerimento

    È possibile aggiungere, rimuovere o modificare le etichette delle annotazioni nella scheda Insieme di dati della pagina Entità.
  8. Addestrare l'entità selezionando Entità.
  9. Eseguire casi di test per valutare il riconoscimento delle entità utilizzando le espressioni riservate dal job Parafrasi intento. È possibile suddividere queste espressioni in diverse suite di test per testare comportamenti diversi (valori sconosciuti, punteggiatura che potrebbero non essere presenti nei dati di addestramento, falsi positivi e così via). Poiché potrebbe esserci un gran numero di queste espressioni, è possibile creare suite di test caricando un CSV nel Tester di utenza.

    Nota

    Il tester di utenza visualizza solo le etichette delle entità per il superamento dei casi di test. Utilizzare invece un test rapido per visualizzare le etichette delle espressioni che si risolvono al di sotto della soglia di affidabilità.
  10. Utilizzare i risultati per perfezionare il data set. Aggiungere, rimuovere o modificare in modo iterativo le espressioni di addestramento fino a quando i risultati dell'esecuzione del test indicano che il modello sta identificando in modo efficace le entità ML.
    Nota

    Per evitare che corrispondenze di entità involontarie che peggiorino l'esperienza utente, attivare Escludi corrispondenze entità di sistema se i dati di formazione contengono nomi, ubicazioni e numeri.

Linee guida formazione entità ML

Il modello generalizza un'entità utilizzando sia il contesto intorno a una parola (o parole) che le informazioni lessicali sulla parola stessa. Affinché il modello si generalizzi in modo efficace, si consiglia di impostare il numero di annotazioni per entità tra 500 e 5000. Potresti già avere un set di formazione abbastanza grande e con la variazione dei valori di entità che ti aspetteresti dagli utenti finali. In questo caso, è possibile avviare un job Annotazione entità e quindi incorporare i risultati nei dati di addestramento. Tuttavia, se non si dispone di dati di formazione sufficienti o se i dati disponibili non dispongono di una copertura sufficiente per tutte le entità ML, è possibile raccogliere le espressioni dai job di parafrasi degli intenti di origine crowd.

Qualunque sia l'origine, la distribuzione dei valori di entità dovrebbe riflettere l'idea generale dei valori che il modello può incontrare. Per addestrare adeguatamente il modello:
  • Non utilizzare in modo eccessivo gli stessi valori entità nei dati di addestramento. I valori di entità ripetitivi nei dati di addestramento impediscono al modello di generalizzare su valori sconosciuti. Ad esempio, si prevede che l'entità ML riconosca una varietà di valori, ma l'entità è rappresentata solo da 10-20 valori diversi nel set di formazione. In questo caso, il modello non generalizzerà, anche se ci sono due o tremila annotazioni.
  • Variare il numero di parole per ogni valore entità. Se si prevede che gli utenti immettano valori di entità lunghi da tre a cinque parole, ma i dati di addestramento vengono annotati con valori di entità di una o due parole, il modello potrebbe non riuscire a identificare l'entità con l'aumento del numero di parole. In alcuni casi, può identificare solo parzialmente l'entità. Il modello assume il limite dell'entità dalle espressioni che hai fornito. Se il modello è stato addestrato su valori con una o due parole, si presume che il limite dell'entità sia di una o due parole. L'aggiunta di entità con più parole consente al modello di riconoscere limiti di entità più lunghi.
  • La lunghezza di riferimento deve riflettere il caso d'uso e l'input dell'utente previsto. È possibile addestrare il modello per rilevare entità per messaggi di varie lunghezze raccogliendo espressioni sia brevi che lunghe. Le espressioni possono anche avere più frasi. Se si prevedono brevi espressioni che riflettono il contesto di riempimento degli slot, raccogliere i dati di esempio di conseguenza. Allo stesso modo, se si anticipano le espressioni per lo scenario di contesto iniziale, il set di formazione dovrebbe contenere frasi complete.
  • Includi punteggiatura. Se i nomi di entità richiedono caratteri speciali, ad esempio '-' e '/', includerli nei valori di entità nei dati di addestramento.
  • Assicurati che tutte le entità ML siano rappresentate allo stesso modo nei tuoi dati di formazione. Un set di formazione sbilanciato ha troppe istanze di un'entità e troppo poche di un'altra. I modelli prodotti da set di formazione non bilanciati a volte non riescono a rilevare l'entità con troppe poche istanze e prevedono in eccesso per le entità con istanze sproporzionatamente elevate. Questo porta a falsi positivi.

Linee guida test entità ML

Prima di allenare la tua abilità, dovresti riservare circa il 20% delle espressioni non conclamate per scoprire come il modello si generalizza quando viene presentato con espressioni o valori di entità che non fanno parte dei suoi dati di addestramento. Questo set di espressioni potrebbe non essere l'unico set di test, a seconda dei comportamenti che si desidera valutare. Ad esempio:
  • Utilizza solo espressioni di contesto slot per scoprire in che modo il modello prevede le entità con meno contesto.
  • Utilizzare espressioni con valori "sconosciuti" per scoprire quanto bene il modello si generalizza con valori non presenti nei dati di addestramento.
  • Usa espressioni senza entità ML per scoprire se il modello rileva falsi positivi.
  • Utilizzare espressioni contenenti valori di entità ML con punteggiatura per scoprire le prestazioni del modello con valori di entità insoliti.