Zum Inhalt

NLP - API Tester

Einleitung

Der NLP-API Tester macht es einfach, HTTP-Anfragen an die NLP-Modelle zu senden und die Antwort auszuwerten. HTTP-Anfragen können durch Einfügen von Variablen dynamisch gemacht werden. Sicherheit und Authentifizierung werden vollständig unterstützt. Sie können HTTP-Antworten visualisieren, verschönern und inspizieren.

Voraussetzungen

Um ein NLP-Modell testen zu können muss dies heruntergeladen sein. Sollte kein Modell installiert sein erhalten Sie folgende Meldung:

1
2
3
4
5
{
  "code": 471,
  "description": "No Sentence-Detector model loaded for language [en]",
  "status": "false"
}

Sie benötigen folgende Modelle pro Sprache als Minimum-Konfiguration, um eine vollwertige NLP-Antwort zu erhalten:

  • Sentence-Detector model
  • Tokenizer model
  • POS-Tagger model

API Anfrage senden

Gehen Sie wie folgt vor, um eine Anfrage an den NLP-Webdienst zu senden:

  1. Klicken Sie in der Navigationsleiste auf Natürliche SprachverarbeitungNLP ModelleNLP API Tester
  2. Wählen Sie nun aus der Komponente API-Aufrufe die POST-Methode nlp/opennlp/query/ aus. Wählen Sie nun die Sprache der Nachricht aus und geben eine Nachricht an.
  3. Klicken Sie nun auf Abschicken. Bei einer erfolgreichen Antwort wird als Status Status: 200 SUCCESS angezeigt. Im Panel Inhalt können Sie nun die Antwort inspizieren. Im Reiter Headers werden Ihnen die Header-Informationen der HTTP-Antwort angezeigt.

Hinweis

Wird der Parameter Sprache nicht angegeben, wird mithilfe des Sprach-Detektor-Modell versucht die Sprache zu erkennen. Wenn das Sprach-Detektor-Modell nicht installiert wurde, wird Englisch als Standardsprache verwendet.

Erläuterung der API Antwort

Die HTTP-Antwort des NLP-Webdienst ist im JSON-Format notiert. Die JSON-Antwort ist abhängig von den installierten NLP-Modellen. Beispielsweise ist das Feld für namedEntities leer, wenn kein NameFinder-Modell installiert und geladen wurde. Dies ist auch dann der Fall, wenn kein Ergebnis gefunden wurde.

Response-Inhalt (Beispieldaten):

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
{
  "sentences": [
    {
      "chunks": [
        {
          "start": 0,
          "end": 1,
          "label": "INTJ",
          "body": "Hello"
        }
      ],
      "namedEntities": [],
      "tokens": [
        {
          "probability": 0,
          "tag": ".",
          "body": "."
        },
        {
          "probability": 0,
          "tag": "UH",
          "body": "Hello"
        }
      ],
      "parses": "[(TOP (. Hello.))]",
      "body": "Hello."
    },
    {
      "chunks": [
        {
          "start": 0,
          "end": 2,
          "label": "NP",
          "body": "My name"
        },
        {
          "start": 2,
          "end": 3,
          "label": "VP",
          "body": "is"
        },
        {
          "start": 3,
          "end": 4,
          "label": "NP",
          "body": "John"
        }
      ],
      "namedEntities": [
        {
          "start": 3,
          "end": 4,
          "label": "person",
          "body": "John"
        }
      ],
      "tokens": [
        {
          "probability": 0,
          "tag": "VBZ",
          "body": "is"
        },
        {
          "probability": 0,
          "tag": "NNP",
          "body": "John"
        },
        {
          "probability": 0,
          "tag": ".",
          "body": "."
        },
        {
          "probability": 0,
          "tag": "PRP$",
          "body": "My"
        },
        {
          "probability": 0,
          "tag": "NN",
          "body": "name"
        }
      ],
      "parses": "[(TOP (S (NP (PRP$ My) (NN name)) (VP (VBZ is) (NP (NNP John.)))))]",
      "body": "My name is John."
    },
    {
      "chunks": [
        {
          "start": 0,
          "end": 1,
          "label": "ADVP",
          "body": "How"
        },
        {
          "start": 2,
          "end": 3,
          "label": "NP",
          "body": "you"
        }
      ],
      "namedEntities": [],
      "tokens": [
        {
          "probability": 0,
          "tag": ".",
          "body": "?"
        },
        {
          "probability": 0,
          "tag": "WRB",
          "body": "How"
        },
        {
          "probability": 0,
          "tag": "VBP",
          "body": "are"
        },
        {
          "probability": 0,
          "tag": "PRP",
          "body": "you"
        }
      ],
      "parses": "[(TOP (SBAR (WHADVP (WRB How)) (S (VP (VBP are))) (. you?)))]",
      "body": "How are you?"
    }
  ],
  "predictedLanguage": "en"
}

Die Beispiel JSON-Antwort enthält folgenden Abschnitte:

  • Vorhergesagte Sprache (z.B. en für Englisch oder de für Deutsch)
  • Chunker Informationen
  • Token Informationen
  • Parser Informationen
  • Benannter Entitäten (z.B. John als Person)

Fehlerbehebung

NLP-Tester zeigt keine Ergebnisse an

Schauen Sie in der Browser-Konsole nach, ob folgenden Fehler protokolliert wird:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://demo.bbp.local/bbp/rest/api/1.0/..../nlp/opennlp/query/. (Reason: CORS request did not succeed).

Cross-Origin Resource Sharing (CORS) ist ein Mechanismus, der zusätzliche HTTP-Header verwendet, um einem Browser mitzuteilen, dass eine Webanwendung (BBP), die auf einem Ursprungsort (Domäne) läuft, die Berechtigung hat, auf ausgewählte Ressourcen von einem Server mit einem anderen Ursprungsort zuzugreifen. Standardmäßig ist nur der gleiche Ursprungsort erlaubt (Sicherheits-Feature).

Sie können den Fehler beheben indem Sie folgende Parameter den der Konfigurationsdatei bbp.properties auf den Server-Port überprüfen / anpassen. Der Server-Port (für Windows und Linux ist standardmäßig auf 55550 gesetzt).

1
System.Webservices.WebAddress

Zusätzlich sollten Sie auch die Ports in den folgende Parametern überprüfen:

1
2
3
System.Widget.SSLPort
System.Websocket.SSLPort
System.InstantMessenger.FileStore.WebAddress

Referenz: POS - Englisch

POS / Tag Beschreibung
CC Coordinating conjunction
CD Cardinal number
DT Determiner
EX Existential there
FW Foreign word
IN Preposition or subordinating conjunction
JJ Adjective
JJR “Adjective, comparative”
JJS “Adjective, superlative”
LS List item marker
MD Modal
NN “Noun, singular or mass”
NNS “Noun, plural”
NNP “Proper noun, singular”
NNPS “Proper noun, plural”
PDT Predeterminer
POS Possessive ending
PRP Personal pronoun
PRP$ Possessive pronoun
RB Adverb
RBR “Adverb, comparative”
RBS “Adverb, superlative”
RP Particle
SYM Symbol
TO to
UH Interjection
VB “Verb, base form”
VBD “Verb, past tense”
VBG “Verb, gerund or present participle”
VBN “Verb, past participle”
VBP “Verb, non-3rd person singular present”
VBZ “Verb, 3rd person singular present”
WDT Wh-determiner
WP Wh-pronoun
WP$ Possessive wh-pronoun
WRB Wh-adverb

Referenz: POS - Deutsch

POS / TAG Beschreibung
ADJA attributives Adjektiv
ADJD adverbiales oder prädikatives Adjektiv
ADV Adverb
APPR Präposition; Zirkumposition links
APPRART Präposition mit Artikel
APPO Postposition
APZR Zirkumposition rechts
ART bestimmter oder unbestimmter Artikel
CARD Kardinalzahl
FM Fremdsprachliches Material
ITJ Interjektion
KOUI unterordnende Konjunktion mit ``zu’‘ und Infinitiv
KOUS unterordnende Konjunktion mit Satz
KON nebenordnende Konjunktion
KOKOM Vergleichskonjunktion
NN normales Nomen
NE Eigennamen
PDS substituierendes Demonstrativpronomen
PDAT attribuierendes Demonstrativpronomen
PIS substituierendes Indefinitpronomen
PIAT attribuierendes Indefinitpronomen ohne Determiner
PIDAT attribuierendes Indefinitpronomen mit Determiner
PPER irreflexives Personalpronomen
PPOSS substituierendes Possessivpronomen
PPOSAT attribuierendes Possessivpronomen
PRELS substituierendes Relativpronomen
PRELAT attribuierendes Relativpronomen
PRF reflexives Personalpronomen
PWS substituierendes Interrogativpronomen
PWAT attribuierendes Interrogativpronomen
PWAV adverbiales Interrogativ- oder Relativpronomen
PAV Pronominaladverb
PTKZU ``zu’‘ vor Infinitiv
PTKNEG Negationspartikel
PTKVZ abgetrennter Verbzusatz
PTKANT Antwortpartikel
PTKA Partikel bei Adjektiv oder Adverb
TRUNC Kompositions-Erstglied
VVFIN “finites Verb, voll”
VVIMP “Imperativ, voll”
VVINF “Infinitiv, voll”
VVIZU “Infinitiv mit ``zu’‘, voll”
VVPP “Partizip Perfekt, voll”
VAFIN “finites Verb, aux”
VAIMP “Imperativ, aux”
VAINF “Infinitiv, aux”
VAPP “Partizip Perfekt, aux”
VMFIN “finites Verb, modal”
VMINF “Infinitiv, modal”
VMPP “Partizip Perfekt, modal”
XY “Nichtwort, Sonderzeichen enthaltend”
”$ “,Komma
$. Satzbeendende Interpunktion
$( sonstige Satzzeichen; satzintern

Referenz: Vorhersagbare Sprachen (Codes)

  • af / afr (Afrikaans)
  • ar / ara (Arabic)
  • ast / ast (Asturian)
  • az / aze (Azerbaijani)
  • ba / bak (Bashkir)
  • be / bel (Belarusian)
  • bn / ben (Bengali)
  • bs / bos (Bosnian)
  • br / bre (Breton)
  • br / bul (Bulgarian)
  • ca / cat (Catalan)
  • ceb / ceb (Cebuano)
  • cs / ces (Czech)
  • ce / che (Chechen)
  • cmn / cmn (Mandarin Chinese)
  • cy / cym (Welsh)
  • dk / dan (Danish)
  • de / deu (German)
  • et / ekk (Standard Estonian)
  • el / ell (Greek, Modern)
  • en / eng (English)
  • eo / epo (Esperanto)
  • et / est (Estonian)
  • eu / eus (Basque)
  • fo / fao (Faroese)
  • fa / fas (Persian)
  • fi / fin (Finnish)
  • fr / fra (French)
  • fy / fry (Western Frisian)
  • ga / gle (Irish)
  • gl / glg (Galician)
  • ch / gsw (Swiss German)
  • gu / guj (Gujarati)
  • he / heb (Hebrew)
  • hi / hin (Hindi)
  • hr / hrv (Croatian)
  • hu / hun (Hungarian)
  • hy / hye (Armenian)
  • id / ind (Indonesian)
  • is / isl (Icelandic)
  • it / ita (Italian)
  • jv / jav (Javanese)
  • jp / jpn (Japanese)
  • ca / kan (Kannada)
  • ka / kat (Georgian)
  • kk / kaz (Kazakh)
  • ky / kir (Kirghiz)
  • ko / kor (Korean)
  • la / lat (Latin)
  • lv / lav (Latvian)
  • li / lim (Limburgan)
  • lt / lit (Lithuanian)
  • lb / ltz (Luxembourgish)
  • lv / lvs (Standard Latvian)
  • ml / mal (Malayalam)
  • mr / mar (Marathi)
  • min / min (Minangkabau)
  • mk / mkd (Macedonian)
  • mt / mlt (Maltese)
  • mn / mon (Mongolian)
  • mi / mri (Maori)
  • ms / msa (Malay)
  • nan / nan (Min Nan Chinese)
  • de / nds (Low German)
  • ne / nep (Nepali)
  • nl / nld (Dutch)
  • nn / nno (Norwegian Nynorsk)
  • nb / nob (Norwegian bokmål)
  • oc / oci (Occitan)
  • pa / pan (Panjabi)
  • fa / pes (Iranian Persian)
  • mg / plt (Plateau Malagasy)
  • pa / pnb (Western Panjabi)
  • pl / pol (Polish)
  • pt / por (Portuguese)
  • ps / pus (Pushto)
  • ro / ron (Romanian)
  • ru / rus (Russian)
  • sa / san (Sanskrit)
  • si / sin (Sinhala)
  • sk / slk (Slovak)
  • sl / slv (Slovenian)
  • so / som (Somali)
  • es / spa (Spanish)
  • sq / sqi (Albanian)
  • sr / srp (Serbian)
  • su / sun (Sundanese)
  • sw / swa (Swahili)
  • sv / swe (Swedish)
  • ta / tam (Tamil)
  • tt / tat (Tatar)
  • te / tel (Telugu)
  • tg / tgk (Tajik)
  • tl / tgl (Tagalog)
  • th / tha (Thai)
  • tr / tur (Turkish)
  • uk / ukr (Ukrainian)
  • ur / urd (Urdu)
  • uz / uzb (Uzbek)
  • vi / vie (Vietnamese)
  • vo / vol (Volapük)
  • war / war (Waray)
  • zu / zul (Zulu)