Bedarfsgesteuerte Analyse von Daten mit der Analyse-API

Verwenden Sie die Analyse-API, um Textdokumente über die Aufbereitungspipeline des Discovery-Service zu verarbeiten, ohne Daten aus den Quellendokumenten zu speichern.

Die Analyse-API wird nur von Unternehmensplanimplementierungen und installierten Implementierungen unterstützt.

Dieser Ansatz ist ideal für die Geschäftsautomatisierung. Wenn Sie beispielsweise E-Mails klassifizieren möchten, können Sie die Analyse-API verwenden, um Discovery synchron aufzurufen und eine Klassifizierung der E-Mail abzurufen. Anschließend können Sie die Ausgabe dieser Klassifikation in Ihrer Geschäftslogik verwenden.

Die Analyse-API unterstützt nur JSON-Dokumente.

Wenn Sie ein Dokument mit der API analysieren, geben Sie an, wie das Dokument verarbeitet werden soll, indem Sie die Objektgruppe angeben, die der Analyse zugeordnet werden soll. Das Dokument wird nicht in der Objektgruppe gespeichert. Stattdessen werden die Konfigurationseinstellungen der Objektgruppe auf das Dokument angewendet. Wenn Sie beispielsweise Entitätsreferenzen in einem Dokument suchen wollen, führen Sie die Analyse-API für eine Sammlung aus, in der die Aufbereitung Entitäten angewendet wird. Die resultierende Dokumentanalyse identifiziert alle Entitätserwähnungen im Dokument.

Übergeben Sie eine Analyseanforderung für nur eine Sammlung, die mit den Aufbereitungen konfiguriert ist, die Sie für die bedarfsgesteuerte Analyse Ihres Dokuments verwenden wollen. Denken Sie daran, dass die Dokumente in der Sammlung nicht von Bedeutung sind. Es sind die Aufbereitungen, die für die betreffende Sammlung definiert sind. Wenn Sie Anforderungen an mehrere Sammlungen übergeben, werden mehrere Modelle gleichzeitig eingeleitet, was zu Anforderungsfehlern führen kann.

Von der Analyse-API werden folgende Aufbereitungen unterstützt:

Eine vollständige Liste der in jeder Sprache unterstützten Erweiterungen finden Sie unter Sprachunterstützung.

Weitere Informationen finden Sie in der API-Referenz Discovery.

Analysebeispiel

Die Daten, die Sie zur Analyse übergeben, müssen im JSON-Format vorliegen. Der Text muss als Zeichenfolge angegeben werden; er kann nicht als Array angegeben werden. Die folgende JSON-Datei enthält beispielsweise ein Anführungszeichen im Feld Quote, das Sie analysieren möchten, um alle Erwähnungen von Schlüsselwörtern im Text zu finden.

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

Sie kennen den Namen einer Objektgruppe in Ihrem Projekt, in dem die Aufbereitung Schlüsselwörter für die Anwendung auf Dokumente in der Objektgruppe konfiguriert ist. Sie können die API verwenden, um Ihre Sammlungen aufzulisten, um die ID zu suchen, die der Sammlung zugeordnet ist, nach deren Namen Sie suchen.

Nachdem Sie die Objektgruppen-ID abgerufen haben, schließen Sie sie in die POST-Anforderung ein, die Sie übergeben, um die Konfigurationseinstellungen aus der Objektgruppe auf Ihre JSON-Datei anzuwenden. Die folgende Anforderung übergibt beispielsweise das JSON-Snippet in einer Datei mit dem Namen favorites2.json für die Schlüsselwortanalyse.

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

Das Ergebnis enthält eine Liste der Schlüsselwörter, die im Anführungszeichen erkannt wurden.

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

Sie können kein Array von Objekten als Eingabe übergeben. Sie könnten beispielsweise mehrere Anführungszeichen analysieren, sodass Ihre Quelle wie folgt aussehen könnte:

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

Ist dies der Fall, teilen Sie jedes Objekt in eine separate Datei auf und analysieren Sie jede Datei einzeln.

Textausschnitt analysieren

Sie können Text zur Analyse übergeben, wenn Sie den Text im JSON-Format angeben, indem Sie die folgende Syntax verwenden:

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

Die folgende Beispielanforderung zeigt, wie Text analysiert wird, den Sie in der Anforderung angeben, und nicht, dass Sie in einer physischen Datei übergeben.

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

Die Antwort könnte wie folgt aussehen.

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

HTML-Inhalt analysieren

Sie können HTML analysieren, wenn Sie HTML im JSON-Format übergeben, indem Sie Syntax wie die folgende verwenden:

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

Die folgende Beispielanforderung zeigt, wie Text analysiert wird, den Sie in der Anforderung angeben, und nicht, dass Sie in einer physischen Datei übergeben.

Die Sammlung, an die die Anfrage gestellt wird, verwendet die folgenden Aufbereitungen, d. h., diese Aufbereitungen werden auf den Inhalt angewendet, den Sie mit der API-Anforderung übergeben:

  • Entitäten
  • Suchbegriffe
  • Table Understanding

Anforderungsbeispiel

Der Hauptteil der Anforderung enthält form-data mit dem Namen file. Der Wert ist der zu analysierende JSON-Inhalt.

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

Ergebnisse

Die Ergebnisse zeigen die Ausgabe der Aufbereitungen "Entities", "Keywords" und "Table Understanding" für die übergebenen Felder text und html.

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

API-Grenzwerte analysieren

Die folgende Tabelle zeigt die Dateigröße und Nutzungsbeschränkungen für die Analyse-API.

Auf die Analyse-API-Nutzung angewendete Grenzwerte
Bereitstellungstyp Dateigrößenbegrenzung Grenzwert für gleichzeitige Erfassungen Gleichzeitige Abfragen pro Erfassungsgrenzwert
Cloud Pak for Data-installierte Bereitstellung Uneingeschränkt Uneingeschränkt Uneingeschränkt
Enterprise Plan Managed Deployment 50 KB 5 5

Die Verwendung der Analyse-API von Discovery Cartridge für IBM Cloud Pak for Data wirkt sich auf die Lizenznutzung aus. Weitere Informationen finden Sie unter Lizenzinformationen.

Überwachung der Nutzung IBM Cloud Pak for DataIBM Software Hub

Sie können die Nutzung der Analyse-API auf der Seite API-Nutzung überwachen.

Die Seite API-Nutzung ist nur in installierten Implementierungen verfügbar. Bei Enterprise-Plänen wird die Analyse von Methodenaufrufinformationen mit Abfragemethodenaufrufinformationen kombiniert und als Teil der Abfragemetriken gemeldet.

Um auf die Seite "API-Nutzung" zuzugreifen, öffnen Sie die Seite "Projekte ", wählen Sie "Datennutzung " und dann "API-Nutzung " aus.

Startdatum
Das Startdatum des Überwachungszeitraums für API-Aufrufe.
Enddatum
Das Enddatum des Überwachungszeitraums für API-Aufrufe.
30-Tage-Anruf insgesamt
Anzahl der Aufrufe der Analyse-API im 30-Tage-Zeitintervall, das durch Startdatum und Enddatum angegeben wird. Das Zeitintervall wird durch Berechnung des aufeinanderfolgenden Zeitraums mit der höchsten Anzahl von API-Aufrufen bestimmt. Das 30-Tage-Fenster wird als Zeitintervall mit der höchsten Anzahl an API-Aufrufänderungen aktualisiert.

Die API-Nutzung wird erst einige Zeit nach Beginn der API-Nutzungsüberwachung angezeigt. Es kann zu einer Verzögerung bei der Anzeige der endgültigen Gesamtzahl der 30-Tage-Aufrufe kommen, selbst wenn der aufgelistete 30-Tage-Zeitraum das aktuelle Datum enthält.


  1. Damit die Tabellenverständigung Ergebnisse liefert, muss die Eingabe ein HTML-Element <table> enthalten, das analysiert werden kann. ↩︎