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 crearle 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 approfondire l'API stessa.

Funzionalità di Natural Language

L'API Natural Language offre diversi metodi per eseguire l'analisi e l'annotazione del testo. Ogni livello di analisi fornisce informazioni preziose per la comprensione del linguaggio. Questi metodi sono elencati di seguito:

  • L'analisi del sentiment esamina il testo fornito e identifica l'opinione emotiva prevalente al suo interno, soprattutto per determinare l'atteggiamento di un autore come positivo, negativo o neutro. L'analisi del sentiment viene eseguita tramite il metodo analyzeSentiment.

  • L'analisi delle entità esamina il testo fornito alla ricerca di entità note (nomi propri come personaggi pubblici, punti di riferimento e così via). nomi 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 fornito per individuare entità note (nomi propri e nomi comuni), restituisce informazioni su queste entità e identifica l'opinione emotiva prevalente dell'entità all'interno del testo, in particolare per determinare l'atteggiamento di un autore nei confronti dell'entità come positivo, negativo o neutro. L'analisi delle entità viene eseguita con il metodo analyzeEntitySentiment.

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

  • L'analisi della classificazione dei contenuti analizza i contenuti di testo 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 non è specificata dal chiamante nella richiesta iniziale.

Inoltre, se vuoi eseguire diverse operazioni di elaborazione del linguaggio naturale su un determinato testo utilizzando una sola chiamata API, puoi utilizzare anche la richiesta annotateText per eseguire l'analisi del sentiment e delle entità.

Provalo

Se non conosci Google Cloud, crea un account per valutare le prestazioni di Natural Language in scenari reali. I nuovi clienti ricevono anche 300 $ di crediti per l'esecuzione, il test e il deployment di workload senza costi aggiuntivi.

Prova Natural Language gratuitamente

Richieste di base in linguaggio naturale

L'API Natural Language è un'API REST ed è composta da richieste e risposte JSON. Di seguito è riportata una semplice richiesta JSON di analisi delle entità di 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 per questa richiesta, che consiste nei seguenti sottocampi:
    • 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 Supporto delle lingue. Le lingue non supportate restituiranno un errore nella risposta JSON.
    • content o gcsContentUri, che contengono il testo da valutare. Se viene passato content, questo testo viene incluso direttamente nella richiesta JSON (come mostrato sopra). Se viene passato gcsContentUri, il campo deve contenere un URI che rimanda a contenuti di testo in Google Cloud Storage.
  • encodingType - (obbligatorio) lo schema di codifica in cui devono essere calcolati gli offset dei caratteri restituiti nel testo, che deve corrispondere alla codifica del testo passato. Se questo parametro non è impostato, la richiesta non genererà errori, ma tutti gli offset verranno impostati su -1.

Specificare i contenuti testuali

Quando passi una richiesta dell'API Natural Language, specifichi il testo da elaborare in uno dei due modi seguenti:

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

In entrambi i casi, assicurati di non superare i limiti dei contenuti consentiti. Tieni presente che questi limiti dei contenuti sono in byte, non in caratteri; la lunghezza dei caratteri dipende quindi dalla codifica del testo.

La richiesta riportata di seguito si riferisce a un file Google Cloud Storage contenente il Discorso di Gettysburg:

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

Analisi del sentiment

L'analisi del sentiment tenta di determinare l'atteggiamento generale (positivo o negativo) espresso nel 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 al discorso 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
      }
    },
   ...
}

I valori di questi campi sono descritti di seguito:

  • documentSentiment contiene il sentiment generale del documento, che è composto dai seguenti campi:
    • score del sentiment è compreso tra -1.0 (negativo) e 1.0 (positivo) e corrisponde alla tendenza emotiva complessiva del testo.
    • magnitude indica l'intensità complessiva dell'emozione (sia positiva che negativa) all'interno del testo specificato, con valori compresi 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 al magnitude del testo (quindi i blocchi di testo più lunghi possono avere magnitudo maggiori).
  • language_code contiene la lingua del documento, passata nella richiesta iniziale o rilevata automaticamente se assente.
  • language_supported contiene un valore booleano per identificare se la lingua è ufficialmente supportata
  • sentences contiene un elenco delle frasi estratte dal documento originale, che contiene:
    • sentiment contiene i valori del sentiment a livello di frase allegati a ogni frase, che contengono score tra -1.0 (negativo) e 1.0 (positivo) e valori magnitude compresi tra 0.0 e 1.0. Tieni presente che magnitude per sentences è normalizzato.

Un valore di sentiment di 0.2 per il discorso di Gettysburg indica un'emozione leggermente positiva, mentre il valore di intensità di 3.6 indica un documento relativamente emotivo, data la sua piccola dimensione (circa un paragrafo). Tieni presente che la prima frase del discorso di Gettysburg contiene un score positivo molto alto pari a 0.8.

Interpretare i valori dell'analisi del sentiment

Il punteggio del sentiment di un documento indica l'emozione complessiva di un documento. La magnitudo del sentiment di un documento indica la quantità di contenuti emotivi presenti nel documento e questo valore è spesso proporzionale alla lunghezza del documento.

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

Un documento con un punteggio neutro (circa 0.0) può indicare un documento con poche emozioni o emozioni contrastanti, con valori positivi e negativi elevati che si annullano a vicenda. In genere, puoi utilizzare i valori magnitude per distinguere questi casi, in quanto i documenti veramente neutrali avranno un valore magnitude basso, mentre i documenti misti avranno valori di magnitudo più elevati.

Quando confronti i documenti tra loro (soprattutto documenti di lunghezza diversa), assicurati di utilizzare i valori magnitude per calibrare i punteggi, in quanto 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
Clearly Positive* "score": 0,8, "magnitude": 3,0
Chiaramente negativo* "score": -0,6, "magnitude": 4,0
Indifferente "score": 0,1, "magnitude": 0
Misto "score": 0.0, "magnitude": 4.0

* Il sentiment "chiaramente positivo" e "chiaramente negativo" varia a seconda dei diversi casi d'uso e clienti. Potresti trovare risultati diversi per il tuo scenario specifico. Ti consigliamo di definire una soglia adatta alle tue esigenze e poi di modificarla dopo aver testato e verificato i risultati. Ad esempio, potresti definire una soglia di qualsiasi punteggio superiore a 0,25 come chiaramente positivo, quindi modificare la soglia del punteggio a 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 dell'entità

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

Le entità rientrano in due categorie: nomi propri che mappano a entità uniche (persone, luoghi specifici e così via) o nomi comuni (chiamati anche "nominali" nell'elaborazione del linguaggio naturale). Una buona pratica 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 superare 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 i 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 è riportata 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 of Arabia" (il film) e "T.E. Lawrence" (la persona). L'analisi delle entità è utile per disambiguare entità simili come "Lawrence" in questo caso.

Di seguito sono elencati i campi utilizzati per memorizzare 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 aiutano a distinguere e/o disambiguare le entità e possono essere utilizzate per scrivere pattern o estrarre informazioni. Ad esempio, un valore type può aiutare a distinguere entità con nomi simili come "Lawrence d'Arabia", contrassegnato come WORK_OF_ART (film), da "T.E. Lawrence", contrassegnato come PERSON, ad esempio. (Per maggiori informazioni, vedi Tipi di entità.)

  • metadata contiene informazioni sull'origine del repository di conoscenza dell'entità. In futuro potrebbero essere esposti altri repository.

  • mentions indicano 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 il titolo del film. Puoi anche utilizzare le menzioni per raccogliere l'elenco degli alias delle entità, ad esempio "Lawrence", che si riferiscono alla stessa entità "T.E. Lawrence". Una menzione di entità può essere di due tipi: PROPER o COMMON. Un'entità nome proprio per "Lawrence of Arabia", ad esempio, potrebbe essere menzionata direttamente come titolo del film o come nome comune ("film biografico" di T.E. Lawrence).

Analisi del sentiment relativo all'entità

L'analisi del sentiment relativo a un'entità combina l'analisi dell'entità e l'analisi del sentiment e tenta di determinare il sentiment (positivo o negativo) espresso in relazione alle entità menzionate nel testo. Il sentiment per un'entità, formato da un punteggio numerico e da un valore di grandezza, viene determinato per ciascuna menzione di una particolare entità. I punteggi vengono quindi aggregati in un punteggio di sentiment complessivo e in una grandezza per un'entità.

Richieste di analisi del sentiment relativo all'entità

Le richieste di analisi del sentiment delle entità vengono inviate all'API Natural Language tramite l'utilizzo 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 tua richiesta che identifica il codice della 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 Supporto delle lingue.

Risposte dell'analisi del sentiment relativo all'entità

L'API Natural Language elabora il testo fornito per estrarre le entità e determinare il sentiment. Una richiesta di analisi del sentiment delle entità restituisce una risposta contenente le entities trovate nei contenuti del documento, una voce mentions per ogni menzione dell'entità e i valori numerici score e magnitude per ogni menzione, come descritto in Interpretazione dei valori dell'analisi del sentiment. I valori complessivi di score e magnitude per un'entità sono un aggregato dei valori specifici di score e magnitude per ogni menzione dell'entità. I valori score e magnitude per un'entità possono essere 0 se il sentimento nel testo è basso, il che comporta un magnitude pari a 0, oppure se il sentimento è misto, il che comporta un score pari a 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, vedi Analisi del sentiment relativo all'entità.

Analisi sintattica

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

L'analisi sintattica è costituita dalle 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 le loro posizioni 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'utilizzo 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 dell'analisi sintattica

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

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

Estrazione di frasi

Quando esegue 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 principale text:

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

Ad esempio, il seguente elemento sentences viene ricevuto per una richiesta di analisi sintattica del discorso 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 insieme di token. Puoi utilizzare le informazioni associate a ogni token per eseguire un'ulteriore analisi delle frasi restituite. Per maggiori 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 (limiti delle parole) del contenuto trasmesso. Il processo mediante il quale l'API Natural Language sviluppa questo insieme di token è noto come tokenizzazione.

Una volta estratti, 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 inseriti in una struttura ad albero delle dipendenze, che consente di determinare il significato sintattico dei token e illustrare il rapporto tra i token e le frasi che li contengono. 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 del carattere (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 dei token sono posizionati all'interno del testo nel suo complesso. Tieni presente che questo offset viene calcolato utilizzando il valore encodingType.
    • content contiene il contenuto testuale effettivo del testo originale.
  • partOfSpeech fornisce informazioni grammaticali, tra cui informazioni morfologiche, sul token, come tempo, persona, numero, genere e così via. (Per informazioni più complete su questi campi, consulta la guida Morfologia e alberi delle dipendenze.)

  • lemma contiene la parola "radice" su cui si basa questa parola, il che consente di standardizzare l'utilizzo delle parole all'interno del testo. Ad esempio, le parole "scrivere", "scrittura", "scrisse" e "scritto" si basano tutte sullo stesso lemma ("scrivere"). Inoltre, le forme singolari e plurali si basano sui lemmi: "casa" e "case" si riferiscono alla stessa forma. (Vedi Lemma (morfologia).)

  • I campi dependencyEdge identificano la relazione tra le parole in una frase contenente un token tramite i bordi di un albero diretto. Queste informazioni possono essere utili per la traduzione, l'estrazione di informazioni e il riepilogo. 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 dell'indice (basato su zero) del "token principale" di questo token all'interno della frase che lo contiene. Un token senza genitori si indicizza.
    • label fornisce il tipo di dipendenza di questo token dal token principale.

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

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

 "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 chiedere all'API Natural Language di analizzare un documento e restituire un elenco di categorie di contenuti applicabili al testo trovato nel documento. Per classificare i contenuti di un documento, chiama il metodo classifyText.

Un elenco completo delle categorie di contenuti restituite per il metodo classifyText è disponibile 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, in quanto è il risultato più specifico.

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

Esecuzione di più operazioni in un'unica richiesta

Se vuoi eseguire un insieme di operazioni Natural Language all'interno di una singola chiamata al metodo, puoi utilizzare annotateTextcome richiesta API Natural Language per scopi generali. Una richiesta JSON di annotazione del testo è simile a una richiesta standard di analisi delle entità, ma richiede inoltre un insieme di funzionalità trasmesse 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 seguente richiesta 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"
}