Princípios básicos da Natural Language API

Este documento é um guia sobre os princípios básicos do uso da API Cloud Natural Language. Neste guia conceitual, abordamos os tipos de solicitações que podem ser feitas à API Natural Language, como construir essas solicitações e como lidar com as respostas. Recomenda-se que todos os usuários da Natural Language API leiam esse guia e um dos tutoriais associados antes de trabalhar com a API.

Recursos da linguagem natural

Na Natural Language API, há vários métodos para executar análises e anotação do texto. Cada nível de análise apresenta informações valiosas para entendimento da linguagem. Os métodos estão listados a seguir:

  • Análise de sentimentos: inspeciona o texto fornecido e identifica a opinião emocional dominante nele, principalmente para determinar a atitude do escritor como positiva, negativa ou neutra. A análise de sentimento é realizada por meio do método analyzeSentiment.

  • Análise de entidade: inspeciona o texto fornecido em busca de entidades conhecidas (substantivos próprios como país, cidade etc. e substantivos comuns como animais, objetos etc.). Depois, retorna informações sobre essas entidades. A análise de entidades é realizada com o método analyzeEntities.

  • Análise do sentimento da entidade: inspeciona o texto fornecido em busca de entidades conhecidas (substantivos próprios e comuns), retorna informações sobre essas entidades e identifica a opinião emocional predominante dentro do texto. Isso ocorre especialmente para determinar a atitude do escritor em relação à entidade como positiva, negativa ou neutra. A análise de entidades é realizada com o método analyzeEntitySentiment.

  • Análise sintática: extrai informações linguísticas ao dividir o texto fornecido em uma série de frases e tokens (geralmente, limites de palavra) e apresentar uma análise mais detalhada desses tokens. A análise sintática é realizada com o método analyzeSyntax.

  • Classificação de conteúdo: analisa o conteúdo do texto e retorna uma categoria. A classificação de conteúdo é realizada usando o método classifyText.

Cada chamada de API também detecta e retorna o idioma se o autor da chamada não o tiver especificado na solicitação inicial.

Além disso, se você quiser executar várias operações de linguagem natural em determinado texto usando apenas uma chamada de API, a solicitação annotateText também poderá ser usada para realizar a análise de sentimento e de entidade.

Faça um teste

Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho da Natural Langue em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.

Teste a Natural Language gratuitamente

Solicitações básicas do Natural Language

A Natural Language API é uma REST API e consiste em solicitações e resposta JSON. Veja uma solicitação simples de análise de entidade JSON de linguagem natural:

{
  "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"
}

Estes campos são explicados abaixo:

  • document contém os dados da solicitação, que consistem nos seguintes subcampos:
    • type: tipo de documento (HTML ou PLAIN_TEXT)
    • language: (opcional) o idioma do texto na solicitação. Se não for especificado, o idioma será detectado automaticamente. Para informações sobre quais idiomas são compatíveis com a API Natural Language, consulte Idiomas compatíveis. Os idiomas incompatíveis retornam um erro na resposta JSON.
    • content ou gcsContentUri que contêm o texto a ser avaliado. Se passar content, esse texto será incluído diretamente na solicitação JSON, como mostrado acima. Se passar gcsContentUri, o campo precisa conter um URI que direcione para o conteúdo de texto no Google Cloud Storage.
  • encodingType (obrigatório): o esquema de codificação em que os deslocamentos de caracteres retornados no texto precisam ser calculados e corresponder à codificação do texto transmitido. Se esse parâmetro não for definido, não ocorrerá erro na solicitação, mas todos os deslocamentos serão definidos como -1.

Como especificar o conteúdo do texto

Para transmitir uma solicitação da Natural Language API, especifique o texto a ser processado de uma das duas maneiras:

  • Transmitindo o texto diretamente em um campo content.
  • Transmitindo um URI do Google Cloud Storage em um campo gcsContentUri.

Em qualquer caso, não transmita mais do que o permitido pelos Limites de conteúdo. Observe que esses limites de conteúdo são por byte, não por caractere. Portanto, o tamanho de caracteres depende da codificação do texto.

A solicitação abaixo se refere a um arquivo do Google Cloud Storage que contém o Discurso de Gettysburg:

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

Análise de sentimentos

A análise de sentimentos determina a atitude de modo geral, positiva ou negativa, expressa no texto. O sentimento é representado pelos valores numéricos score e magnitude.

Campos de resposta da análise de sentimentos

Uma resposta analyzeSentiment de amostra ao Discurso de Gettysburg é mostrada abaixo:

{
  "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
      }
    },
   ...
}

Esses valores de campo estão descritos abaixo:

  • documentSentiment contém o sentimento geral do documento, que consiste nos seguintes campos:
    • score do sentimento varia entre -1.0 (negativo) e 1.0 (positivo) e corresponde à inclinação emocional geral do texto.
    • magnitude indica a força geral da emoção (positiva e negativa) no texto fornecido, entre 0.0 e +inf. Ao contrário de score, magnitude não é normalizado para documentSentiment. Cada expressão de emoção dentro do texto (tanto positiva quanto negativa) contribui para a magnitude do texto. Ou seja, blocos de texto mais longos podem ter magnitudes maiores.
  • language_code contém o idioma do documento, transmitido na solicitação inicial ou detectado automaticamente, se ausente.
  • language_supported: contém um valor booleano para identificar se o idioma é oficialmente compatível.
  • sentences contém uma lista das frases extraídas do documento original, que contém:
    • sentiment contém os valores de sentimento no nível de frase anexados a cada frase, que contêm score entre -1.0 (negativo) e 1.0 (positivo). como e magnitude entre 0.0 e 1.0. magnitude para sentences é normalizado.

Um valor de sentimento de 0.2 no Discurso de Gettysburg indica que a emoção é um pouco positiva, enquanto o valor de magnitude de 3.6 indica um documento relativamente emotivo, devido ao tamanho pequeno (de cerca de um parágrafo). A primeira sentença do Discurso de Gettysburg contém um score positivo muito alto de 0.8.

Como interpretar valores da análise de sentimento

A pontuação de sentimento de um documento indica a emoção de modo geral. A magnitude de sentimento de um documento indica o conteúdo emocional presente nele, e esse valor é geralmente proporcional ao tamanho do documento.

É importante observar que a Natural Language API identifica diferenças entre emoções positivas e negativas em um documento, mas não especifica quais são essas emoções positivas e negativas. Por exemplo, "irritado" e "triste" são consideradas emoções negativas. No entanto, quando a Natural Language API analisa o texto que é considerado "irritado", ou texto classificado como "triste", a resposta apenas indica que o sentimento no texto é negativo, não "triste" ou "irritado".

Um documento com uma pontuação neutra de aproximadamente 0.0 pode indicar baixa emoção, ou indicar emoções mistas, com valores altamente positivos e também negativos que se anulam. Geralmente, você usa valores de magnitude para diferenciar esses casos, porque os documentos verdadeiramente neutros terão um valor de magnitude baixo, enquanto documentos mistos terão valores de magnitude maiores.

Ao comparar documentos entre si, especialmente documentos de diferentes tamanhos, certifique-se de usar os valores de magnitude para calibrar suas pontuações, porque elas podem ajudar a medir a quantidade relevante de conteúdo emocional.

A tabela abaixo exibe algumas amostras de valores e sua respectiva interpretação:

Sentimento Amostras de valores
Claramente positivo* "score": 0.8, "magnitude": 3.0
Claramente negativo* "score": -0.6, "magnitude": 4.0
Neutro "score": 0.1, "magnitude": 0.0
Misto "score": 0.0, "magnitude": 4.0

* O sentimento "claramente positivo" e "claramente negativo" varia de acordo com os diferentes casos de uso e clientes. É possível encontrar resultados diferentes para seu cenário específico. Recomendamos que você defina um limite que funcione para seu caso e depois ajuste o limite após testar e verificar os resultados. Por exemplo, defina um limite de qualquer pontuação acima de 0,25 como claramente positivo e, em seguida, modificar o limite de pontuação para 0,15 depois de revisar seus dados e resultados e descobrir que as pontuações de 0,15 a 0,25 também devem ser consideradas positivas.

Análise de entidade

A análise de entidade fornece informações sobre entidades do texto, que geralmente se referem a elementos nomeados, por exemplo, celebridades, pontos de referência, objetos comuns etc.

As entidades se dividem em duas categorias: substantivos próprios que se associam a entidades exclusivas, ou seja, pessoas, locais etc. específicos, ou substantivos comuns, também chamados de "nominais" no processamento da linguagem natural. Segundo uma boa prática geral, se o elemento é um substantivo, ele é qualificado como uma "entidade". As entidades são retornadas como deslocamentos indexados no texto original.

Uma solicitação de análise de entidade deve transmitir um argumento encodingType, para que os deslocamentos retornados possam ser interpretados corretamente.

Campos da resposta da análise de entidade

A análise de entidade retorna um conjunto das entidades detectadas e os parâmetros associados a elas, por exemplo, tipo de entidade, relevância da entidade para o texto de modo geral e locais no texto que se referem à mesma entidade.

Uma resposta analyzeEntities para a solicitação de entidade é mostrada abaixo:

{
  "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
}

Observe que a Natural Language API retorna entidades para "Lawrence da Arábia" (filme) e "T.E. Lawrence" (pessoa). A análise de entidade é útil para eliminar a ambiguidade de entidades semelhantes como nesse caso de "Lawrence".

Os campos usados para armazenar os parâmetros da entidade estão listados abaixo:

  • type indica o tipo dessa entidade. Por exemplo, se a entidade for uma pessoa, localização, bens de consumo etc. Além de diferenciar as entidades e/ou eliminar a ambiguidade delas, esse campo pode ser usado para escrever padrões ou extrair informações. Por exemplo, um valor type pode ajudar a distinguir entidades com nomes semelhantes, como "Lawrence da Arábia", marcado como WORK_OF_ART (filme), de “TE Lawrence”, marcado como PERSON, por exemplo. Para ver mais informações, consulte Tipos de entidade.

  • metadata contém informações de origem sobre o repositório de conhecimento da entidade. Repositórios adicionais podem ser expostos no futuro.

  • mentions indica as posições de deslocamento no texto em que uma entidade é mencionada. Essa informação é útil quando você quer encontrar todas as menções de “Lawrence” no texto relacionadas à pessoa, e não ao título do filme. Você também pode usar as menções para coletar a lista de aliases de entidade, como "Lawrence", que se refere à mesma entidade "T.E. Lawrence". Uma referência de entidade pode ser de dois tipos: PROPER ou COMMON. Um substantivo próprio Entidade de "Lawrence da Arábia", por exemplo, poderia ser mencionado diretamente como título do filme ou como um substantivo comum ("biografia do filme" de TE Lawrence).

Análise do sentimento da entidade

A análise do sentimento da entidade combina ambas as análises de entidade e de sentimento e tenta determinar o sentimento (positivo ou negativo) manifestado sobre as entidades no texto. O sentimento da entidade é representado por valores de magnitude e pontuação numéricos e é determinado para cada menção de uma entidade. Essas pontuações são então agregadas a uma magnitude e pontuação de sentimento geral de uma entidade.

Solicitações de análise do sentimento da entidade

As solicitações da Análise de sentimento de entidade são enviadas para a API Natural Language por meio do método analyzeEntitySentiment no seguinte 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"
}

Especifique um parâmetro language opcional com a solicitação que identifica o código do idioma do texto no parâmetro content. Se você não especificar um parâmetro language, a API Natural Language detectará automaticamente o idioma do conteúdo da solicitação. Para informações sobre quais idiomas são compatíveis com a API Natural Language, consulte Idiomas compatíveis.

Respostas de análise do sentimento da entidade

Com a API Natural Language, o texto fornecido é processado para extrair as entidades e determinar o sentimento. Uma solicitação de Análise de sentimento de entidade retorna uma resposta contendo as entities encontradas no conteúdo do documento, uma entrada mentions para cada vez que a entidade é mencionada, e os valores score e magnitude de cada menção, conforme descrito em Como interpretar valores de análise de sentimento. Os valores gerais score e magnitude de uma entidade são um agregado dos valores específicos score e magnitude para cada menção da entidade. Os valores score e magnitude de uma entidade podem ser 0, se houvesse um sentimento baixo no texto, resultando em um magnitude de 0, ou o sentimento é misto, resultando em um score de 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"
}

Para ver um exemplo, consulte Como analisar o sentimento da entidade.

Análise sintática

A Natural Language API fornece um conjunto poderoso de ferramentas para análise de texto por meio da análise sintática. Para realizar a análise sintática, use o método analyzeSyntax.

A análise sintática consiste nas seguintes operações:

  • A extração da frase divide o fluxo do texto em diversas frases.
  • Com a tokenização, o fluxo do texto é dividido em uma série de tokens, cada um geralmente correspondente a uma palavra.
  • A API Natural Language processa os tokens e adiciona informações sintáticas a eles usando as respectivas localizações nas frases.

Você encontra a documentação completa do conjunto de tokens sintáticos no guia Morfologia e árvores de dependência.

Solicitações de análise sintática

Solicitações de análise sintática são enviadas para a API Natural Language por meio do método analyzeSyntax da seguinte forma:

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

Respostas da análise sintática

A Natural Language API processa o texto fornecido para extrair frases e tokens. Uma solicitação de análise sintática retorna uma resposta contendo estes sentences e tokens no seguinte formato:

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

Extração de frase

Ao executar a análise sintática, a API Natural Language retorna uma matriz de sentenças extraídas do texto fornecido, com cada frase contendo os seguintes campos em um pai text:

  • beginOffset indicando o deslocamento do caractere (com base em zero) no texto em que a sentença começa. Observe que esse deslocamento é calculado usando o encodingType transmitido.
  • content contendo o texto completo da frase extraída.

Por exemplo, o elemento sentences a seguir é recebido para uma solicitação de Análise sintática do Discurso de 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"
}

A solicitação de análise sintática à Natural Language API inclui também um conjunto de tokens. Use as informações associadas a cada token para fazer uma análise mais detalhada das frases retornadas. Para saber mais informações sobre esses tokens, consulte o guia Morfologia e árvores de dependência.

Tokenização

O método analyzeSyntax também transforma o texto em uma série de tokens, que correspondem aos diferentes elementos textuais (limites de palavras) do conteúdo transmitido. O processo pelo qual a Natural Language API desenvolve o conjunto de tokens é conhecido como tokenização.

Quando os tokens são extraídos, a Natural Language API os processa para determinar a classe gramatical associada, inclusive informações morfológicas, e o lema. Além disso, os tokens são avaliados e colocados em uma árvore de dependência. Assim, você determina o significado sintático dos tokens e ilustra a relação entre eles e com as frases a que pertencem. As informações sintáticas e morfológicas associadas aos tokens são úteis para entender a estrutura sintática das frases na Natural Language API.

Este é o conjunto de campos de token retornado em uma resposta JSON de análise sintática:

  • text contém os dados de texto associados a este token, com os seguintes campos filho:

    • beginOffset contém o deslocamento de caracteres (com base em zero) no texto fornecido. As dependências descritas abaixo existem somente nas frases, mas os deslocamentos de token são posicionados no texto como um todo. Observe que esse deslocamento é calculado usando o encodingType transmitido.
    • content contém o conteúdo textual real do texto original.
  • partOfSpeech fornece informações gramaticais, incluindo informações morfológicas, sobre o token, como o tempo do token, a pessoa, o número, o gênero etc. Para informações mais completas sobre esses campos, consulte o guia Morfologia e árvores de dependência.

  • lemma contém a palavra "raiz" em que esta palavra se baseia, que permite que você canonicalize o uso de palavras em seu texto. Por exemplo, as palavras "write" (escrever), "writing" (escrevendo), "wrote" (escreveu) e "written" (escrito) são todas baseadas no mesmo lexema ("write", escrever). Além disso, as formas plural e singular também são baseadas em lexemas: "house" (casa) e "houses" (casas), ambas se referem à mesma formação. Consulte Lexema (morfologia).

  • Os campos dependencyEdge identificam a relação entre as palavras na sentença que contém um token por meio de bordas em uma árvore direcionada. O valor desse campo é importante na tradução, na extração de informações e no resumo. No guia Morfologia e árvores de dependência, você encontra informações mais detalhadas sobre a análise de dependência. Cada campo dependencyEdge contém os seguintes campos derivados:

    • headTokenIndex fornece o valor de índice (baseado em zero) do token pai desse token na sentença de encapsulamento do token. Um token sem pai faz a própria indexação.
    • label fornece o tipo de dependência desse token no token de cabeçalho.

A citação a seguir de Franklin D. O discurso inaugural de Roosevelt produzirá os seguintes tokens:

OBSERVAÇÃO: todas as tags partOfSpeech contendo valores *_UNKNOWN foram removidas para maior clareza.

 "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": "."
    }
  ],

Classificação de conteúdo

A Natural Language API pode analisar um documento e retornar uma lista de categorias de conteúdo que se aplicam ao texto apresentado no documento. Para classificar o conteúdo de um documento, chame o método classifyText.

Uma lista completa das categorias de conteúdo retornadas pelo método classifyText é encontrada aqui.

Com a API Natural Language, são filtradas as categorias retornadas pelo método classifyText para incluir apenas as mais relevantes para uma solicitação. Por exemplo, se /Science e /Science/Astronomy forem aplicáveis a um documento, somente a categoria /Science/Astronomy será retornada, porque é o resultado mais específico.

Para ver um exemplo de classificação de conteúdo com a API Natural Language, consulte Como classificar o conteúdo.

Como executar várias operações em uma única solicitação

Se você quer executar um conjunto de operações da Natural Language em uma única chamada de método, pode usar annotateText como uma solicitação de API Natural Language para uso geral. Uma solicitação JSON de anotação de texto é semelhante à solicitação de análise de entidade padrão, mas também requer um conjunto de recursos transmitidos para indicar as operações a serem executadas no texto. Os recursos estão listados abaixo:

  • extractDocumentSentiment realiza análise de sentimento, conforme descrito na seção Análise de sentimento.
  • extractEntities realiza a análise de entidade, conforme descrito na seção Análise de entidade.
  • extractSyntax indica que o texto fornecido deve ser processado para realizar a análise sintática, conforme descrito na seção Análise sintática.

A solicitação a seguir chama a API para anotar features em uma frase curta.

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