Análisis de datos bajo demanda con la API de análisis

Utilice la API de análisis para procesar documentos de texto a través de la interconexión de enriquecimiento del servicio Discovery sin almacenar datos de los documentos de origen.

La API de análisis solo está soportada por despliegues de plan de empresa y despliegues instalados.

Este enfoque es ideal para fines de automatización empresarial. Por ejemplo, si desea clasificar correos electrónicos, puede utilizar la API de análisis para llamar de forma síncrona a Discovery para obtener una clasificación del correo electrónico. A continuación, puede utilizar la salida de esa clasificación en la lógica empresarial.

La API de análisis solo da soporte a documentos JSON.

Cuando analiza un documento con la API, indica cómo desea que se procese el documento especificando la colección que se debe asociar con el análisis. El documento no se almacena en la colección. En su lugar, los valores de configuración de la colección se aplican al documento. Por ejemplo, si desea encontrar referencias de entidad en un documento, ejecute la API Analyze en una colección en la que se aplique el enriquecimiento Entidades. El análisis de documento resultante identifica las menciones de entidad en el documento.

Envíe una solicitud de análisis sólo para una colección que esté configurada con los enriquecimientos que desea utilizar para analizar el documento a petición. Recuerde que los documentos de la colección no son significativos. Son los enriquecimientos que se definen para la colección los que importan. Si envía solicitudes a varias colecciones, se inician varios modelos al mismo tiempo, lo que puede provocar errores de solicitud.

Los siguientes enriquecimientos reciben soporte en la API de análisis:

Para ver la lista completa de los enriquecimientos que se admiten en cada idioma, consulte Asistencia de idiomas.

Para obtener más información, consulte la Discovery .

Ejemplo de análisis

Los datos que envíe para su análisis deben estar en formato JSON. El texto debe especificarse como una serie; no puede especificarse como una matriz. Por ejemplo, el siguiente archivo JSON contiene una comilla en el campo Quote que desea analizar para buscar cualquier mención de palabra clave en el texto.

{
  "Author": "Jane Austen",
  "Book": "Pride and Prejudice",
  "Quote": "From this day you must be a stranger to one of your parents. Your mother will never see you again if you do not marry Mr. Collins, and I will never see you again if you do.",
  "Year": "1813/01/01",
  "Subject":"Parental love",
  "Speaker": "Mr. Bennett",
  "url": "https://www.gutenberg.org/files/1342/1342-h/1342-h.htm#link2HCH0020"
}

Conoce el nombre de una colección del proyecto donde se ha configurado el enriquecimiento Palabras clave para que se aplique a los documentos de la colección. Puede utilizar la API para listar las colecciones para buscar el ID asociado con la colección que busca por nombre.

Después de obtener el ID de colección, inclúyalo en la solicitud POST que envíe para aplicar los valores de configuración de la colección al archivo JSON. Por ejemplo, la solicitud siguiente envía el fragmento de código JSON en un archivo denominado favorites2.json para el análisis de palabras clave.

curl --location --request POST \
'https://my-cloud-pak-for-data-cluster/discovery/zen-wd/instances/{instance-id}/api/v2/ \
projects/{project-id}/collections/{collection-id}/analyze?version=2020-08-30' \
--header 'Authorization: Bearer ...' \
--form 'file=@"/quotations/favorites2.json"'

El resultado contiene una lista de palabras clave que se han reconocido entre comillas.

{
  "result": {
    "enriched_Quote": [
      {
        "keywords": [
          {
            "text": "day",
            "mentions": [
              {
                "text": "day",
                "location": {
                  "begin": 10,
                  "end": 13
                }
              }
            ],
            "relevance": 0.673739
          },
          {
            "text": "stranger",
            "mentions": [
              {
                "text": "stranger",
                "location": {
                  "begin": 28,
                  "end": 36
                }
              }
            ],
            "relevance": 0.596757
          },
          {
            "text": "parents",
            "mentions": [
              {
                "text": "parents",
                "location": {
                  "begin": 52,
                  "end": 59
                }
              }
            ],
            "relevance": 0.568336
          },
          {
            "text": "mother",
            "mentions": [
              {
                "text": "mother",
                "location": {
                  "begin": 66,
                  "end": 72
                }
              }
            ],
            "relevance": 0.755562
          },
          {
            "text": "Mr. Collins",
            "mentions": [
              {
                "text": "Mr. Collins",
                "location": {
                  "begin": 118,
                  "end": 129
                }
              }
            ],
            "relevance": 0.945891
          }
        ]
      }
    ],
    "url": "https://www.gutenberg.org/files/1342/1342-h/1342-h.htm#link2HCH0020",
    "Subject": "Parental love",
    "Year": "1813/01/01",
    "Book": "Pride and Prejudice",
    "Author": "Jane Austen",
    "Quote": [
      "From this day you must be a stranger to one of your parents. Your mother will never see you again if you do not marry Mr. Collins, and I will never see you again if you do."
    ],
    "metadata": {
      "name": "favorites2.json"
    },
    "Speaker": "Mr. Bennett"
  },
  "notices": []
}

No puede enviar una matriz de objetos como entrada. Por ejemplo, es posible que desee analizar varias citas, por lo que el origen puede tener el siguiente aspecto:

{
  "quotations":[
    {
      "Author": "Jane Austen",
      "Book": "Sense and Sensibility",
      "Quote": "Is there a felicity in the world superior to this?",
      "Year": "1811/01/01",
      "Subject": "Nature",
      "Speaker": "Marianne Dashwood",
      "url": "https://www.gutenberg.org/files/1342/1342-h/1342-h.htm#link2HCH0059"
    },
    {
      "Author": "Jane Austen",
      "Book": "Persuasion",
      "Quote": "A man does not recover from such a devotion of the heart to such a woman. He ought not; he does not.",
      "Subject": "Romantic love",
      "Year": "1818/01/01",
      "Speaker": "Captain Wentworth",
      "url": "https://www.gutenberg.org/files/105/105-h/105-h.htm#chap20"
    }
  ]
}

Si es así, divida cada objeto en un archivo independiente y analice cada archivo individualmente.

Análisis de un fragmento de texto

Puede enviar texto para su análisis cuando especifique el texto en formato JSON utilizando una sintaxis como la siguiente:

{
"text":"The text that you want to analyze."
}

La siguiente solicitud de ejemplo muestra cómo analizar el texto que especifique en la solicitud, no que pase en un archivo físico.

curl --location --request POST \
'https://my-cloud-pak-for-data-cluster/discovery/zen-wd/instances/{instance-id}/api/v2/ \
projects/{project-id}/collections/{collection-id}/analyze?version=2020-08-30' \
--header 'Authorization: Bearer ...' \
--form 'file={"text": "ISO 9000 is a standard."}'

La respuesta puede ser similar a la siguiente.

{
  "result" : {
    "enriched_text" : [ {
      "entities" : [ {
        "text" : "ISO 9000",
        "type" : "my_iso_pattern",
        "mentions" : [ {
          "text" : "ISO 9000",
          "confidence" : 1.0,
          "location" : {
            "begin" : 0,
            "end" : 8
          }
        } ],
        "model_name" : "My ISO Pattern"
      }, {
        "text" : "9000",
        "type" : "Number",
        "mentions" : [ {
          "text" : "9000",
          "confidence" : 0.8,
          "location" : {
            "begin" : 4,
            "end" : 8
          }
        } ],
        "model_name" : "natural_language_understanding"
      } ]
    } ],
    "metadata" : { },
    "text" : [ "ISO 9000 is a standard." ]
  },
  "notices" : [ ]
}

Análisis de contenido HTML

Puede analizar HTML cuando envíe el html en formato JSON utilizando una sintaxis como la siguiente:

{
"html":"<p>My html content.</p>"
}

La siguiente solicitud de ejemplo muestra cómo analizar el texto que especifique en la solicitud, no que pase en un archivo físico.

La colección a la que se realiza la solicitud utiliza los siguientes enriquecimientos, lo que significa que estos enriquecimientos se aplican al contenido que envía con la solicitud de API:

  • Entidades
  • Palabras clave
  • Comprensión de tablas

Ejemplo de solicitud

El cuerpo de la solicitud contiene form-data con el nombre file. El valor es el contenido JSON que se va a analizar.

curl --location --request POST \
'https://cpd-abc.example.com/discovery/abc-wd/instances/1671204318684041/api/v2/projects/d457fcd9-a4ce-4637-a340-33123b5cbe2c/collections/2d47dbcc-64c7-84e9-0000-01851bb9d998/analyze?version=2020-08-30' \
--header 'Authorization: Bearer ...' \
--form 'file={
  "html":"<html><head>This is my html file</head><body><p>My file contains a table.</p><table><tbody><tr><th>Holiday</th><th>Popular greeting</th></tr><tr><td>Christmas</td><td>Merry Christma!s</td></tr></tbody></table></body></html>",
  "text":"This is a sentence that contains key words, such as George Washington and Boston, MA."
}'

Resultado

Los resultados muestran la salida de los enriquecimientos Entidades, Palabras clave y Comprensión de tablas en los campos text y html que se han enviado.

{
    "result": {
        "text": [
            "This is a sentence that contains key words, such as George Washington and Boston, MA."
        ],
        "enriched_text": [
            {
                "keywords": [
                    {
                        "text": "George Washington",
                        "mentions": [
                            {
                                "text": "George Washington",
                                "location": {
                                    "begin": 52,
                                    "end": 69
                                }
                            }
                        ],
                        "relevance": 0.952591
                    },
                    {
                        "text": "Boston",
                        "mentions": [
                            {
                                "text": "Boston",
                                "location": {
                                    "begin": 74,
                                    "end": 80
                                }
                            }
                        ],
                        "relevance": 0.578079
                    },
                    {
                        "text": "MA",
                        "mentions": [
                            {
                                "text": "MA",
                                "location": {
                                    "begin": 82,
                                    "end": 84
                                }
                            }
                        ],
                        "relevance": 0.146905
                    }
                ],
                "entities": [
                    {
                        "text": "George Washington",
                        "type": "Location",
                        "mentions": [
                            {
                                "text": "George Washington",
                                "confidence": 0.54922265,
                                "location": {
                                    "begin": 52,
                                    "end": 69
                                }
                            }
                        ],
                        "model_name": "natural_language_understanding"
                    },
                    {
                        "text": "Boston, MA",
                        "type": "Location",
                        "mentions": [
                            {
                                "text": "Boston, MA",
                                "confidence": 0.66049105,
                                "location": {
                                    "begin": 74,
                                    "end": 84
                                }
                            }
                        ],
                        "model_name": "natural_language_understanding"
                    }
                ]
            }
        ],
        "metadata": {},
        "enriched_html": [
            {
                "tables": [
                    {
                        "body_cells": [
                            {}
                        ],
                        "location": {
                            "begin": 99,
                            "end": 183
                        },
                        "row_headers": [],
                        "key_value_pairs": [],
                        "section_title": {},
                        "contexts": [],
                        "text": "Holiday Popular greeting Christmas Merry Christmas!",
                        "table_headers": [],
                        "title": {},
                        "column_headers": []
                    }
                ]
            }
        ],
        "html": [
            "<html><head>This is my html file</head><body><p>My file contains a table.</p><table><tbody><tr><th>Holiday</th><th>Popular greeting</th></tr><tr><td>Christmas</td><td>Merry Christmas!</td></tr></tbody></table></body></html>"
        ]
    },
    "notices": []
}

Analizar límites de API

La tabla siguiente muestra el tamaño de archivo y los límites de uso para la API de análisis.

Límites que se aplican al uso de la API de análisis
Tipo de despliegue Límite de tamaño de archivo Límite de recopilaciones simultáneas Consultas simultáneas por límite de recopilación
Despliegue instalado de Cloud Pak for Data Ilimitado Ilimitado Ilimitado
Despliegue gestionado del plan empresarial 50 KB 5 5

El uso de la API de análisis de Discovery Cartridge for IBM Cloud Pak for Data afecta al uso de licencias. Para obtener más información, consulte la información de licencia.

Supervisión del uso IBM Cloud Pak for DataIBM Software Hub

Puede supervisar el uso de la API de análisis desde la página Uso de API.

La página Uso de API sólo está disponible en los despliegues instalados. Para los planes de empresa, la información de llamada de método de análisis se combina con la información de llamada de método de consulta y se notifica como parte de las métricas de consulta.

Para acceder a la página de uso de la API, abra la página Proyectos, seleccione Uso de datos y, a continuación, Uso de la API.

Fecha de inicio
Fecha de inicio del periodo de supervisión de llamadas de API.
Fecha de finalización
Fecha de finalización del periodo de supervisión de llamadas de API.
Total de llamadas de treinta días
Número de llamadas a la API de análisis en el intervalo de tiempo de 30 días indicado por la Fecha de inicio y la Fecha de finalización. El intervalo de tiempo se determina calculando el período de tiempo consecutivo con el mayor número de llamadas API. El periodo de 30 días se actualiza a medida que cambia el intervalo de tiempo con el mayor número de llamadas API.

El uso de la API no se muestra hasta algún tiempo después de que comience la supervisión del uso de la API. Puede producirse un retardo en la visualización del número total final del total de llamadas de 30 días, incluso si el periodo de 30 días que se lista incluye la fecha actual.


  1. Para que el enriquecimiento de comprensión de tabla produzca resultados, la entrada debe contener un elemento HTML <table> para analizar. ↩︎