Masoud Amri Selbstständig

Wir zeigen, wie Mehrdeutigkeit entsteht und wie aus dem Zusammenspiel der Sentence Component und natürlichen Datentypen (Polymorphismus) das Problem der Mehrdeutigkeit in natürlicher Sprache und kontextbezogene Verhaltenweisen teilweise gelöst werden können.

Wer sich mit Entwicklern über Mehrdeutigkeit unterhält, kommt schnell auf die Polymorphie der objektorientierten Programmierung zu sprechen. Mehrdeutigkeit in Zusammenhang mit natürlicher Sprache wird in der Regel als Poesie und kunstvoll empfunden. Doch nicht nur poetische Sätze können mehrdeutig sein, auch alltägliche Konversationen enthalten oft Mehrdeutigkeiten, die wir meist unbewusst aus deren inhaltlicher Bedeutung erschließen können. Für sprachverarbeitende Anwendungen ist jedoch die Ableitung der möglichen Bedeutungen eine große Herausforderung. Diese Problematik lässt sich in Cogniology durch den Ansatz der natürlichen Datentypen und des sprachnatürlichen Polymorphismus teilweise lösen.

Bevor wir uns mit Mehrdeutigkeit, Polymorphie und natürlichen Datentypen beschäftigen, werfen wir kurz einen Blick auf die Vorgehensweise. Da wir es bei der Entwicklung der Digitalassistenten mit natürlichen Sprachen zu tun haben, ist die Denkweise, wie wir die Anforderungen der Anwender aufnehmen, sie analysieren, Lösungen dafür finden und diese umsetzen, besonders am Anfang komplex und anders als der Umgang mit typischen herkömmlichen Anwendungen. Beispielsweise beziehen sich die User Stories im Zusammenhang mit natürlichen Sprachen nicht auf die Benutzeroberflächen, sondern auf Szenarien, die sich in einer Konversation abspielen bzw. auf Sätze, die in einer Konversation eine Rolle spielen. Eine systematische Vorgehensweise kann uns dabei helfen, solche Projekte qualitativ abzuarbeiten. Ein solcher systematischer Vorgang ist uns aus den 90er-Jahren unter dem Begriff „Softwareentwicklungszyklus“ bekannt. Dabei wird die Softwareentwicklung in einem inkrementellen Zyklus, bestehend aus den Schritten Analyse, Design, Implementierung, Testen und Lieferung, durchgeführt, um die Komplexität der Softwareentwicklung signifikant zu reduzieren. Dieser Vorgang wird heute nicht mehr explizit praktiziert, jedoch implizit von jedem Java-Entwickler durchgeführt, indem er die User Stories in Klassen, Objekte und Logik umsetzt. Wir werden in diesem Artikel diese Schritte durchlaufen, wobei der Fokus mehr auf Analyse, Design und Implementierung liegt.

Artikelserie

  • Teil 1: Sentence Component
  • Teil 2: Polymorphismus in natürlicher Sprache
  • Teil 3: Natural Language Interface
  • Teil 4: Matching und Sentence Analysis
  • Teil 5: Lernen und Verstehen
  • Teil 6: Programmierung in natürlicher Sprache (NLP)

In unserem letzten Artikel haben wir uns mit der Realisierung eines Digitalassistenten für Zahnarztpraxen beschäftigt. Im ersten Schritt (Analyse) haben wir ein Szenario für die Konversation zwischen Zahnarzt, Zahnarzthelferin und den Patienten vorgestellt. Wir haben festgestellt, dass der Satz „Ich könnte nächsten Montagmorgen kommen – ginge das?“ für die Terminvereinbarung relevant ist.

Im zweiten Schritt (Design) haben wir den Satz genauer unter die Lupe genommen und festgestellt, dass „nächsten Montagmorgen“ ein Datum ist. Im letzten Schritt (Implementierung) haben wir eine Sentence Component mit der Annotation @Sentence („Ich komme an irgendeinem Datum.“) entwickelt. Dabei haben wir einen Teil des in der Annotation enthaltenen Satzes als Parameter definiert und ihm als natürlichen Datentyp die Kategorie Datum zugewiesen.

Den vollständigen Artikel lesen Sie in der Ausgabe:

Java Magazin 12.17 - "Ordnung im Containerchaos"

Alle Infos zum Heft
579817649Polymorphismus – Ein Problem die für computerisierte Spracherkennung?
X
- Gib Deinen Standort ein -
- or -