Analisando dados sobre a demanda com a API do Analyze

Use a API Analyze para processar documentos de texto por meio do pipeline de enriquecimento do serviço Discovery sem armazenar dados dos documentos de origem.

A API do Analyze é suportada apenas por implementações do plano Enterprise e implementações instaladas

Esta abordagem é ideal para fins de automação de negócios. Por exemplo, se você deseja classificar emails, você pode usar a API Analyze para chamar sincronicamente Discovery para obter uma classificação do e-mail. Em seguida, você pode usar a saída dessa classificação em sua lógica de negócios.

A API de análise suporta somente documentos JSON.

Ao analisar um documento com a API, você indica como deseja que o documento seja processado, especificando a coleção para associar com a análise. O documento não é armazenado na coleção. Em vez disso, as configurações de configuração da coleção são aplicadas no documento. Por exemplo, se você deseja encontrar referências de entidade em um documento, execute a API do Analisar contra uma coleção onde o enriquecimento de Entidades é aplicado. A análise de documentos resultantes identifica qualquer menção de entidade no documento.

Envie uma solicitação para análise com relação a apenas uma coleção configurada com os enriquecimentos que você deseja usar para analisar seu documento on demand. Lembre-se, os documentos na coleção não são significativos. São os enriquecimentos definidos para a coleção que importam. Se você enviar solicitações para várias coletas, então vários modelos serão iniciados ao mesmo tempo, o que pode causar falhas de solicitação.

Os enriquecimentos a seguir são suportados na API de Análise:

Para obter a lista completa dos enriquecimentos compatíveis com cada idioma, consulte Suporte a idiomas.

Para obter mais informações, consulte o Discovery Referência de API.

Exemplo de análise

Os dados que você enviar para análise devem estar no formato JSON. O texto deve ser especificado como uma string; ele não pode ser especificado como uma matriz. Por exemplo, o arquivo JSON a seguir contém uma citação no campo Quote que você deseja analisar para encontrar qualquer menção de palavra-chave no 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"
}

Você sabe o nome de uma coleção em seu projeto em que o enriquecimento Palavras-chave em Inglês é configurado para ser aplicado em documentos na coleção. Você pode usar a API para listar suas coleções para encontrar o ID associado com a coleção que você procura pelo nome.

Depois de obter o ID da coleção, inclua-o na solicitação POST que você enviar para aplicar as configurações de configuração da coleção em seu arquivo JSON. Por exemplo, a solicitação a seguir envia o fragmento JSON em um arquivo denominado favorites2.json para análise de palavra-chave.

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"'

O resultado contém uma lista de palavras-chave que foram reconhecidas na citação.

{
  "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": []
}

Não é possível enviar uma matriz de objetos como entrada. Por exemplo, você pode querer analisar várias citações, portanto, sua fonte pode parecer a seguir:

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

Se sim, quebre cada objeto em um arquivo separado e analise cada arquivo individualmente.

Analisando um trecho de texto

É possível enviar texto para análise ao especificar o texto no formato JSON usando uma sintaxe como esta:

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

A solicitação de exemplo a seguir mostra como analisar texto que você especifica na solicitação, não que você passe em um arquivo 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."}'

A resposta pode ser como a seguir:

{
  "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" : [ ]
}

Analisando conteúdo HTML

É possível analisar HTML ao enviar o html no formato JSON usando uma sintaxe como esta:

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

A solicitação de exemplo a seguir mostra como analisar texto que você especifica na solicitação, não que você passe em um arquivo físico.

A coleção para a qual a solicitação é feita usa os enriquecimentos a seguir, o que significa que esses enriquecimentos são aplicados ao conteúdo enviado com a solicitação da API:

  • Entidades
  • Palavras-chave
  • Table Understanding

Exemplo de solicitação

O corpo da solicitação contém form-data com o nome file. O valor é o conteúdo JSON a ser analisado.

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."
}'

Resultados

Os resultados mostram a saída das Entidades, Palavras-chave e enriquecimentos da Tabela Entenda sobre os campos text e html que foram submetidos.

{
    "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": []
}

Analisar limites da API

A tabela a seguir mostra o tamanho do arquivo e os limites de uso para a API do Analyze.

Limites que são aplicados ao uso da API do Analyze
Tipo de implementação Limite de tamanho do arquivo Limite de coleções simultâneas Consultas simultâneas por limite de coleta
Cloud Pak for Data instalada Ilimitada Ilimitada Ilimitada
Implementação gerenciada do plano corporativo 50 KB 5 5

Uso da API Analyze a partir de Discovery Cartucho para IBM Cloud Pak for Data afeta o uso de licença. Para obter mais informações, consulte informações sobre licença.

Monitoramento do uso IBM Cloud Pak for DataIBM Software Hub

Você pode monitorar o uso da API do Analyze a partir da página Uso da API.

A página Uso da API está disponível apenas a partir de implementações instaladas. Para planos Enterprise, as informações de chamadas de método de análise são combinadas com informações de chamadas de método de consulta e são relatadas como parte das métricas de consulta.

Para acessar a página de uso da API, abra a página Projetos, selecione Uso de dados e, em seguida, Uso da API.

Data de início
A data de início do período de monitoramento da chamada API.
Data de encerramento
A data de encerramento do período de monitoramento da chamada API.
Total chamada de trinta dias
Número de chamadas para a API do Analyze no intervalo de tempo de 30 dias que é indicado pela Data de início e Data de término. O intervalo de tempo é determinado pelo cálculo do período de tempo consecutivo com o maior número de chamadas de API. A janela de 30 dias é atualizada como o intervalo de tempo com o maior número de alterações de chamadas de API.

O uso da API não é exibido até algum tempo após o início do monitoramento do uso da API. Um atraso na desbanca do número total final do 30-day call total pode ocorrer, mesmo que o período de 30 dias que está listado inclua a data atual.


  1. Para que o enriquecimento de entendimento de tabela produza quaisquer resultados, a entrada deve conter um elemento HTML <table> para analisar ↩︎