Conceptos básicos de la API de Natural Language

Este documento es una guía de los conceptos básicos del uso de la API de Cloud Natural Language. En esta guía conceptual, se abordan los tipos de solicitudes que puedes realizar a la API de Natural Language, cómo crear esas solicitudes y cómo manejar sus respuestas. Recomendamos que todos los usuarios de la API de Natural Language lean esta guía y uno de los instructivos asociados antes de comenzar a usar la API.

Características de Natural Language

La API de Natural Language tiene varios métodos para realizar análisis y anotaciones en tu texto. Cada nivel de análisis proporciona información valiosa para la comprensión del lenguaje. Estos métodos se mencionan a continuación:

  • El Análisis de opiniones inspecciona el texto dado e identifica la opinión emocional predominante dentro del texto, en especial para determinar la actitud de un escritor como positiva, negativa o neutra. El análisis de opiniones se ejecuta mediante el método analyzeSentiment.

  • El Análisis de entidades inspecciona el texto dado en busca de entidades conocidas (nombres propios como figuras públicas, puntos de referencia, etc., y sustantivos comunes como restaurantes, estadios, etc.), y muestra información sobre esas entidades. El análisis de entidades se ejecuta con el método analyzeEntities.

  • El Análisis de opiniones de entidades busca entidades conocidas en el texto dado (nombres propios y sustantivos comunes), muestra información sobre esas entidades e identifica la emoción predominante de la entidad en el texto, en especial para determinar si la actitud del escritor hacia la entidad es positiva, negativa o neutra. El análisis de entidades se ejecuta con el método analyzeEntitySentiment.

  • El Análisis sintáctico extrae información lingüística mediante la división del texto dado en una serie de oraciones y tokens (por lo general, límites de palabras), para proporcionar un análisis más detallado sobre esos tokens. El análisis sintáctico se realiza con el método analyzeSyntax.

  • La Clasificación de contenido analiza el contenido del texto y muestra una categoría para el mismo. La clasificación de contenido se realiza mediante el método classifyText.

Cada llamada a la API también detecta y muestra el idioma si el emisor no especificó un idioma en la solicitud inicial.

Además, si deseas realizar varias operaciones de lenguaje natural en un texto determinado con una sola llamada a la API, también se puede usar la solicitud annotateText para realizar análisis de opiniones y de entidades.

Pruébalo tú mismo

Si es la primera vez que usas Google Cloud, crea una cuenta para evaluar el rendimiento de Natural Language en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.

Probar Natural Language gratis

Solicitudes básicas de Natural Language

La API de Natural Language es una API de REST que consiste en una solicitud JSON y una respuesta. A continuación, aparece una solicitud de Análisis de entidades JSON de 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"
}

Estos campos se explican a continuación:

  • document contiene los datos de esta solicitud, que consta de los siguientes subcampos:
    • type: tipo de documento (HTML o PLAIN_TEXT)
    • language: (opcional) el idioma del texto de la solicitud. Si no se especifica, el idioma se detectará automáticamente. Para obtener información sobre los idiomas compatibles con la API de Natural Language, consulta Idiomas compatibles. Los idiomas no compatibles mostrarán un error en la respuesta JSON.
    • content o gcsContentUri, que contienen el texto que se va a evaluar. Si pasas content, este texto se incluye directamente en la solicitud JSON (como se mostró antes). Si pasas gcsContentUri, el campo debe contener un URI que dirija al contenido de texto dentro de Google Cloud Storage.
  • encodingType - (obligatorio) el esquema de codificación en el cual se deben calcular los desplazamientos de caracteres mostrados en el texto, y que deben coincidir con la codificación del texto pasado. Si no se configura este parámetro, la solicitud no arrojará un error, pero todos los desplazamientos de ese tipo se configurarán en -1.

Especificar el contenido del texto

Cuando pasas una solicitud de la API de Natural Language, especificas el texto que se debe procesar de una de dos maneras:

  • Pasar el texto directamente en un campo content.
  • Pasar un URI de Google Cloud Storage dentro de un campo gcsContentUri.

En cualquier caso, debes asegurarte de no sobrepasar los Límites de contenido permitido. Ten en cuenta que estos límites de contenido son por byte, no por caracter; por lo tanto, la longitud de los caracteres depende de la codificación de tu texto.

La solicitud siguiente se refiere a un archivo de Google Cloud Storage que contiene la Dirección de Gettysburg:

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

Análisis de opiniones

El análisis de opiniones intenta determinar la actitud general (positiva o negativa) expresada en el texto. La opinión se representa mediante valores numéricos score y magnitude.

Campos de respuesta al Análisis de opiniones

A continuación, se muestra una respuesta analyzeSentiment de muestra a la Dirección de 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
      }
    },
   ...
}

Estos valores de campo se describen a continuación:

  • documentSentiment contiene la opinión general del documento, que consta de los siguientes campos:
    • score de las opiniones oscila entre -1.0 (negativo) y 1.0 (positivo), y corresponde a la tendencia emocional general del texto.
    • magnitude indica la intensidad general de la emoción (tanto positiva como negativa) en un determinado texto, entre 0.0 y +inf. A diferencia de score, magnitude no está normalizado para documentSentiment; cada expresión de emoción en el texto (tanto positiva como negativa) contribuye al magnitude del texto (por lo tanto, los bloques de texto más largos podrían tener magnitudes mayores).
  • language_code contiene el idioma del documento, ya sea que se haya pasado en la solicitud inicial o se haya detectado automáticamente si estaba ausente.
  • language_supported contiene un valor booleano para identificar si el idioma se admite oficialmente
  • sentences contiene una lista de las oraciones extraídas del documento original, el cual incluye lo siguiente:
    • sentiment contiene los valores de nivel de opiniones de la oración adjuntos a cada oración, los cuales contienen score entre valores -1.0 (negativo) y 1.0 (positivo) como y magnitude entre 0.0 y 1.0. Ten en cuenta que magnitude para sentences se normaliza.

Un valor de opinión de 0.2 para la dirección de Gettysburg indica que es ligeramente positivo en emoción, mientras que el valor de magnitud de 3.6 indica un documento relativamente emotivo, dado su tamaño pequeño (alrededor de 1 párrafo). Ten en cuenta que la primera oración de la dirección de Gettysburg contiene una score altamente positiva de 0.8.

Interpretar los valores de análisis de opiniones

La puntuación de las opiniones de un documento indica la emoción en general de un documento. La magnitud de las opiniones de un documento indica cuánto contenido emocional está presente en el documento, y este valor es a menudo proporcional al largo del documento.

Cabe destacar que la API de Natural Language muestra las diferencias entre emociones positivas y negativas en un documento, pero no identifica emociones positivas y negativas específicas. Por ejemplo, tanto "enojado" como "triste" se consideran emociones negativas. Sin embargo, cuando la API de Natural Language analiza texto que se considera "enojado" o texto que se considera "triste", la respuesta solo indica que el sentimiento en el texto es negativo, no "triste" o "enojado".

Un documento con una puntuación neutral (alrededor de 0.0) podría indicar que un documento es de emoción baja o emociones mixtas, con valores tanto positivos como negativos que se cancelan unos a otros. Por lo general, puedes usar valores magnitude para eliminar la ambigüedad de estos casos, ya que los documentos en verdad neutros tendrán un valor de magnitude bajo, mientras que los documentos mixtos tendrán valores de magnitud mayores.

Cuando compares documentos entre sí (especialmente documentos de diferente longitud), asegúrate de usar los valores magnitude para calibrar sus puntuaciones, ya que pueden ayudarte a medir la cantidad relevante de contenido emocional.

La siguiente tabla muestra algunos valores de muestra y cómo interpretarlos:

Opinión Valores de muestra
Claramente positiva* "score": 0.8, "magnitude": 3.0
Claramente negativa* "score": -0.6, "magnitude": 4.0
Neutral "score": 0.1, "magnitude": 0.0
Mixto "score": 0.0, "magnitude": 4.0

* Las opiniones "claramente positivas" y "claramente negativas" varían según los clientes y los casos prácticos. Es posible que obtengas resultados diferentes para tu situación específica. Te recomendamos definir un umbral que funcione para ti y luego ajustarlo tras probar y verificar los resultados. Por ejemplo, puedes definir un umbral de cualquier puntuación superior a 0.25 como claramente positivo, y luego modificar el umbral de puntuación a 0.15 después de revisar tus datos y resultados y descubrir que las puntuaciones de 0.15 a 0.25 también deben considerarse positivas.

Análisis de entidades

El análisis de entidades proporciona información sobre las entidades en el texto, las que generalmente se refieren a "cosas" con nombre, como personas famosas, puntos de referencia, objetos comunes, etcétera.

En general, las entidades pueden ser de dos categorías: sustantivos propios que se asignan a entidades únicas (personas y lugares específicos, por ejemplo), o sustantivos comunes (también llamados "nominales" en el procesamiento en lenguaje natural). Una buena práctica consiste en que si algo es un sustantivo, califica como una "entidad". Las entidades se muestran como compensaciones indexadas en el texto original.

Una solicitud de análisis de entidades debe pasar un argumento encodingType para que las compensaciones mostradas puedan interpretarse correctamente.

Campos de respuesta del análisis de entidades

El análisis de entidades muestra un conjunto de entidades detectadas y los parámetros asociados con esas entidades, como el tipo de entidad, la relevancia de la entidad para el texto general y las ubicaciones en el texto que se refieren a la misma entidad.

A continuación, se muestra una respuesta analyzeEntities a la solicitud de entidad:

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

Ten en cuenta que la API de Natural Language muestra entidades para "Lawrence de Arabia" (la película) y "T.E. Lawrence" (la persona). El análisis de entidades es útil para evitar las ambigüedades en entidades similares como "Lawrence", en este caso.

A continuación, se enumeran los campos utilizados para almacenar los parámetros de la entidad:

  • type indica el tipo de esta entidad (por ejemplo, si la entidad es una persona, una ubicación, un bien de consumo, etc.). Esta información ayuda a distinguir o evitar la ambigüedad de entidades, y se puede utilizar para escribir patrones o extraer información. Por ejemplo, un valor type puede ayudar a distinguir entidades con nombres similares, como "Lawrence de Arabia", etiquetada como WORK_OF_ART (película), de "T.E. Lawrence", etiquetada como PERSON, por ejemplo. (Consulta Tipos de entidades para obtener más información).

  • metadata contiene información de origen sobre el repositorio de conocimiento de la entidad. Es posible que se expongan repositorios adicionales en el futuro.

  • mentions indica las posiciones de compensación dentro del texto donde se menciona una entidad. Esta información puede ser útil si deseas encontrar todas las menciones de la persona "Lawrence" en el texto, pero no el título de la película. También puedes usar las menciones para recopilar la lista de alias de entidades, como "Lawrence", que hacen referencia a la misma entidad "T.E. Lawrence". Una mención de entidad puede ser de dos tipos: PROPER o COMMON. Una entidad de sustantivo propio para "Lawrence de Arabia", por ejemplo, podría mencionarse directamente como título de la película, o de sustantivo común ("biografía de la película" de T.E. Lawrence).

Análisis de opiniones sobre entidades

El análisis de opiniones sobre entidades combina el análisis de entidades y el análisis de opiniones para tratar de determinar las opiniones (positivas o negativas) sobre una entidad expresadas en un texto. Las opiniones de las entidades se representan con puntuación numérica y valores de magnitud, y se determinan en cada mención de una entidad. Estas puntuaciones se agregan luego a una puntuación y magnitud generales de opiniones para una entidad.

Solicitudes de análisis de opiniones sobre entidades

Las solicitudes de análisis de opiniones sobre entidades se envían a la API de Natural Language mediante el uso del método analyzeEntitySentiment de la siguiente manera:

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

Puedes especificar un parámetro language opcional con tu solicitud que identifique el código de idioma para el texto en el parámetro content. Si no especificas un parámetro language, la API de Natural Language detecta automáticamente el idioma del contenido de tu solicitud. Para obtener información sobre los idiomas compatibles con la API de Natural Language, consulta Idiomas compatibles.

Respuestas del análisis de opiniones sobre entidades

La API de Natural Language procesa el texto dado para extraer las entidades y determinar las opiniones. Una solicitud de análisis de opiniones sobre entidades muestra una respuesta que contiene las entities encontradas en el contenido del documento, una entrada mentions por cada vez que se menciona la entidad, y los valores numéricos score y magnitude para cada mención, como se describe en Interpretar los valores del análisis de opiniones. Los valores score y magnitude de una entidad son una adición de los valores score y magnitude específicos para cada mención de la entidad. Los valores score y magnitude de una entidad pueden ser 0 si el texto presenta opiniones negativas, con un valor de magnitude de 0, o bien opiniones mixtas, con un valor de 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 un ejemplo, consulta Analizar opiniones sobre entidades.

Análisis sintáctico

La API de Natural Language proporciona un potente conjunto de herramientas para analizar texto mediante el análisis sintáctico. Para realizar un análisis sintáctico, usa el método analyzeSyntax.

El análisis sintáctico consiste en las siguientes operaciones:

  • La Extracción de oraciones divide el flujo del texto en una serie de oraciones.
  • La Asignación de token divide el flujo del texto en una serie de tokens, cada uno correspondiente a una sola palabra.
  • La API de Natural Language luego procesa los tokens y, al usar sus ubicaciones dentro de las oraciones, agrega información sintáctica a ellos.

La documentación completa sobre el conjunto de fichas sintácticas se encuentra en la guía Árboles de morfología y dependencia.

Solicitudes de análisis sintáctico

Las solicitudes de análisis sintáctico se envían a Natural Language mediante el uso del método analyzeSyntax de la siguiente manera:

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

Respuestas al análisis sintáctico

La API de Natural Language procesa el texto dado para extraer oraciones y tokens. Una solicitud de análisis sintáctico muestra una respuesta que contiene estos sentences y tokens en la siguiente forma:

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

Extracción de oraciones

Cuando realiza el análisis sintáctico, la API de Natural Language muestra un arreglo de oraciones extraídas del texto proporcionado, cada una de las cuales contiene los siguientes campos en un text superior:

  • beginOffset indica el desplazamiento del carácter (basado en cero) dentro del texto dado donde comienza la oración. Ten en cuenta que este desplazamiento se calcula con el valor encodingType que se pasó.
  • content contiene el texto completo de la oración extraída.

Por ejemplo, se recibe el siguiente elemento sentences para una solicitud de análisis sintáctico de la Dirección 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"
}

Una solicitud de análisis sintáctico a la API de Natural Language también incluirá un conjunto de tokens. Puedes utilizar la información asociada con cada token para realizar un análisis adicional de las oraciones mostradas. Puedes encontrar más información sobre estos tokens en la guía Árboles de morfología y dependencia.

Asignación de token

El método analyzeSyntax también transforma el texto en una serie de tokens que corresponden a los diferentes elementos textuales (límites de palabras) del contenido que se pasó. El proceso mediante el cual la API de Natural Language desarrolla este conjunto de tokens se conoce como Asignación de token.

Una vez que se extraen estos tokens, la API de Natural Language los procesa para determinar su categoría gramatical asociada (incluida la información morfológica) y el lema. Además, los tokens se evalúan y colocan dentro de un árbol de dependencia, lo que te permite determinar el significado sintáctico de los tokens e ilustrar la relación de los tokens entre sí y las oraciones que contienen. La información sintáctica y morfológica asociada con estos tokens es útil para comprender la estructura sintáctica de las oraciones dentro de la API de Natural Language.

A continuación, aparece el conjunto de campos de token mostrados en una respuesta JSON de análisis sintáctico:

  • text contiene los datos de texto asociados con este token, con los siguientes campos secundarios:

    • beginOffset contiene el desplazamiento de caracteres (basado en cero) dentro del texto proporcionado. Ten en cuenta que aunque las dependencias (que se describen a continuación) solo existen dentro de las oraciones, los desplazamientos de tokens se ubican dentro del texto como un todo. Ten en cuenta que este desplazamiento se calcula con el valor encodingType que se pasó.
    • content contiene el contenido textual real del texto original.
  • partOfSpeech proporciona información gramatical, incluida la información morfológica, sobre el token, como el tiempo, la persona, el número o el género. (Para obtener más información sobre estos campos, consulta la guía Árboles de morfología y dependencia).

  • lemma contiene la palabra "raíz" en la que se basa esta palabra, que te permite canonicalizar el uso de palabras en el texto. Por ejemplo, las palabras "escribir", "escribiendo", "escribió" y "escrito" están basadas en el mismo lema ("escribir"). Asimismo, las formas plural y singular se basan en lemas: "casa" y "casas" se refieren a la misma forma. (Consulta Lema [morfología]).

  • Los campos dependencyEdge identifican la relación entre las palabras en una oración que contiene un token, mediante los límites en un árbol dirigido. Esta información puede ser valiosa para la traducción, la extracción de información y el resumen. (La guía Árboles de morfología y dependencia contiene información más detallada sobre el análisis de dependencias). Cada campo dependencyEdge contiene los siguientes campos secundarios:

    • headTokenIndex proporciona el valor de índice (basado en cero) del "token principal" de este token, dentro de la oración de encapsulamiento del token. Un token sin índices superiores.
    • label proporciona el tipo de dependencia de este token en su token principal.

La siguiente cita de Franklin D. El discurso inaugural de Roosevelt producirá los siguientes tokens:

NOTA: Se quitaron todas las etiquetas partOfSpeech que contenían valores *_UNKNOWN para mayor claridad.

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

Clasificación de contenido

Puedes hacer que la API de Natural Language analice un documento y muestre una lista de categorías de contenido que se aplican al texto que se encuentra en el documento. Para clasificar el contenido en un documento, llama al método classifyText.

Aquí encontrarás la lista completa de las categorías de contenido que se muestran mediante el método classifyText.

La API de Natural Language filtra las categorías que muestra el método classifyText a fin de incluir solo las más relevantes para una solicitud. Por ejemplo, si tanto /Science como /Science/Astronomy pueden aplicarse a un documento, solo se muestra la categoría /Science/Astronomy, ya que es el resultado más específico.

Para ver un ejemplo de clasificación de contenido con la API de Natural Language, consulta Clasificar contenido.

Realizar varias operaciones en una sola solicitud

Si desea realizar un conjunto de operaciones de Natural Language dentro de una sola llamada de método, puede usar annotateText como una solicitud de API de Natural Language de uso general. Una solicitud JSON de anotación de texto es similar a una solicitud de análisis de entidades estándar, pero además requiere que se pase un conjunto de características para indicar qué operaciones realizar en el texto. Estas características se enumeran a continuación:

  • extractDocumentSentiment realiza el análisis de opiniones, como se describe en la sección Análisis de opiniones.
  • extractEntities realiza un análisis de entidades, como se describe en la sección Análisis de entidades.
  • extractSyntax indica que el texto dado debe procesarse para realizar un análisis sintáctico, como se describe en la sección Análisis sintáctico.

La siguiente solicitud llama a la API para anotar el valor features en una oración corta.

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