Nozioni di base sull'API Natural Language

Questo documento fornisce una guida alle nozioni di base sull'utilizzo dell'API Cloud Natural Language. Questa guida concettuale illustra i tipi di richieste che puoi fare all'API Natural Language, come costruire tali richieste e come gestirne le risposte. Consigliamo a tutti gli utenti dell'API Natural Language di leggere questa guida e uno dei tutorial associati prima di addentrarsi nell'API stessa.

Funzionalità di Natural Language

L'API Natural Language offre vari metodi per eseguire analisi e annotazioni sul testo. Ogni livello di analisi fornisce informazioni preziose per la comprensione della lingua. Questi metodi sono elencati di seguito:

  • L'analisi del sentiment esamina il testo specificato e identifica l'opinione emotiva prevalente all'interno del testo, soprattutto per determinare l'atteggiamento di uno scrittore come positivo, negativo o neutro. L'analisi del sentiment viene eseguita con il metodo analyzeSentiment.

  • L'analisi delle entità ispeziona il testo specificato per individuare le entità note (nomi propri come personaggi pubblici, punti di riferimento e così via). sostantivi comuni come ristorante, stadio e così via) e restituisce informazioni su queste entità. L'analisi delle entità viene eseguita con il metodo analyzeEntities.

  • L'analisi del sentiment delle entità esamina il testo specificato per individuare entità note (nomi propri e sostantivi comuni), restituisce informazioni su queste entità e identifica l'opinione emotiva prevalente dell'entità all'interno del testo, soprattutto per determinare l'atteggiamento di uno scrittore nei confronti dell'entità come positivo, negativo o neutro. L'analisi delle entità viene eseguita con il metodo analyzeEntitySentiment.

  • L'analisi sintetica estrae informazioni linguistiche, suddividendo il testo dato in una serie di frasi e token (in genere, limiti di parole), fornendo ulteriori analisi su questi token. L'analisi sintattica viene eseguita con il metodo analyzeSyntax.

  • La classificazione dei contenuti analizza i contenuti testuali e restituisce una categoria di contenuti per i contenuti. La classificazione dei contenuti viene eseguita utilizzando il metodo classifyText.

Ogni chiamata API rileva e restituisce anche la lingua, se il chiamante non specifica una lingua nella richiesta iniziale.

Inoltre, se vuoi eseguire diverse operazioni di linguaggio naturale sul testo utilizzando una sola chiamata API, la richiesta annotateText può essere utilizzata anche per eseguire l'analisi del sentiment e dell'entità.

Provalo

Se non hai mai utilizzato Google Cloud, crea un account per valutare le prestazioni di Natural Language in scenari reali. I nuovi clienti ricevono anche 300 $ di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.

Prova Natural Language gratuitamente

Richieste di base Natural Language

L'API Natural Language è un'API REST ed è composta da richieste e risposte JSON. Di seguito viene visualizzata una semplice richiesta di analisi delle entità JSON Natural Language:

{
  "document":{
    "type":"PLAIN_TEXT",
    "language_code": "EN",
    "content":"'Lawrence of Arabia' is a highly rated film biography about
                British Lieutenant T. E. Lawrence. Peter O'Toole plays
                Lawrence in the film."
  },
  "encodingType":"UTF8"
}

Questi campi sono spiegati di seguito:

  • document contiene i dati di questa richiesta, composti dai seguenti campi secondari:
    • type: tipo di documento (HTML o PLAIN_TEXT)
    • language (facoltativo): la lingua del testo all'interno della richiesta. Se non specificata, la lingua verrà rilevata automaticamente. Per informazioni sulle lingue supportate dall'API Natural Language, consulta la pagina Supporto delle lingue. Le lingue non supportate restituiranno un errore nella risposta JSON.
    • content o gcsContentUri, che contengono il testo da valutare. Se trasmetti content, questo testo viene incluso direttamente nella richiesta JSON (come mostrato sopra). Se trasmetti gcsContentUri, il campo deve contenere un URI che punta a contenuti di testo all'interno di Google Cloud Storage.
  • encodingType: (obbligatorio) è necessario calcolare lo schema di codifica in cui devono essere calcolati gli offset di caratteri restituiti nel testo, che deve corrispondere alla codifica del testo trasmesso. Se questo parametro non viene impostato, la richiesta non genererà un errore, ma tutti questi offset verranno impostati su -1.

Specificare i contenuti testuali

Quando passi una richiesta API Natural Language, puoi specificare il testo da elaborare in due modi:

  • Trasmettere il testo direttamente all'interno di un campo content.
  • Passaggio di un URI Google Cloud Storage all'interno di un campo gcsContentUri.

In entrambi i casi, devi assicurarti di non superare il limite consentito dai Limiti di contenuti. Tieni presente che questi limiti per i contenuti sono espressi per byte, non per carattere; la lunghezza dei caratteri dipende quindi dalla codifica del testo.

La richiesta seguente si riferisce a un file Google Cloud Storage contenente l'indirizzo di Gettysburg:

{
  "document":{
    "type":"PLAIN_TEXT",
    "language": "EN",
    "gcsContentUri":"gs://cloud-samples-tests/natural-language/gettysburg.txt"
  },
}

Analisi del sentiment

L'analisi del sentiment cerca di determinare l'atteggiamento complessivo (positivo o negativo) espresso all'interno del testo. Il sentiment è rappresentato da valori numerici score e magnitude.

Campi di risposta dell'analisi del sentiment

Di seguito è riportato un esempio di risposta analyzeSentiment all'indirizzo di Gettysburg:

{
  "documentSentiment": {
    "score": 0.2,
    "magnitude": 3.6
  },
  "language_code": "en",
   "sentences": [
    {
      "text": {
        "content": "Four score and seven years ago our fathers brought forth
        on this continent a new nation, conceived in liberty and dedicated to
        the proposition that all men are created equal.",
        "beginOffset": 0
      },
      "sentiment": {
        "magnitude": 0.8,
        "score": 0.8
      }
    },
   ...
}

Questi valori dei campi sono descritti di seguito:

  • documentSentiment contiene il sentiment generale del documento, che è costituito dai seguenti campi:
    • score del sentiment varia tra -1.0 (negativo) e 1.0 (positivo) e corrisponde all'inclinazione emotiva complessiva del testo.
    • magnitude indica l'intensità complessiva dell'emozione (sia positiva che negativa) all'interno del testo specificato, tra 0.0 e +inf. A differenza di score, magnitude non è normalizzato per documentSentiment; ogni espressione di emozione all'interno del testo (sia positiva che negativa) contribuisce all'magnitude del testo (i blocchi di testo più lunghi potrebbero avere magnitudini maggiori).
  • language_code contiene la lingua del documento, trasmessa nella richiesta iniziale o rilevata automaticamente se assente.
  • language_supported contiene un valore booleano per indicare se la lingua è ufficialmente supportata
  • sentences contiene un elenco di frasi estratte dal documento originale, che contiene:
    • sentiment contiene i valori Sentiment a livello di frase associati a ogni frase, che contengono score tra -1.0 (negativo) e 1.0 (positivo) come e magnitude valori compresi tra 0.0 e 1.0. Tieni presente che magnitude per sentences è normalizzato.

Un valore di sentiment pari a 0.2 per l'Indirizzo di Gettysburg indica che è leggermente positivo per l'emozione, mentre il valore di magnitudo pari a 3.6 indica un documento relativamente emotivo, considerate le sue dimensioni ridotte (circa un paragrafo). Nota che la prima frase dell'indirizzo di Gettysburg contiene un score di 0.8 molto positivo.

Interpretare i valori di analisi del sentiment

Il punteggio del sentiment di un documento indica l'emozione complessiva di un documento. L'ampiezza del sentiment di un documento indica la quantità di contenuto emotivo presente all'interno del documento e questo valore è spesso proporzionale alla lunghezza del documento.

È importante notare che l'API Natural Language indica le differenze tra emozioni positive e negative in un documento, ma non identifica specifiche emozioni positive e negative. Ad esempio, "arrabbiato" e "triste" sono entrambi considerati emozioni negative. Tuttavia, quando l'API Natural Language analizza il testo considerato "arrabbiato" o considerato "triste", la risposta indica solo che il sentiment nel testo è negativo, non "triste" o "arrabbiato".

Un documento con un punteggio neutro (circa 0.0) può indicare un documento con scarsa emotività oppure un insieme di emozioni contrastanti, con valori sia positivi che negativi. In generale, puoi utilizzare i valori magnitude per distinguere questi casi, poiché i documenti veramente neutrali avranno un valore magnitude basso, mentre i documenti misti avranno valori di grandezza più elevati.

Quando confronti i documenti tra loro (in particolare documenti di durata diversa), assicurati di utilizzare i valori magnitude per calibrare i punteggi, poiché possono aiutarti a valutare la quantità pertinente di contenuti emotivi.

Il grafico seguente mostra alcuni valori di esempio e come interpretarli:

Sentiment Valori di esempio
Chiaramente positiva* "score": 0,8, "magnitude": 3,0
Chiaramente negativo* "score": -0,6, "magnitude": 4,0
Normale "score": 0,1, "magnitude": 0,0
Misto "score": 0,0, "magnitude": 4,0

* Il sentiment "chiaramente positivo" e "chiaramente negativo" varia a seconda dei casi d'uso e dei clienti. Potresti trovare risultati diversi per il tuo scenario specifico. Ti consigliamo di definire una soglia adatta alle tue esigenze e di regolarla dopo aver testato e verificato i risultati. Ad esempio, puoi definire una soglia di qualsiasi punteggio superiore a 0,25 come chiaramente positiva e poi modificare la soglia di punteggio impostandola su 0,15 dopo aver esaminato i dati e i risultati e aver scoperto che anche i punteggi compresi tra 0,15 e 0,25 devono essere considerati positivi.

Analisi delle entità

L'analisi delle entità fornisce informazioni sulle entità nel testo, che in genere si riferiscono a "cose" denominate, come individui famosi, punti di riferimento, oggetti comuni e così via.

Le entità rientrano sostanzialmente in due categorie: nomi propri, mappati a entità uniche (persone, luoghi specifici e così via) o sostantivi comuni (chiamati anche "nominali" nell'elaborazione del linguaggio naturale). Una buona prassi generale da seguire è che se qualcosa è un sostantivo, si qualifica come "entità". Le entità vengono restituite come offset indicizzati nel testo originale.

Una richiesta di analisi delle entità deve passare un argomento encodingType, in modo che gli offset restituiti possano essere interpretati correttamente.

Campi di risposta dell'analisi delle entità

L'analisi delle entità restituisce un insieme di entità rilevate e parametri associati a queste entità, ad esempio il tipo di entità, la pertinenza dell'entità rispetto al testo complessivo e le posizioni nel testo che fanno riferimento alla stessa entità.

Di seguito è visualizzata una risposta analyzeEntities alla richiesta di entità:

{
  "entities": [
    {
      "name": "British",
      "type": "LOCATION",
      "metadata": {},
      "mentions": [
        {
          "text": {
            "content": "British",
            "beginOffset": 58
          },
          "type": "PROPER",
          "probability": 0.941
        }
      ]
    },
    {
      "name": "Lawrence",
      "type": "PERSON",
      "metadata": {},
      "mentions": [
        {
          "text": {
            "content": "Lawrence",
            "beginOffset": 113
          },
          "type": "PROPER",
          "probability": 0.914
        }
      ]
    },
    {
      "name": "Lawrence of Arabia",
      "type": "WORK_OF_ART",
      "metadata": {},
      "mentions": [
        {
          "text": {
            "content": "Lawrence of Arabia",
            "beginOffset": 0
          },
          "type": "PROPER",
          "probability": 0.761
        }
      ]
    },
    {
      "name": "Lieutenant",
      "type": "PERSON",
      "metadata": {},
      "mentions": [
        {
          "text": {
            "content": "Lieutenant",
            "beginOffset": 66
          },
          "type": "COMMON",
          "probability": 0.927
        }
      ]
    },
    {
      "name": "Peter O Toole",
      "type": "PERSON",
      "metadata": {},
      "mentions": [
        {
          "text": {
            "content": "Peter O Toole",
            "beginOffset": 93
          },
          "type": "PROPER",
          "probability": 0.907
        }
      ]
    },
    {
      "name": "T. E. Lawrence",
      "type": "PERSON",
      "metadata": {},
      "mentions": [
        {
          "text": {
            "content": "T. E. Lawrence",
            "beginOffset": 77
          },
          "type": "PROPER",
          "probability": 0.853
        }
      ]
    },
    {
      "name": "film",
      "type": "WORK_OF_ART",
      "metadata": {},
      "mentions": [
        {
          "text": {
            "content": "film",
            "beginOffset": 129
          },
          "type": "COMMON",
          "probability": 0.805
        }
      ]
    },
    {
      "name": "film biography",
      "type": "WORK_OF_ART",
      "metadata": {},
      "mentions": [
        {
          "text": {
            "content": "film biography",
            "beginOffset": 37
          },
          "type": "COMMON",
          "probability": 0.876
        }
      ]
    }
  ],
  "languageCode": "en",
  "languageSupported": true
}

Tieni presente che l'API Natural Language restituisce entità per "Lawrence d'Arabia" (il film) e "T.E. Lawrence" (la persona). L'analisi delle entità è utile per distinguere entità simili, ad esempio "Lawrence".

Di seguito sono elencati i campi utilizzati per archiviare i parametri dell'entità:

  • type indica il tipo di questa entità (ad esempio se l'entità è una persona, una località, un bene di consumo e così via) Queste informazioni consentono di distinguere e/o disambiguare le entità e possono essere utilizzate per scrivere pattern o per estrarre informazioni. Ad esempio, un valore type può aiutare a distinguere entità con nomi simili, come "Lawrence d'Arabia", taggate come WORK_OF_ART (film) e "T.E. Lawrence", ad esempio PERSON. Per ulteriori informazioni, consulta la sezione Tipi di entità.

  • metadata contiene informazioni di origine sul repository di conoscenze dell'entità Potrebbero essere esposti altri repository in futuro.

  • mentions indica le posizioni di offset all'interno del testo in cui viene menzionata un'entità. Queste informazioni possono essere utili se vuoi trovare tutte le menzioni della persona "Lawrence" nel testo, ma non nel titolo del film. Puoi anche utilizzare le menzioni per raccogliere l'elenco di alias di entità, ad esempio "Lawrence", che fanno riferimento alla stessa entità "T.E. Lawrence". La menzione di una persona giuridica può essere di due tipi: PROPER o COMMON. Un nome proprio Entità per "Lawrence d'Arabia", ad esempio, può essere menzionato direttamente come titolo del film o come nome comune ("biografia cinematografica" di T.E. Lawrence).

Analisi del sentiment relativo all'entità

L'analisi del sentiment delle entità combina sia l'analisi delle entità sia quella del sentiment e tenta di determinare il sentiment (positivo o negativo) espresso in merito alle entità all'interno del testo. Il sentiment dell'entità è rappresentato da punteggi numerici e valori di grandezza ed è determinato per ogni menzione di un'entità. Questi punteggi vengono poi aggregati in un punteggio di sentiment complessivo e nella grandezza di un'entità.

Richieste di analisi del sentiment delle entità

Le richieste di analisi del sentiment di entità vengono inviate all'API Natural Language tramite l'uso del metodo analyzeEntitySentiment nel seguente formato:

{
  "document":{
    "type":"PLAIN_TEXT",
    "content":"I love R&B music. Marvin Gaye is the best.
               'What's Going On' is one of my favorite songs.
               It was so sad when Marvin Gaye died."
  },
  "encodingType":"UTF8"
}

Puoi specificare un parametro language facoltativo con la richiesta che identifica il codice lingua per il testo nel parametro content. Se non specifichi un parametro language, l'API Natural Language rileva automaticamente la lingua per i contenuti della richiesta. Per informazioni sulle lingue supportate dall'API Natural Language, consulta la pagina Supporto delle lingue.

Risposte di analisi del sentiment delle entità

L'API Natural Language elabora il testo specificato per estrarre le entità e determinare il sentiment. Una richiesta di analisi del sentiment relativo all'entità restituisce una risposta contenente il valore entities trovato nei contenuti del documento, una voce mentions ogni volta che viene menzionata l'entità e i valori numerici score e magnitude per ogni menzione, come descritto in Interpretare i valori di analisi del sentiment. I valori complessivi score e magnitude per un'entità sono aggregati dei valori score e magnitude specifici per ogni menzione dell'entità. I valori score e magnitude per un'entità possono essere 0. Se il testo ha un sentiment basso, il che genera un magnitude pari a 0 oppure il sentiment è misto, il score è 0.

{
  "entities": [
    {
      "name": "R&B music",
      "type": "WORK_OF_ART",
      "metadata": {},
      "salience": 0.5306305,
      "mentions": [
        {
          "text": {
            "content": "R&B music",
            "beginOffset": 7
          },
          "type": "COMMON",
          "sentiment": {
            "magnitude": 0.9,
            "score": 0.9
          }
        }
      ],
      "sentiment": {
        "magnitude": 0.9,
        "score": 0.9
      }
    },
    {
      "name": "Marvin Gaye",
      "type": "PERSON",
      "metadata": {
        "mid": "/m/012z8_",
        "wikipedia_url": "http://en.wikipedia.org/wiki/Marvin_Gaye"
      },
      "salience": 0.21584158,
      "mentions": [
        {
          "text": {
            "content": "Marvin Gaye",
            "beginOffset": 18
          },
          "type": "PROPER",
          "sentiment": {
            "magnitude": 0.4,
            "score": 0.4
          }
        },
        {
          "text": {
            "content": "Marvin Gaye",
            "beginOffset": 138
          },
          "type": "PROPER",
          "sentiment": {
            "magnitude": 0.2,
            "score": -0.2
          }
        }
      ],
      "sentiment": {
        "magnitude": 0.6,
        "score": 0.1
      }
    },
    ...
  ],
  "language": "en"
}

Per un esempio, consulta Analisi del sentiment relativo all'entità.

Analisi sintattica

L'API Natural Language offre un set potente di strumenti per l'analisi e l'analisi del testo tramite analisi sintattica. Per eseguire l'analisi sintattica, utilizza il metodo analyzeSyntax.

L'analisi sintattica consiste nelle seguenti operazioni:

  • L'estrazione delle frasi suddivide il flusso di testo in una serie di frasi.
  • La tokenizzazione suddivide il flusso di testo in una serie di token, ognuno dei quali corrisponde in genere a una singola parola.
  • L'API Natural Language elabora quindi i token e, utilizzando la loro posizione all'interno delle frasi, aggiunge informazioni sintattiche ai token.

La documentazione completa sul set di token sintattici è disponibile nella guida Morfologia e alberi delle dipendenze.

Richieste di analisi sintattica

Le richieste di analisi sintattica vengono inviate all'API Natural Language tramite l'uso del metodo analyzeSyntax nel seguente formato:

{
  "document":{
    "type":"PLAIN_TEXT",
    "content":"Ask not what your country can do for you,
               ask what you can do for your country."
  },
  "encodingType":"UTF8"
}

Risposte di analisi sintattica

L'API Natural Language elabora il testo specificato per estrarre frasi e token. Una richiesta di analisi sintattica restituisce una risposta contenente questi sentences e tokens nel formato seguente:

{
  "sentences": [
    ... Array of sentences with sentence information
  ],
  "tokens": [
    ... Array of tokens with token information
  ]
}

Estrazione di frasi

Durante l'analisi sintattica, l'API Natural Language restituisce un array di frasi estratte dal testo fornito, con ogni frase contenente i seguenti campi all'interno di un elemento padre text:

  • beginOffset che indica l'offset di caratteri (in base zero) all'interno del testo specificato in cui inizia la frase. Tieni presente che questo offset viene calcolato utilizzando il valore encodingType superato.
  • content contenente il testo completo della frase estratta.

Ad esempio, il seguente elemento sentences viene ricevuto per una richiesta di analisi sintattica dell'indirizzo di Gettysburg:

{
  "sentences": [
    {
      "text": {
        "content": "Four score and seven years ago our fathers brought forth on
                    this continent a new nation, conceived in liberty and
                    dedicated to the proposition that all men are created
                    equal.",
        "beginOffset": 0
      }
    },
    {
      "text": {
        "content": "Now we are engaged in a great civil war, testing whether
                    that nation or any nation so conceived and so dedicated can
                    long endure.",
        "beginOffset": 175
      }
    },
...
...
    {
      "text": {
        "content": "It is rather for us to be here dedicated to the great task
                    remaining before us--that from these honored dead we take
                    increased devotion to that cause for which they gave the
                    last full measure of devotion--that we here highly resolve
                    that these dead shall not have died in vain, that this
                    nation under God shall have a new birth of freedom, and that
                    government of the people, by the people, for the people
                    shall not perish from the earth.",
        "beginOffset": 1002
      }
    }
  ],
  "language": "en"
}

Una richiesta di analisi sintattica all'API Natural Language includerà anche un set di token. Puoi utilizzare le informazioni associate a ciascun token per eseguire ulteriori analisi sulle frasi restituite. Per ulteriori informazioni su questi token, consulta la guida Morfologia e alberi delle dipendenze.

Tokenizzazione

Il metodo analyzeSyntax trasforma anche il testo in una serie di token, che corrispondono ai diversi elementi testuali (confini delle parole) dei contenuti passati. Il processo mediante il quale l'API Natural Language sviluppa questo set di token è noto come tokenizzazione.

Una volta estratti i token, l'API Natural Language li elabora per determinare la parte del discorso associata (incluse le informazioni morfologiche) e il lemma. Inoltre, i token vengono valutati e posizionati all'interno di un albero delle dipendenze, che consente di determinare il significato sintattico dei token e illustra la relazione tra i token e le loro frasi contenenti. Le informazioni sintattiche e morfologiche associate a questi token sono utili per comprendere la struttura sintattica delle frasi all'interno dell'API Natural Language.

Di seguito è riportato l'insieme di campi token restituiti in una risposta JSON di analisi sintattica:

  • text contiene i dati di testo associati a questo token, con i seguenti campi secondari:

    • beginOffset contiene l'offset di caratteri (in base zero) all'interno del testo fornito. Tieni presente che sebbene le dipendenze (descritte di seguito) esistano solo all'interno delle frasi, gli offset del token sono posizionati all'interno del testo nel suo complesso. Tieni presente che questo offset viene calcolato utilizzando il valore encodingType passato.
    • content include i contenuti testuali effettivi del testo originale.
  • partOfSpeech fornisce informazioni grammaticali, comprese informazioni morfologiche, relative al token, ad esempio il tempo, la persona, il numero, il genere e così via. (Per informazioni più complete su questi campi, consulta la guida Alberi di morfologia e delle dipendenze.)

  • lemma contiene la parola "principale" su cui si basa questa parola, che ti consente di canonizzare l'uso della parola all'interno del testo. Ad esempio, le parole "scrivere", "scrivere", "scrivere" e "scritto" si basano tutte sullo stesso lemma ("scrivere"). Inoltre, le forme plurali e singolari sono basate sui lemmi: "casa" e "case" fanno entrambi riferimento alla stessa forma. (vedi Lemma (morfologia)).

  • I campi dependencyEdge identificano la relazione tra le parole in un token contenenti frasi tramite gli archi in un albero diretto. Queste informazioni possono essere utili per la traduzione, l'estrazione di informazioni e il riassunto. La guida Morfologia e alberi delle dipendenze contiene informazioni più dettagliate sull'analisi delle dipendenze. Ogni campo dependencyEdge contiene i seguenti campi secondari:

    • headTokenIndex fornisce il valore di indice (in base zero) del "token padre" di questo token all'interno della frase incapsulante del token. Un token senza indicizzazioni padre stesso.
    • label fornisce il tipo di dipendenza di questo token sul suo token head.

La seguente citazione di Franklin D. Il discorso inaugurale di Roosevelt produrrà i seguenti token:

NOTA: tutti i tag partOfSpeech contenenti valori *_UNKNOWN sono stati rimossi per maggiore chiarezza.

 "tokens": [
    {
      "text": {
        "content": "The",
        "beginOffset": 4
      },
      "partOfSpeech": {
        "tag": "DET",
      },
      "dependencyEdge": {
        "headTokenIndex": 2,
        "label": "DET"
      },
      "lemma": "The"
    },
    {
      "text": {
        "content": "only",
        "beginOffset": 8
      },
      "partOfSpeech": {
        "tag": "ADJ",
      },
      "dependencyEdge": {
        "headTokenIndex": 2,
        "label": "AMOD"
      },
      "lemma": "only"
    },
    {
      "text": {
        "content": "thing",
        "beginOffset": 13
      },
      "partOfSpeech": {
        "tag": "NOUN",
        "number": "SINGULAR",
      },
      "dependencyEdge": {
        "headTokenIndex": 7,
        "label": "NSUBJ"
      },
      "lemma": "thing"
    },
    {
      "text": {
        "content": "we",
        "beginOffset": 19
      },
      "partOfSpeech": {
        "tag": "PRON",
        "case": "NOMINATIVE",
        "number": "PLURAL",
        "person": "FIRST",
      },
      "dependencyEdge": {
        "headTokenIndex": 4,
        "label": "NSUBJ"
      },
      "lemma": "we"
    },
    {
      "text": {
        "content": "have",
        "beginOffset": 22
      },
      "partOfSpeech": {
        "tag": "VERB",
        "mood": "INDICATIVE",
        "tense": "PRESENT",
      },
      "dependencyEdge": {
        "headTokenIndex": 2,
        "label": "RCMOD"
      },
      "lemma": "have"
    },
    {
      "text": {
        "content": "to",
        "beginOffset": 27
      },
      "partOfSpeech": {
        "tag": "PRT",
      },
      "dependencyEdge": {
        "headTokenIndex": 6,
        "label": "AUX"
      },
      "lemma": "to"
    },
    {
      "text": {
        "content": "fear",
        "beginOffset": 30
      },
      "partOfSpeech": {
        "tag": "VERB",
      },
      "dependencyEdge": {
        "headTokenIndex": 4,
        "label": "XCOMP"
      },
      "lemma": "fear"
    },
    {
      "text": {
        "content": "is",
        "beginOffset": 35
      },
      "partOfSpeech": {
        "tag": "VERB",
        "mood": "INDICATIVE",
        "number": "SINGULAR",
        "person": "THIRD",
        "tense": "PRESENT",
      },
      "dependencyEdge": {
        "headTokenIndex": 7,
        "label": "ROOT"
      },
      "lemma": "be"
    },
    {
      "text": {
        "content": "fear",
        "beginOffset": 38
      },
      "partOfSpeech": {
        "tag": "NOUN",
        "number": "SINGULAR",
      },
      "dependencyEdge": {
        "headTokenIndex": 7,
        "label": "ATTR"
      },
      "lemma": "fear"
    },
    {
      "text": {
        "content": "itself",
        "beginOffset": 43
      },
      "partOfSpeech": {
        "tag": "PRON",
        "case": "ACCUSATIVE",
        "gender": "NEUTER",
        "number": "SINGULAR",
        "person": "THIRD",
      },
      "dependencyEdge": {
        "headTokenIndex": 8,
        "label": "NN"
      },
      "lemma": "itself"
    },
    {
      "text": {
        "content": ".",
        "beginOffset": 49
      },
      "partOfSpeech": {
        "tag": "PRON",
        "case": "ACCUSATIVE",
        "gender": "NEUTER",
        "number": "SINGULAR",
        "person": "THIRD",
      },
      "dependencyEdge": {
        "headTokenIndex": 8,
        "label": "NN"
      },
      "lemma": "itself"
    },
    {
      "text": {
        "content": ".",
        "beginOffset": 49
      },
      "partOfSpeech": {
        "tag": "PUNCT",
      },
      "dependencyEdge": {
        "headTokenIndex": 7,
        "label": "P"
      },
      "lemma": "."
    }
  ],

Classificazione dei contenuti

Puoi fare in modo che l'API Natural Language analizzi un documento e restituisca un elenco di aree tematiche che si applicano al testo trovato nel documento. Per classificare i contenuti di un documento, chiama il metodo classifyText.

Per un elenco completo delle categorie di contenuti restituite per il metodo classifyText, fai clic qui.

L'API Natural Language filtra le categorie restituite dal metodo classifyText per includere solo le categorie più pertinenti per una richiesta. Ad esempio, se /Science e /Science/Astronomy si applicano entrambi a un documento, viene restituita solo la categoria /Science/Astronomy, che è il risultato più specifico.

Per un esempio di classificazione dei contenuti con l'API Natural Language, consulta la pagina Classificazione dei contenuti.

Esecuzione di più operazioni in una singola richiesta

Se vuoi eseguire un insieme di operazioni Natural Language all'interno di una chiamata a metodo singolo, puoi utilizzare annotateText come richiesta API Natural Language per uso generico. Una richiesta JSON Annotazione di testo è simile a una richiesta di analisi delle entità standard, ma richiede inoltre un set di funzionalità passate per indicare le operazioni da eseguire sul testo. Queste funzionalità sono elencate di seguito:

  • extractDocumentSentiment esegue l'analisi del sentiment, come descritto nella sezione Analisi del sentiment.
  • extractEntities esegue l'analisi delle entità, come descritto nella sezione Analisi delle entità.
  • extractSyntax indica che il testo specificato deve essere elaborato per eseguire l'analisi sintattica, come descritto nella sezione Analisi sintattica.

La richiesta seguente chiama l'API per annotare features in una frase breve.

{
  "document":{
    "type":"PLAIN_TEXT",
    "content":"The windy, cold weather was unbearable this winter."
  },
  "features":{
    "extractSyntax":true,
    "extractEntities":true,
    "extractDocumentSentiment":true
  },
  "encodingType":"UTF8"
}