Erstellen und Testen eines benutzerdefinierten OpenNLP-Wörterbuchs

Überblick

Apache OpenNLP ist eine quelloffene Java-Bibliothek für die Verarbeitung natürlicher Sprache. Sie bietet eine API für Anwendungsfälle wie Named Entity Recognition, Sentence Detection, POS Tagging, Tokenization und Wörterbücher.

In diesem Beitrag schauen wir uns an, wie man ein OpenNLP Wörterbuch erstellt und auf der Business Bot Plattform einbindet und verwendet.

Zielgruppe

Dieser Beitrag wurde für Anfänger erstellt, um ihnen den Umgang mit der OpenNLP-Bibliothek näher zu bringen und sie so beim Aufbau von Textverarbeitungsdiensten mit dieser Bibliothek zu unterstützen.

Voraussetzungen

Für diesen Beitrag wird vorausgesetzt, dass die Leser über Vorkenntnisse der OpenNLP-Bibliothek verfügt. Zum Testen des OpenNLP Wörterbuchs kann die kostenlose Business Bot Plattform – Community Edition herruntergeladen werden.

OpenNLP Wörterbuch

Was ist ein OpenNLP Wörterbuch?

Dies ist ein wörterbuchbasierter Namensfinder, der den Text nach Namen innerhalb eines Wörterbuchs durchsucht. Ein Wörterbücher können beispielsweise für interne Abkürzungen, Straßennamen und Unternehmensnamen sowie Orte erstellt werden. Standardmäßig werden von Apache keine Wörterbücher mit der OpenNLP-Bibliothek bereitgestellt. Es gibt jedoch die Option fertige Wörterbücher von Drittanbieter herrunterzuladen.

Warum ein benutzerdefiniertes Wörterbuch?

Die vorgefertigen Wörterbücher stehen möglicherweise für eine gewünschte Sprache nicht zur Verfügung, können wichtige Entitäten nicht erkennen oder stehen für eine gewünschte Domäne nicht gut genug. Dies sind die typischen Gründe für die Erstellung von individuellen Wörterbüchern.

Erstellen des OpenNLP Wörterbuchs?

Der folgende Abschnitt demonstriert, wie Sie die OpenNLP DictionaryNameFinder-Klasse verwenden können, um einen Named Entity Recognizer zu erstellen. Dazu wird ein Wörterbuch erstellt, das Städtenamen in der USA beinhaltet.

Erstellen Sie dafür eine neue Datei (z.B. cities.dict). Die Datei-Endung dict steht für Dictionary. Das Wörterbuch ist im XML-Format aufgebaut. In der XML-Datei kann angegeben werden, ob Groß-/Kleinschreibung von der OpenNLP-Klasse beachtet werden soll.

<?xml version="1.0" encoding="UTF-8"?>
<dictionary case_sensitive="false">

 <entry>
  <token>Washington</token>
</entry>


<entry>
  <token>Waterloo</token>
</entry>

<entry>
  <token>Watford</token>
  <token>City</token>
</entry>

</dictionary>

Im Beispiel, haben wir die drei Städte Washington, Waterloo und Watford City hinzugefügt. Jeder Eintrag beginnt mit <Entry> und endet mit </Entry>. Zwischen diesen Tags wird der Tag <Token> definiert. Ein Token ist die kleinste Einheit. Damit die Dictionary-Klasse den Entry Watford City findet, müssen die zwei Wörter in zwei separate Token, also <token>Watford</token> und <token>City</token> definiert werden. Ein einzelner Token wie beispielsweise <token>Watford</token> ist fehlerhaft und führt dazu, das die find()-Methode von OpenNLP den Eintrag nicht findet, da die Klasse den gesamten Such-String, also Watford City in die drei einzelnen Token zerlegt.

Testen des OpenNLP Wörterbuchs auf der Business Bot Plattform

Um ein eigenes Wörterbuch hinzuzufügen gehen Sie wie folgt vor:

  1. Melden Sie sich an der Business Bot Plattform an (Anleitung zur Installation finden Sie hier)
  2. Klicken Sie in der Navigationsleiste auf Natürliche SprachverarbeitungNLP ModelleEigenes Wörterbuch hinzufügen
  3. Wählen Sie nun einen Namen, Typ und Sprache des Wörterbuchs aus und geben eine kurze Beschreibung an.
  4. Laden Sie nun im rechten Panel die Wörterbuch-Datei per Drag & Drop hoch und überprüfen anschließend die Ausgabe im Panel (Die Datei darf nicht größer als 100 MB sein und muss den Dateityp *.dict haben). Klicken Sie anschließend auf Abschicken um das Wörterbuch zu registrieren.

Nachdem Sie das Wörterbuch auf der Plattform hinzugefügt haben, können Sie den NLP-API Tester verwenden, um zu überprüfen ob Einträge im Wörterbuch gefunden werden. Der NLP-API Tester macht es einfach, HTTP-Anfragen an die NLP-Modelle und Wörterbücher zu senden und die Antwort auszuwerten. HTTP-Anfragen können durch Einfügen von Variablen dynamisch gemacht werden.

Das Ergebnis der HTTP-Anfrage zeigt, das die Stadt Waterloo in der Anfrage „Where do you live in Waterloo ?“ gefunden wurde.

{
"sentences": [
{
"chunks": [
{
"start": 0,
"end": 1,
"label": "ADVP",
"body": "Where"
},
{
"start": 2,
"end": 3,
"label": "NP",
"body": "you"
},
{
"start": 3,
"end": 4,
"label": "VP",
"body": "live"
},
{
"start": 4,
"end": 5,
"label": "PP",
"body": "in"
},
{
"start": 5,
"end": 6,
"label": "NP",
"body": "Waterloo"
}
],
"namedEntities": [],
"tokens": [
{
"probability": 0,
"tag": "WRB",
"body": "Where"
},
{
"probability": 0,
"tag": ".",
"body": "?"
},
{
"probability": 0,
"tag": "VB",
"body": "live"
},
{
"probability": 0,
"tag": "IN",
"body": "in"
},
{
"probability": 0,
"tag": "VBP",
"body": "do"
},
{
"probability": 0,
"tag": "PRP",
"body": "you"
},
{
"probability": 0,
"tag": "NNP",
"body": "Waterloo"
}
],
"body": "Where do you live in Waterloo ?",
"dictionaries": [
{
"probability": 1,
"name": "Waterloo",
"type": "Location"
}
]
}
],
"predictedLanguage": "en"
}

Die Plattform ermöglicht es Ihnen beliebig viele Wörterbücher hinzuzufügen, so dass Orte, Namen, Abkürzungen und vielen mehr in der Benutzeranfrage erkannt werden können. Wenn Sie bereits eine Liste mit Begriffen haben (z.B. Im Excel oder in einer Datenbank) und diese in das OpenNLP XML-Format tranformieren möchten, können wir Ihnen gerne mit unserem automatisieren Software-Tool helfen.

Fazit

Sie können die Benutzererfahrung steigern, wenn der Chatbot versteht was der Benutzer möchte. Wörterbücher helfen dabei den Kontext der Benutzeranfrage besser zu verstehen und eine passende Antwort zu formulieren.

Möchten Sie Chatbots oder NLP in Ihrem Unternehmen einsetzen? Kontaktieren Sie uns, wir unterstützen Sie gerne rund um das Thema NLP-basierte Chatbots im Unternehmensumfeld.

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert