Analisi dei dati on demand con l'API Analyze

Utilizza l'API Analyze per elaborare documenti di testo tramite la pipeline di arricchimento del servizio Discovery senza archiviare i dati dai documenti di origine.

L'API di analisi è supportata solo dalle distribuzioni del piano Enterprise e dalle distribuzioni installate.

Questo approccio è ideale per scopi di automazione aziendale. Ad esempio, se vuoi classificare le email, puoi utilizzare l'API Analyze per richiamare in modo sincrono Discovery per ottenere una classificazione dell'email. Quindi, è possibile utilizzare l'output di tale classificazione nella propria logica aziendale.

L'API di analisi supporta solo documenti JSON.

Quando si analizza un documento con l'API, si indica come si desidera che il documento venga elaborato specificando la raccolta da associare all'analisi. Il documento non è memorizzato nella raccolta. Invece, le impostazioni di configurazione della raccolta vengono applicate al documento. Ad esempio, se desideri trovare i riferimenti di entità in un documento, esegui l'API di analisi rispetto a una raccolta in cui viene applicato l'arricchimento Entità. L'analisi del documento risultante identifica tutte le citazioni di entità nel documento.

Inoltra una richiesta di analisi per una sola raccolta configurata con gli arricchimenti che vuoi utilizzare per analizzare il tuo documento su richiesta. Tenere presente che i documenti nella raccolta non sono significativi. Sono gli arricchimenti che sono definiti per la raccolta che contano. Se si inoltrano richieste a diverse raccolte, vengono avviati diversi modelli contemporaneamente, il che può causare errori di richiesta.

I seguenti arricchimenti sono supportati nell'API Analyze:

Per l'elenco completo degli arricchimenti supportati in ogni lingua, vedi Supporto lingua.

Per ulteriori informazioni, vedi il Riferimento API Discovery.

Esempio di analisi

I dati inoltrati per l'analisi devono essere in formato JSON. Il testo deve essere specificato come una stringa; non può essere specificato come una schiera. Ad esempio, il seguente file JSON contiene una virgoletta nel campo Quote che vuoi analizzare per trovare eventuali citazioni di parole chiave nel testo.

{
  "Author": "Jane Austen",
  "Book": "Pride and Prejudice",
  "Quote": "From this day you must be a stranger to one of your parents. Your mother will never see you again if you do not marry Mr. Collins, and I will never see you again if you do.",
  "Year": "1813/01/01",
  "Subject":"Parental love",
  "Speaker": "Mr. Bennett",
  "url": "https://www.gutenberg.org/files/1342/1342-h/1342-h.htm#link2HCH0020"
}

Conosci il nome di una raccolta nel tuo progetto in cui l'arricchimento Keywords è configurato per essere applicato ai documenti nella raccolta. Puoi usare l'API per elencare le tue raccolte per trovare l'ID associato con la raccolta che cerchi per nome.

Dopo aver ottenuto l'ID raccolta, includilo nella richiesta POST che invii per applicare le impostazioni di configurazione dalla raccolta al file JSON. Ad esempio, la seguente richiesta inoltra il frammento JSON in un file denominato favorites2.json per l'analisi della parola chiave.

curl --location --request POST \
'https://my-cloud-pak-for-data-cluster/discovery/zen-wd/instances/{instance-id}/api/v2/ \
projects/{project-id}/collections/{collection-id}/analyze?version=2020-08-30' \
--header 'Authorization: Bearer ...' \
--form 'file=@"/quotations/favorites2.json"'

Il risultato contiene un elenco di parole chiave che sono state riconosciute nella quotazione.

{
  "result": {
    "enriched_Quote": [
      {
        "keywords": [
          {
            "text": "day",
            "mentions": [
              {
                "text": "day",
                "location": {
                  "begin": 10,
                  "end": 13
                }
              }
            ],
            "relevance": 0.673739
          },
          {
            "text": "stranger",
            "mentions": [
              {
                "text": "stranger",
                "location": {
                  "begin": 28,
                  "end": 36
                }
              }
            ],
            "relevance": 0.596757
          },
          {
            "text": "parents",
            "mentions": [
              {
                "text": "parents",
                "location": {
                  "begin": 52,
                  "end": 59
                }
              }
            ],
            "relevance": 0.568336
          },
          {
            "text": "mother",
            "mentions": [
              {
                "text": "mother",
                "location": {
                  "begin": 66,
                  "end": 72
                }
              }
            ],
            "relevance": 0.755562
          },
          {
            "text": "Mr. Collins",
            "mentions": [
              {
                "text": "Mr. Collins",
                "location": {
                  "begin": 118,
                  "end": 129
                }
              }
            ],
            "relevance": 0.945891
          }
        ]
      }
    ],
    "url": "https://www.gutenberg.org/files/1342/1342-h/1342-h.htm#link2HCH0020",
    "Subject": "Parental love",
    "Year": "1813/01/01",
    "Book": "Pride and Prejudice",
    "Author": "Jane Austen",
    "Quote": [
      "From this day you must be a stranger to one of your parents. Your mother will never see you again if you do not marry Mr. Collins, and I will never see you again if you do."
    ],
    "metadata": {
      "name": "favorites2.json"
    },
    "Speaker": "Mr. Bennett"
  },
  "notices": []
}

Non è possibile inoltrare un array di oggetti come input. Ad esempio, è possibile che si desideri analizzare più preventivi, in modo che l'origine sia simile alla seguente:

{
  "quotations":[
    {
      "Author": "Jane Austen",
      "Book": "Sense and Sensibility",
      "Quote": "Is there a felicity in the world superior to this?",
      "Year": "1811/01/01",
      "Subject": "Nature",
      "Speaker": "Marianne Dashwood",
      "url": "https://www.gutenberg.org/files/1342/1342-h/1342-h.htm#link2HCH0059"
    },
    {
      "Author": "Jane Austen",
      "Book": "Persuasion",
      "Quote": "A man does not recover from such a devotion of the heart to such a woman. He ought not; he does not.",
      "Subject": "Romantic love",
      "Year": "1818/01/01",
      "Speaker": "Captain Wentworth",
      "url": "https://www.gutenberg.org/files/105/105-h/105-h.htm#chap20"
    }
  ]
}

In tal caso, suddividere ogni oggetto in un file separato e analizzare ogni file singolarmente.

Analisi di un frammento di testo

Puoi inoltrare il testo per l'analisi quando specifichi il testo in formato JSON utilizzando una sintassi come questa:

{
"text":"The text that you want to analyze."
}

La seguente richiesta di esempio mostra come analizzare il testo specificato nella richiesta, non quello inoltrato in un file fisico.

curl --location --request POST \
'https://my-cloud-pak-for-data-cluster/discovery/zen-wd/instances/{instance-id}/api/v2/ \
projects/{project-id}/collections/{collection-id}/analyze?version=2020-08-30' \
--header 'Authorization: Bearer ...' \
--form 'file={"text": "ISO 9000 is a standard."}'

La risposta potrebbe essere simile alla seguente.

{
  "result" : {
    "enriched_text" : [ {
      "entities" : [ {
        "text" : "ISO 9000",
        "type" : "my_iso_pattern",
        "mentions" : [ {
          "text" : "ISO 9000",
          "confidence" : 1.0,
          "location" : {
            "begin" : 0,
            "end" : 8
          }
        } ],
        "model_name" : "My ISO Pattern"
      }, {
        "text" : "9000",
        "type" : "Number",
        "mentions" : [ {
          "text" : "9000",
          "confidence" : 0.8,
          "location" : {
            "begin" : 4,
            "end" : 8
          }
        } ],
        "model_name" : "natural_language_understanding"
      } ]
    } ],
    "metadata" : { },
    "text" : [ "ISO 9000 is a standard." ]
  },
  "notices" : [ ]
}

Analisi del contenuto HTML

Puoi analizzare HTML quando invii l'html in formato JSON utilizzando una sintassi come questa:

{
"html":"<p>My html content.</p>"
}

La seguente richiesta di esempio mostra come analizzare il testo specificato nella richiesta, non quello inoltrato in un file fisico.

La raccolta a cui viene effettuata la richiesta, utilizza i seguenti arricchimenti, il che significa che tali arricchimenti vengono applicati al contenuto che invii con la richiesta API:

  • Entità
  • Parole chiave
  • Table Understanding

Esempio di richiesta

Il corpo della richiesta contiene form-data con il nome file. Il valore è il contenuto JSON da analizzare.

curl --location --request POST \
'https://cpd-abc.example.com/discovery/abc-wd/instances/1671204318684041/api/v2/projects/d457fcd9-a4ce-4637-a340-33123b5cbe2c/collections/2d47dbcc-64c7-84e9-0000-01851bb9d998/analyze?version=2020-08-30' \
--header 'Authorization: Bearer ...' \
--form 'file={
  "html":"<html><head>This is my html file</head><body><p>My file contains a table.</p><table><tbody><tr><th>Holiday</th><th>Popular greeting</th></tr><tr><td>Christmas</td><td>Merry Christma!s</td></tr></tbody></table></body></html>",
  "text":"This is a sentence that contains key words, such as George Washington and Boston, MA."
}'

Risultati

I risultati mostrano l'output degli arricchimenti Entità, Parole chiave e Comprensione tabella nei campi text e html che sono stati inoltrati.

{
    "result": {
        "text": [
            "This is a sentence that contains key words, such as George Washington and Boston, MA."
        ],
        "enriched_text": [
            {
                "keywords": [
                    {
                        "text": "George Washington",
                        "mentions": [
                            {
                                "text": "George Washington",
                                "location": {
                                    "begin": 52,
                                    "end": 69
                                }
                            }
                        ],
                        "relevance": 0.952591
                    },
                    {
                        "text": "Boston",
                        "mentions": [
                            {
                                "text": "Boston",
                                "location": {
                                    "begin": 74,
                                    "end": 80
                                }
                            }
                        ],
                        "relevance": 0.578079
                    },
                    {
                        "text": "MA",
                        "mentions": [
                            {
                                "text": "MA",
                                "location": {
                                    "begin": 82,
                                    "end": 84
                                }
                            }
                        ],
                        "relevance": 0.146905
                    }
                ],
                "entities": [
                    {
                        "text": "George Washington",
                        "type": "Location",
                        "mentions": [
                            {
                                "text": "George Washington",
                                "confidence": 0.54922265,
                                "location": {
                                    "begin": 52,
                                    "end": 69
                                }
                            }
                        ],
                        "model_name": "natural_language_understanding"
                    },
                    {
                        "text": "Boston, MA",
                        "type": "Location",
                        "mentions": [
                            {
                                "text": "Boston, MA",
                                "confidence": 0.66049105,
                                "location": {
                                    "begin": 74,
                                    "end": 84
                                }
                            }
                        ],
                        "model_name": "natural_language_understanding"
                    }
                ]
            }
        ],
        "metadata": {},
        "enriched_html": [
            {
                "tables": [
                    {
                        "body_cells": [
                            {}
                        ],
                        "location": {
                            "begin": 99,
                            "end": 183
                        },
                        "row_headers": [],
                        "key_value_pairs": [],
                        "section_title": {},
                        "contexts": [],
                        "text": "Holiday Popular greeting Christmas Merry Christmas!",
                        "table_headers": [],
                        "title": {},
                        "column_headers": []
                    }
                ]
            }
        ],
        "html": [
            "<html><head>This is my html file</head><body><p>My file contains a table.</p><table><tbody><tr><th>Holiday</th><th>Popular greeting</th></tr><tr><td>Christmas</td><td>Merry Christmas!</td></tr></tbody></table></body></html>"
        ]
    },
    "notices": []
}

Analizza limiti API

La seguente tabella mostra la dimensione del file e i limiti di utilizzo per l'API Analyze.

Limiti applicati all'utilizzo dell'API Analyze
Tipo di distribuzione Limite dimensione file Limite raccolte simultanee Limite di query simultanee per raccolta
Distribuzione installata di Cloud Pak for Data Illimitato Illimitato Illimitato
Distribuzione gestita del piano Enterprise 50 KB 5 5

L'utilizzo dell'API Analyze da Discovery Cartridge for IBM Cloud Pak for Data influenza l'utilizzo della licenza. Per ulteriori informazioni, consultare le informazioni sulla licenza.

Monitoraggio dell'utilizzo IBM Cloud Pak for DataIBM Software Hub

Puoi monitorare l'uso dell'API Analyze dalla pagina Utilizzo API.

La pagina Utilizzo API è disponibile solo dalle distribuzioni installate. Per i piani Enterprise, le informazioni di chiamata del metodo di analisi vengono combinate con le informazioni di chiamata del metodo di query e vengono riportate come parte delle metriche della query.

Per accedere alla pagina Utilizzo API, aprire la pagina Progetti, selezionare Utilizzo dati, quindi Utilizzo API.

Data di inizio
La data di inizio del periodo di monitoraggio chiamata API.
Data di fine
La data di fine del periodo di monitoraggio chiamata API.
Totale chiamate di trenta giorni
Numero di richiami all'API Analyze nell'intervallo di tempo di 30 giorni indicato dalla Data di inizio e Data di fine. L'intervallo di tempo viene determinato calcolando il periodo di tempo consecutivo con il numero più elevato di chiamate API. La finestra di 30 giorni viene aggiornata come l'intervallo di tempo con il numero più alto di modifiche della chiamata API.

L' utilizzo dell'API non viene visualizzato fino a quando non inizia il monitoraggio dell'utilizzo dell'API. Potrebbe verificarsi un ritardo nella visualizzazione del numero totale finale del totale chiamate di 30 giorni, anche se il periodo di 30 giorni elencato include la data corrente.


  1. Perché la tabella comprenda l'arricchimento per produrre qualsiasi risultato, l'input deve contenere un elemento HTML <table> da analizzare. ↩︎