Erstellung einer Erklärungskomponente für einen informationellen medizinischen Chatbot mittels Argumentationsbäumen im Fachpraktikum "Natural Language Processing, Information Extraction und Retrieval" der FernUniversität in Hagen
Bei der vorliegenden Anwendung handelt es sich um eine Java Spring Boot Anwendung, die einen Prototypen für eine Erklärungskomponente darstellt. Dabei werden Argumentationsbäume im AIF-Format eingelesen und verarbeitet.
Darüber hinaus wird eine grafische Oberfläche angeboten, um Auswirkungen der Argumentationsbäume testen zu können und ggf. Anpassungen an einem Attribut vorzunehmen.
Ferner biete die Anwendung einen Aufruf über die Kommandozeile.
- Java 18
- Apache Jena Framework
- Spring Boot Framework
- Argument Interchange Format
- Ressource Description Framework
- JavaFX
- Representational State Transfer
Unter dem Package view findet man die Klasse MainShower. Führt man die Klasse aus, so öffnet sich ein Dialog, der alle hinterlegten Argumentationsbäume anzeigt.
Hier kann man einen Argumentationsbaum aus der Liste auswählen und sich anzeigen lassen.
Zusätzlich ist es möglich die ArgStrength, durch Mausklick auf die einzelnen Prämissen anzupassen, falls der Baum mindestens zwei RA-Nodes über einen CA-Node verbunden hat. Nur dann kommt es im Dialog zur Auswertung dieser Eigenschaft.
Wenn man auf den Button Dialog starten klickt, dann öffnet sich ein Dialog, bei dem der User gefragt wird, ob die jeweilige Prämisse der Arguementationsbäumen eintreffen, um so auf eine Conclusion zu schließen und eine Diagnose zu erstellen.
In der Spring Boot Anwendung wurden Microservices implementiert, worüber z.B. ein möglicher Chatbot auf die Erklärungskomponente per REST-Schnittstelle miteinander kommunizieren können. Dabei erfolgt der Datenaustausch über JSON.
Die Spring Boot Applikation wird über die Klasse SpringBootStarter im package fp1589 gestartet. Dabei wird eine Tomcat-Instanz unter dem Port 8080 gestartet.
Mit dem Befehl settree muss zuerst ein Baum auswählt werden:
http://localhost:8080/settree?tree=Argbaum1
Der Befehl getpremises gibt die Prämissen des ausgewählten Baumes im Json-Format zurück.
http://localhost:8080/getpremises
Der Befehl getconclusions zeigt die Konklusion des ausgewählten Baumes an. Dabei ist dem Parameter inodes per PUT-Request im JSON-Format die Premises zu übergeben, die erfüllt sind. Das Format kann dem Rückgabeergebnis der Methode "getpremises" entnommen werden.
http://localhost:8080/getconclusions
Getestet werden können diese drei Mathoden per curl wie folgt:
curl localhost:8080/settree?tree=Argbaumx (Nummer des Argbaums festlegen)
curl localhost:8080/getpremises
Das Ergebnis dieses Aufrufs kann anschließend in eine txt-Datei gespeichert werden, z.B. t1.txt
Die Premises, die nicht erfüllt, sofern vorhanden, sind in der Datei zu entfernen.
Abschließend bekommt man die conclusion(s) mittels
curl localhost:8080/getconclusions -X PUT -d @t1.txt -H "Content-Type: application/json"
Die Klasse FPController kann mit Angabe des zu verwendenen Argumentationsbaums aufgerufen werden (Argbaum1 - 9). Ohne Angabe wird der Argbaum1 verwendet. Es erfolgt der Dialog via Kommandozeile. Hierbei werden die premises nach erfüllt oder nicht erüllt abgefragt. Ferner kann über die Eingabe "warum" der Grund für die Abfrage des jeweiligen Premises erfragt werden.