Noções básicas da API Natural Language

Este documento fornece um guia sobre os princípios básicos da utilização da Cloud Natural Language API. Este guia conceptual aborda os tipos de pedidos que pode fazer à API Natural Language, como criar esses pedidos e como processar as respetivas respostas. Recomendamos que todos os utilizadores da API Natural Language leiam este guia e um dos tutoriais associados antes de explorarem a API em si.

Funcionalidades de linguagem natural

A API Natural Language tem vários métodos para realizar a análise e a anotação no seu texto. Cada nível de análise fornece informações valiosas para a compreensão da linguagem. Estes métodos são apresentados abaixo:

  • A análise de sentimentos inspeciona o texto fornecido e identifica a opinião emocional predominante no texto, especialmente para determinar a atitude de um escritor como positiva, negativa ou neutra. A análise de sentimentos é realizada através do método analyzeSentiment.

  • A análise de entidades inspeciona o texto fornecido para encontrar entidades conhecidas (nomes próprios, como figuras públicas, pontos de referência, etc.). Substantivos comuns, como restaurante, estádio, etc.) e devolve informações sobre essas entidades. A análise de entidades é realizada com o método analyzeEntities.

  • A análise de sentimentos de entidades inspeciona o texto fornecido para entidades conhecidas (nomes próprios e substantivos comuns), devolve informações sobre essas entidades e identifica a opinião emocional predominante da entidade no texto, especialmente para determinar a atitude de um escritor em relação à entidade como positiva, negativa ou neutra. A análise de entidades é realizada com o método analyzeEntitySentiment.

  • A análise sintática extrai informações linguísticas, dividindo o texto fornecido numa série de frases e tokens (geralmente, limites de palavras), fornecendo uma análise mais detalhada desses tokens. A análise sintática é realizada com o método analyzeSyntax.

  • A classificação de conteúdo analisa o conteúdo de texto e devolve uma categoria de conteúdo para o conteúdo. A classificação de conteúdo é realizada através do método classifyText.

Cada chamada API também deteta e devolve o idioma, se o autor da chamada não o tiver especificado no pedido inicial.

Além disso, se quiser realizar várias operações de linguagem natural num determinado texto usando apenas uma chamada API, também pode usar o pedido annotateText para realizar a análise de sentimentos e a análise de entidades.

Experimente

Se está a usar o Google Cloud pela primeira vez, crie uma conta para avaliar o desempenho da API Natural Language em cenários do mundo real. Os novos clientes também recebem 300 USD em créditos gratuitos para executar, testar e implementar cargas de trabalho.

Experimente a linguagem natural gratuitamente

Pedidos básicos de linguagem natural

A API Natural Language é uma API REST e consiste em pedidos JSON e respostas. Segue-se um pedido de análise de entidades JSON de linguagem natural simples:

{
  "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 deste pedido, que consistem nos seguintes subcampos:
    • type: tipo de documento (HTML ou PLAIN_TEXT)
    • language - (opcional) o idioma do texto no pedido. Se não for especificado, o idioma é detetado automaticamente. Para obter informações sobre os idiomas suportados pela API Natural Language, consulte o artigo Suporte de idiomas. Os idiomas não suportados devolvem um erro na resposta JSON.
    • content ou gcsContentUri, que contêm o texto a avaliar. Se passar content, este texto é incluído diretamente no pedido JSON (conforme mostrado acima). Se passar gcsContentUri, o campo tem de conter um URI que aponte para conteúdo de texto no Google Cloud Storage.
  • encodingType - (obrigatório) o esquema de codificação no qual os desvios de carateres devolvidos no texto devem ser calculados, que tem de corresponder à codificação do texto transmitido. Se este parâmetro não estiver definido, o pedido não vai gerar um erro, mas todos os desvios vão ser definidos como -1.

Especificar conteúdo de texto

Quando transmite um pedido da API Natural Language, especifica o texto a processar de uma das seguintes formas:

  • Transmitir o texto diretamente num campo content.
  • Transmitir um URI do Google Cloud Storage num campo gcsContentUri.

Em qualquer dos casos, deve certificar-se de que não excede os limites de conteúdo permitidos. Tenha em atenção que estes limites de conteúdo são por byte e não por carater. Por conseguinte, o comprimento dos carateres depende da codificação do texto.

O pedido abaixo refere-se a um ficheiro 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 sensação geral

A análise de sentimentos tenta determinar a atitude geral (positiva ou negativa) expressa no texto. O sentimento é representado por valores numéricos score e magnitude.

Campos de resposta da análise de sensação geral

Abaixo, é apresentado um exemplo de analyzeSentiment resposta à Gettysburg Address:

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

Estes valores dos campos 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 à tendência emocional geral do texto.
    • magnitude indica a intensidade 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 no texto (positiva e negativa) contribui para a magnitude do texto (por isso, os blocos de texto mais longos podem ter magnitudes maiores).
  • language_code contém o idioma do documento, transmitido no pedido inicial ou detetado automaticamente se estiver ausente.
  • language_supported contém um valor booleano para identificar se o idioma é oficialmente suportado
  • sentences contém uma lista das frases extraídas do documento original, que contém:
    • sentiment contém os valores de sentimento ao nível da frase anexados a cada frase, que contêm score entre -1.0 (negativo) e 1.0 (positivo), bem como valores de magnitude entre 0.0 e 1.0. Tenha em atenção que magnitude para sentences é normalizado.

Um valor de sentimento de 0.2 para o discurso de Gettysburg indica que é ligeiramente positivo em termos de emoção, enquanto o valor de magnitude de 3.6 indica um documento relativamente emocional, dado o seu pequeno tamanho (cerca de um parágrafo). Tenha em atenção que a primeira frase do discurso de Gettysburg contém uma probabilidade muito elevada de score de 0.8.

Interpretar os valores da análise de sensação geral

A pontuação do sentimento de um documento indica a emoção geral de um documento. A magnitude do sentimento de um documento indica a quantidade de conteúdo emocional presente no documento, e este valor é frequentemente proporcional ao comprimento do documento.

É importante ter em atenção que a API Natural Language indica diferenças entre emoções positivas e negativas num documento, mas não identifica emoções positivas e negativas específicas. Por exemplo, "zangado" e "triste" são considerados emoções negativas. No entanto, quando a API Natural Language analisa texto considerado "zangado" ou texto considerado "triste", a resposta indica apenas que o sentimento no texto é negativo e não "triste" ou "zangado".

Um documento com uma pontuação neutra (cerca de 0.0) pode indicar um documento com poucas emoções ou emoções mistas, com valores positivos e negativos elevados que se anulam mutuamente. Geralmente, pode usar valores magnitude para distinguir estes casos, uma vez que os documentos verdadeiramente neutros têm um valor magnitude baixo, enquanto os documentos mistos têm valores de magnitude mais elevados.

Quando comparar documentos entre si (especialmente documentos de comprimentos diferentes), certifique-se de que usa os valores magnitude para calibrar as suas classificações, uma vez que podem ajudar a avaliar a quantidade relevante de conteúdo emocional.

O gráfico abaixo mostra alguns valores de exemplo e como os interpretar:

Opinião Valores de exemplo
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 consoante os diferentes exemplos de utilização e clientes. Pode encontrar resultados diferentes para o seu cenário específico. Recomendamos que defina um limite que funcione para si e, em seguida, ajuste o limite após testar e validar os resultados. Por exemplo, pode definir um limite de qualquer pontuação superior a 0,25 como claramente positiva e, em seguida, modificar o limite de pontuação para 0,15 depois de rever os dados e os resultados e descobrir que as pontuações entre 0,15 e 0,25 também devem ser consideradas positivas.

Análise de entidades

A análise de entidades fornece informações sobre entidades no texto, que geralmente se referem a "coisas" com nome, como indivíduos famosos, marcos, objetos comuns, etc.

As entidades dividem-se em duas categorias: nomes próprios que são mapeados para entidades únicas (pessoas, locais, etc. específicos) ou nomes comuns (também denominados "nominais" no processamento de linguagem natural). Uma boa prática geral a seguir é que, se algo for um substantivo, qualifica-se como uma "entidade". As entidades são devolvidas como deslocamentos indexados no texto original.

Um pedido de análise de entidades deve transmitir um argumento encodingType para que os desvios devolvidos possam ser interpretados corretamente.

Campos de resposta da análise de entidades

A análise de entidades devolve um conjunto de entidades detetadas e parâmetros associados a essas entidades, como o tipo da entidade, a relevância da entidade para o texto geral e as localizações no texto que se referem à mesma entidade.

A analyzeEntities resposta ao pedido de entidade é apresentada 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
}

Tenha em atenção que a API Natural Language devolve entidades para "Lawrence da Arábia" (o filme) e "T.E. Lawrence" (a pessoa). A análise de entidades é útil para desambiguar entidades semelhantes, como "Lawrence" neste caso.

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

  • type indica o tipo desta entidade (por exemplo, se a entidade é uma pessoa, uma localização, um bem de consumo, etc.) Estas informações ajudam a distinguir e/ou desambiguar entidades e podem ser usadas 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", etiquetado como WORK_OF_ART (filme), de "T.E. Lawrence", etiquetado como PERSON, por exemplo. (Consulte os tipos de entidades para obter mais informações.)

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

  • mentions indicam posições de deslocamento no texto onde uma entidade é mencionada. Estas informações podem ser úteis se quiser encontrar todas as menções da pessoa "Lawrence" no texto, mas não o título do filme. Também pode usar menções para recolher a lista de aliases de entidades, como "Lawrence", que se referem à mesma entidade "T.E. Lawrence". Uma menção de entidade pode ser de um de dois tipos: PROPER ou COMMON. Uma entidade de substantivo próprio para "Lawrence da Arábia", por exemplo, pode ser mencionada diretamente como o título do filme ou como um substantivo comum ("biografia cinematográfica" de T.E. Lawrence).

Análise de sentimento de entidades

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

Pedidos de análise de sensação geral de entidades

Os pedidos de análise de sentimentos de entidades são enviados para a API Natural Language através da utilização 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"
}

Pode especificar um parâmetro language opcional com o seu pedido que identifica o código de idioma do texto no parâmetro content. Se não especificar um parâmetro language, a API Natural Language deteta automaticamente o idioma do conteúdo do seu pedido. Para informações sobre os idiomas suportados pela API Natural Language, consulte o artigo Suporte de idiomas.

Respostas da análise de sensação geral de entidades

A API Natural Language processa o texto fornecido para extrair as entidades e determinar o sentimento. Um pedido de análise de sentimentos de entidades devolve uma resposta que contém as entities encontradas no conteúdo do documento, uma entrada mentions para cada vez que a entidade é mencionada e os valores numéricos score e magnitude para cada menção, conforme descrito em Interpretar os valores da análise de sentimentos. Os valores scoremagnitude gerais de uma entidade são um agregado dos valores scoremagnitude específicos de cada menção da entidade. Os valores score e magnitude de uma entidade podem ser 0 se houver um sentimento baixo no texto, o que resulta num magnitude de 0, ou se o sentimento for misto, o que resulta num 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 o artigo Analisar o sentimento das entidades.

Análise sintática

A API Natural Language oferece um conjunto de ferramentas poderosas para analisar e analisar texto através 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 de frases divide o fluxo de texto numa série de frases.
  • Tokenização divide a stream de texto numa série de tokens, com cada token a corresponder normalmente a uma única palavra.
  • Em seguida, a API Natural Language processa os tokens e, usando as respetivas localizações nas frases, adiciona informações sintáticas aos tokens.

A documentação completa sobre o conjunto de tokens sintáticos encontra-se no guia Morfologia e árvores de dependência.

Pedidos de análise sintática

Os pedidos de análise sintática são enviados para a API Natural Language através da utilização do método analyzeSyntax no seguinte 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"
}

Respostas de análise sintática

A API Natural Language processa o texto fornecido para extrair frases e tokens. Um pedido de análise sintática devolve uma resposta que contém estes elementos sentences e tokens no seguinte formato:

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

Extração de frases

Ao realizar a análise sintática, a API Natural Language devolve uma matriz de frases extraídas do texto fornecido, com cada frase a conter os seguintes campos num elemento principal text:

  • beginOffset indicando o deslocamento de carateres (com base zero) no texto fornecido onde a frase começa. Tenha em atenção que este desvio é calculado com base no valor encodingType transmitido.
  • content que contém o texto completo da frase extraída.

Por exemplo, o seguinte elemento sentences é recebido para um pedido 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"
}

Um pedido de análise sintática à API Natural Language também inclui um conjunto de tokens. Pode usar as informações associadas a cada token para fazer uma análise mais detalhada das frases devolvidas. Pode encontrar mais informações sobre estes tokens no guia Morfologia e árvores de dependências.

Conversão em tokens

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

Depois de extraídos, a API Natural Language processa estes tokens para determinar a respetiva parte do discurso associada (incluindo informações morfológicas) e lema. Além disso, os tokens são avaliados e colocados numa árvore de dependências, o que lhe permite determinar o significado sintático dos tokens e ilustrar a relação dos tokens entre si e com as frases que os contêm. As informações sintáticas e morfológicas associadas a estes tokens são úteis para compreender a estrutura sintática das frases na API Natural Language.

O conjunto de campos de tokens devolvidos numa resposta JSON de análise sintática é apresentado abaixo:

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

    • beginOffset contém o deslocamento de carateres (com base zero) no texto fornecido. Tenha em atenção que, embora existam dependências (descritas abaixo) apenas nas frases, os desvios dos tokens estão posicionados no texto como um todo. Tenha em atenção que este desvio é calculado com base no valor passado encodingType.
    • 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, a pessoa, o número, o género, etc., do token. (Para obter informações mais completas sobre estes campos, consulte o guia Morfologia e árvores de dependências.)

  • lemma contém a palavra "raiz" na qual esta palavra se baseia, o que lhe permite canonicalizar a utilização de palavras no seu texto. Por exemplo, as palavras "escrever", "escrevendo", "escreveu" e "escrito" baseiam-se no mesmo lema ("escrever"). Além disso, as formas no singular e no plural baseiam-se em lemas: "casa" e "casas" referem-se à mesma forma. (Consulte Lema (morfologia).)

  • Os campos dependencyEdge identificam a relação entre palavras na frase que contém um token através de arestas numa árvore direcionada. Estas informações podem ser valiosas para tradução, extração de informações e resumo. (O guia Morfologia e árvores de dependências contém informações mais detalhadas sobre a análise sintática de dependências.) Cada campo dependencyEdge contém os seguintes campos secundários:

    • headTokenIndex fornece o valor do índice (baseado em zero) do "token principal" deste token na frase de encapsulamento do token. Um token sem índices principais indexa-se a si próprio.
    • label fornece o tipo de dependência deste token no respetivo token principal.

A seguinte citação de Franklin D. O discurso de inauguração de Roosevelt produz os seguintes tokens:

NOTA: todas as etiquetas partOfSpeech que contêm 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

Pode pedir à API Natural Language que analise um documento e devolva uma lista de categorias de conteúdo que se aplicam ao texto encontrado no documento. Para classificar o conteúdo num documento, chame o método classifyText.

Pode encontrar uma lista completa das categorias de conteúdo devolvidas para o método classifyText aqui.

A API Natural Language filtra as categorias devolvidas pelo método classifyText para incluir apenas as categorias mais relevantes para um pedido. Por exemplo, se /Science e /Science/Astronomy se aplicarem a um documento, apenas é devolvida a categoria /Science/Astronomy, uma vez que é o resultado mais específico.

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

Executar várias operações num único pedido

Se quiser realizar um conjunto de operações de linguagem natural numa única chamada de método, pode usar annotateTextcomo um pedido de API de linguagem natural de uso geral. Um pedido JSON de anotação de texto é semelhante a um pedido de análise de entidades padrão, mas também requer um conjunto de funcionalidades transmitidas para indicar as operações a realizar no texto. Estas funcionalidades estão listadas abaixo:

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

A solicitação seguinte chama a API para anotar features numa frase curta.

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