Aspectos básicos de la API Natural Language

En este documento se explican los conceptos básicos para usar la API Cloud Natural Language. En esta guía conceptual se describen los tipos de solicitudes que puedes enviar a la API Natural Language, cómo crear esas solicitudes y cómo gestionar sus respuestas. Recomendamos que todos los usuarios de la API Natural Language lean esta guía y uno de los tutoriales asociados antes de empezar a usar la API.

Funciones de Natural Language

La API Natural Language tiene varios métodos para realizar análisis y anotaciones en el texto. Cada nivel de análisis proporciona información valiosa para comprender el lenguaje. Estos métodos son los siguientes:

  • El análisis de sentimientos inspecciona el texto proporcionado e identifica la opinión emocional predominante en él, sobre todo para determinar si la actitud del autor es positiva, negativa o neutra. El análisis de sentimiento se realiza mediante el método analyzeSentiment.

  • Análisis de entidades: inspecciona el texto proporcionado para detectar entidades conocidas (nombres propios, como personajes públicos, monumentos, etc.). Nombres comunes, como restaurante, estadio, etc.) y devuelve información sobre esas entidades. El análisis de entidades se realiza con el método analyzeEntities.

  • El análisis de sentimiento de entidades inspecciona el texto proporcionado para buscar entidades conocidas (nombres propios y nombres comunes), devuelve información sobre esas entidades e identifica la opinión emocional predominante de la entidad en el texto, especialmente para determinar si la actitud del autor hacia la entidad es positiva, negativa o neutra. El análisis de entidades se realiza con el método analyzeEntitySentiment.

  • El análisis sintáctico extrae información lingüística, desglosando el texto proporcionado en una serie de frases y tokens (generalmente, límites de palabras) y proporcionando un análisis más detallado de esos tokens. El análisis sintáctico se realiza con el método analyzeSyntax.

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

Cada llamada a la API también detecta y devuelve el idioma, si el llamante no lo especifica en la solicitud inicial.

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

Pruébalo

Si es la primera vez que utilizas Google Cloud, crea una cuenta para evaluar el rendimiento de Natural Language en situaciones reales. Los nuevos clientes también reciben 300 USD en crédito gratuito para ejecutar, probar y desplegar cargas de trabajo.

Probar Natural Language gratis

Solicitudes básicas de lenguaje natural

La API Natural Language es una API REST que consta de solicitudes y respuestas JSON. A continuación, se muestra una solicitud JSON de análisis de entidades de lenguaje natural sencilla:

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

A continuación se explican estos campos:

  • 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 admitidos por la API Natural Language, consulta Idiomas admitidos. Si se usan idiomas no admitidos, se devolverá un error en la respuesta JSON.
    • content o gcsContentUri, que contienen el texto que se va a evaluar. Si se pasa content, este texto se incluye directamente en la solicitud JSON (como se muestra arriba). Si se envía gcsContentUri, el campo debe contener un URI que apunte a contenido de texto en Google Cloud Storage.
  • encodingType (obligatorio) el esquema de codificación en el que se deben calcular los desplazamientos de caracteres devueltos en el texto, que debe coincidir con la codificación del texto proporcionado. Si no se define este parámetro, no se producirá ningún error, pero todos los desplazamientos se definirán como -1.

Especificar el contenido de texto

Cuando envías una solicitud a la API Natural Language, especificas el texto que quieres procesar de una de estas dos formas:

  • Pasando el texto directamente en un campo content.
  • Enviar un URI de Google Cloud Storage en un campo gcsContentUri.

En cualquier caso, debes asegurarte de no superar los límites de contenido. Tenga en cuenta que estos límites de contenido se miden en bytes, no en caracteres, por lo que la longitud de los caracteres depende de la codificación del texto.

La solicitud que se muestra a continuación hace referencia a un archivo de Google Cloud Storage que contiene el discurso de Gettysburg:

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

Análisis de sentimiento

El análisis de sentimiento intenta determinar la actitud general (positiva o negativa) que se expresa en el texto. El sentimiento se representa con valores numéricos score y magnitude.

Campos de respuesta del análisis de sentimiento

A continuación, se muestra un ejemplo de respuesta de analyzeSentiment a la arenga 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 el sentimiento general del documento, que consta de los siguientes campos:
    • score de la opinión varía entre -1.0 (negativa) y 1.0 (positiva) y corresponde a la tendencia emocional general del texto.
    • magnitude indica la intensidad general de la emoción (tanto positiva como negativa) en el texto proporcionado, entre 0.0 y +inf. A diferencia de score, magnitude no se normaliza para documentSentiment; cada expresión de emoción en el texto (tanto positiva como negativa) contribuye a la magnitude del texto (por lo que los bloques de texto más largos pueden tener magnitudes mayores).
  • language_code contiene el idioma del documento, que se ha indicado en la solicitud inicial o se ha detectado automáticamente si no se ha especificado.
  • language_supported contiene un valor booleano para identificar si el idioma se admite oficialmente.
  • sentences contiene una lista de las frases extraídas del documento original, que incluye lo siguiente:
    • sentiment contiene los valores de sentimiento a nivel de frase asociados a cada frase, que contienen score entre -1.0 (negativo) y 1.0 (positivo), así como valores de magnitude entre 0.0 y 1.0. Ten en cuenta que magnitude de sentences se normaliza.

Un valor de sentimiento de 0.2 en el discurso de Gettysburg indica que es ligeramente positivo, mientras que el valor de magnitud de 3.6 indica que es un documento relativamente emotivo, teniendo en cuenta su pequeño tamaño (aproximadamente un párrafo). Ten en cuenta que la primera frase del discurso de Gettysburg contiene una score positiva muy alta de 0.8.

Interpretar los valores del análisis de sentimiento

La puntuación del sentimiento de un documento indica la emoción general del documento. La magnitud del sentimiento de un documento indica la cantidad de contenido emocional que contiene el documento. Este valor suele ser proporcional a la longitud del documento.

Es importante tener en cuenta que la API Natural Language indica las diferencias entre las emociones positivas y negativas de un documento, pero no identifica emociones positivas y negativas específicas. Por ejemplo, "enfadado" y "triste" se consideran emociones negativas. Sin embargo, cuando la API Natural Language analiza texto que se considera "enfadado" o "triste", la respuesta solo indica que el sentimiento del texto es negativo, no "triste" o "enfadado".

Un documento con una puntuación neutra (alrededor de 0.0) puede indicar que el documento tiene un nivel de emoción bajo o que contiene emociones mixtas, con valores positivos y negativos altos que se anulan entre sí. Por lo general, puede usar magnitudevalores para distinguir estos casos, ya que los documentos verdaderamente neutrales tendrán un valor magnitudebajo, mientras que los documentos mixtos tendrán valores de mayor magnitud.

Cuando compares documentos entre sí (sobre todo si tienen longitudes diferentes), asegúrate de usar los valores de magnitude para calibrar las puntuaciones, ya que pueden ayudarte a medir la cantidad pertinente de contenido emocional.

En el siguiente gráfico se muestran algunos valores de ejemplo y cómo interpretarlos:

Opinión Valores de muestra
Claramente positivo* "score": 0,8, "magnitude": 3,0
Claramente negativo* "score": -0,6, "magnitude": 4,0
Neutral "score": 0,1, "magnitude": 0,0
Mixto "score": 0,0, "magnitude": 4,0

* El sentimiento "claramente positivo" y "claramente negativo" varía en función de los casos prácticos y los clientes. Es posible que obtengas resultados diferentes en tu caso concreto. Te recomendamos que definas un umbral que te resulte útil y que lo ajustes después de probar y verificar los resultados. Por ejemplo, puedes definir un umbral de cualquier puntuación superior a 0,25 como claramente positiva y, a continuación, modificar el umbral de puntuación a 0,15 después de revisar tus datos y resultados y determinar que las puntuaciones de 0,15 a 0,25 también deben considerarse positivas.

Análisis de entidades

Análisis de entidades proporciona información sobre las entidades del texto, que generalmente se refieren a "cosas" con nombre, como personajes famosos, monumentos, objetos comunes, etc.

Las entidades se dividen en dos categorías: nombres propios que se asignan a entidades únicas (personas, lugares, etc. específicos) o nombres comunes (también llamados "nominales" en el procesamiento del lenguaje natural). Una buena práctica general es que, si algo es un sustantivo, se considera una "entidad". Las entidades se devuelven como desplazamientos indexados en el texto original.

Una solicitud de análisis de entidades debe incluir un argumento encodingType para que los desplazamientos devueltos se puedan interpretar correctamente.

Campos de respuesta del análisis de entidades

El análisis de entidades devuelve un conjunto de entidades detectadas y los parámetros asociados a esas entidades, como el tipo de entidad, la relevancia de la entidad en el texto general y las ubicaciones del texto que hacen referencia 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 Natural Language devuelve entidades de "Lawrence de Arabia" (la película) y "T.E. Lawrence" (la persona). El análisis de entidades es útil para desambiguar entidades similares, como "Lawrence" en este caso.

A continuación, se indican los campos que se usan 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 desambiguar entidades y se puede usar para escribir patrones o extraer información. Por ejemplo, un valor de 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. Para obtener más información, consulta Tipos de entidades.

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

  • mentions indican las posiciones de desplazamiento dentro del texto en las que se menciona una entidad. Esta información puede ser útil si quieres encontrar todas las menciones de la persona "Lawrence" en el texto, pero no el título de la película. También puedes usar menciones para recoger 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. Por ejemplo, la entidad de nombre propio "Lawrence de Arabia" se puede mencionar directamente como título de la película o como nombre común ("biografía cinematográfica" de T.E. Lawrence).

Análisis de sentimiento de entidades

El análisis de sentimiento de entidades combina el análisis de entidades y el análisis de sentimiento, y trata de determinar el sentimiento (positivo o negativo) expresado sobre las entidades en el texto. El sentimiento de la entidad se representa mediante valores numéricos de puntuación y magnitud, y se determina para cada mención de una entidad. Esas puntuaciones se agregan para obtener una puntuación y una magnitud generales del sentimiento de una entidad.

Solicitudes de análisis de sentimiento de entidades

Las solicitudes de análisis de sentimiento de entidades se envían a la API Natural Language mediante el método analyzeEntitySentiment, que tiene el siguiente 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"
}

Puede especificar un parámetro language opcional en su solicitud que identifique el código de idioma del texto del parámetro content. Si no especifica ningún parámetro language, la API Natural Language detectará automáticamente el idioma del contenido de su solicitud. Para obtener información sobre los idiomas admitidos por la API Natural Language, consulta Idiomas admitidos.

Respuestas de análisis de sentimiento de entidades

La API Natural Language procesa el texto proporcionado para extraer las entidades y determinar el sentimiento. Una solicitud de análisis de sentimiento de entidades devuelve una respuesta que contiene las entities que se han encontrado en el contenido del documento, una entrada mentions por cada vez que se menciona la entidad y los valores numéricos score y magnitude de cada mención, tal como se describe en Interpretar los valores del análisis de sentimiento. Los valores generales de score y magnitude de una entidad son una agregación de los valores específicos de score y magnitude de cada mención de la entidad. Los valores score y magnitude de una entidad pueden ser 0 si el sentimiento del texto es bajo, lo que da como resultado un valor magnitude de 0, o si el sentimiento es mixto, lo que da como resultado un valor 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 opinión de entidades.

Análisis sintáctico

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

El análisis sintáctico consta de las siguientes operaciones:

  • La extracción de oraciones divide el flujo de texto en una serie de oraciones.
  • La tokenización divide el flujo de texto en una serie de tokens, y cada token suele corresponder a una sola palabra.
  • A continuación, la API Natural Language procesa los tokens y, mediante sus ubicaciones en las frases, añade información sintáctica a los tokens.

Puedes consultar la documentación completa sobre el conjunto de tokens sintácticos en la guía Árboles de morfología y de gramática de dependencias.

Solicitudes de análisis sintáctico

Las solicitudes de análisis sintáctico se envían a la API Natural Language mediante el método analyzeSyntax con el siguiente 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"
}

Respuestas de análisis sintáctico

La API Natural Language procesa el texto proporcionado para extraer frases y tokens. Una solicitud de análisis sintáctico devuelve una respuesta que contiene sentences y tokens con el siguiente formato:

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

Extracción de frases

Al realizar un análisis sintáctico, la API Natural Language devuelve una matriz de frases extraídas del texto proporcionado. Cada frase contiene los siguientes campos en un elemento text principal:

  • beginOffset que indica el desplazamiento de caracteres (basado en cero) dentro del texto dado donde empieza la frase. Ten en cuenta que este desfase se calcula mediante el encodingType proporcionado.
  • content que contiene el texto completo de la frase extraída.

Por ejemplo, el siguiente elemento sentences se recibe en una solicitud de análisis sintáctico del 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"
}

Una solicitud de análisis sintáctico a la API Natural Language también incluirá un conjunto de tokens. Puede usar la información asociada a cada token para analizar más a fondo las frases devueltas. Puedes consultar más información sobre estos tokens en la guía Árboles de morfología y de gramática de dependencias.

Tokenización

El método analyzeSyntax también transforma el texto en una serie de tokens, que se corresponden con los diferentes elementos textuales (límites de palabras) del contenido proporcionado. El proceso por el que la API Natural Language desarrolla este conjunto de tokens se conoce como tokenización.

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

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

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

    • beginOffset contiene el desplazamiento de caracteres (empezando por cero) en el texto proporcionado. Ten en cuenta que, aunque las dependencias (descritas más abajo) solo existen en las frases, los desplazamientos de los tokens se colocan en el texto en su conjunto. Ten en cuenta que este desfase se calcula mediante el valor de encodingType.
    • 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, el género, etc. del token. (Para obtener información más completa sobre estos campos, consulta la guía Morfología y árboles de dependencias).

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

  • Los campos dependencyEdge identifican la relación entre las palabras de la frase que contiene un token mediante aristas 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 de gramática de dependencias 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 en la frase que lo contiene. Un token sin padre se indexa a sí mismo.
    • label proporciona el tipo de dependencia de este token en su token principal.

La siguiente cita de Franklin D. El discurso de investidura de Roosevelt generará los siguientes tokens:

NOTA: Se han quitado todas las etiquetas partOfSpeech que contienen valores *_UNKNOWN para que quede más claro.

 "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 Natural Language analice un documento y devuelva una lista de categorías de contenido que se apliquen al texto del documento. Para clasificar el contenido de un documento, llama al método classifyText.

Puedes consultar la lista completa de categorías de contenido devueltas por el método classifyText aquí.

La API Natural Language filtra las categorías devueltas por el método classifyText para incluir solo las categorías más relevantes para una solicitud. Por ejemplo, si /Science y /Science/Astronomy se aplican a un documento, solo se devuelve 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 Natural Language, consulte Clasificación de contenido.

Realizar varias operaciones en una sola solicitud

Si quieres realizar un conjunto de operaciones de lenguaje natural en una sola llamada de método, puedes usar annotateText como solicitud de API de lenguaje natural de uso general. Una solicitud JSON de anotación de texto es similar a una solicitud de análisis de entidades estándar, pero también requiere un conjunto de funciones para indicar las operaciones que se deben realizar en el texto. Estas funciones se indican a continuación:

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

La siguiente solicitud llama a la API para anotar features en una frase corta.

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