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 gratuitamenteSolicitaçõ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 dessa solicitação, que consistem nos seguintes subcampos:type
: tipo de documento (HTML
ouPLAIN_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
ougcsContentUri
que contêm o texto a ser avaliado. Se passarcontent
, esse texto será incluído diretamente na solicitação JSON, como mostrado acima. Se passargcsContentUri
, 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) e1.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, entre0.0
e+inf
. Ao contrário descore
,magnitude
não é normalizado paradocumentSentiment
. Cada expressão de emoção dentro do texto (tanto positiva quanto negativa) contribui para amagnitude
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 tem suporte oficialsentences
contém uma lista das sentenças 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êmscore
entre-1.0
(negativo) e1.0
(positivo). como emagnitude
entre0.0
e1.0
.magnitude
parasentences
é 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 valortype
pode ajudar a distinguir entidades com nomes semelhantes, como "Lawrence da Arábia", marcado comoWORK_OF_ART
(filme), de “TE Lawrence”, marcado comoPERSON
, 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
ouCOMMON
. 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 oencodingType
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 oencodingType
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 campodependencyEdge
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 do discurso de posse de Franklin D. Roosevelt produz estes 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" }