[PYTHON] Wie man ein Dialogsystem für Anfänger erstellt

Einführung

Hallo. Dies ist Hironsan. Seit März-April haben Line, Facebook, Microsoft und andere Plattformen für die Bot-Entwicklung angekündigt. Eine explosive Anzahl von Bots ist erschienen. Selbst wenn es nur auf Facebook Messenger beschränkt ist mehr als 11.000 Bot sind ab Juli 2016 in Betriebtun.

Die meisten dieser Bot sind jedoch einfache Frage-und-Antwort-Systeme, keine interaktiven Systeme. Damit ist es nicht möglich, allmählich auf den Geschmack des Benutzers zu hören.

Daher möchte ich dieses Mal ein ** Restaurant-Suchdialogsystem ** erstellen, das die Geschichte des Dialogs berücksichtigt und es schließlich in Bot integriert. Als fertiges Bild können Sie so etwas wie die folgende Animation erstellen. bot2.mov.gif

Erstellen Sie es insbesondere in den folgenden Schritten.

Neben der Suche nach Restaurants können Sie auch chatten. Durch die Erstellung dieser Bot soll verstanden werden, wie ein grundlegendes Interaktionssystem erstellt wird.

Zielgruppe

Vorbereitung

Erstellen einer Python-Umgebung

Das diesmal erstellte Dialogsystem wird mit dem Python3-System erstellt. Installieren Sie es daher nach dem Herunterladen der Python3-Serie von der offiziellen Website.

Download Python

Praktischer Repository-Klon

Wir werden von nun an ein praktisches Repository vorbereiten. Bitte bereiten Sie sich wie folgt vor.

  1. https://github.com/Hironsan/HotPepperGourmetDialogue
  2. Klicken Sie oben rechts auf die Schaltfläche "Gabelung", um dieses Repository zu verzweigen (= zu kopieren).
  3. Verwenden Sie den Git-Klon, um das gegabelte Repository zu Ihrem Terminal zu holen und die Zweige zu wechseln. Jetzt können Sie loslegen.
$ git clone YOUR_FORK_REPOSITORY.git
$ cd HotPepperGourmetDialogue
$ git checkout -b tutorial origin/tutorial

Legen Sie außerdem PYTHONPATH direkt im Verzeichnis HotPepperGourmetDialogue für den Modulimport fest. Fügen Sie kein doppeltes Anführungszeichen "" hinzu.

$ export PYTHONPATH=`pwd`

Führen Sie in der Eingabeaufforderungsumgebung Folgendes aus.

$ set PYTHONPATH=%CD%

Aufbau einer virtuellen Umgebung

Für Virtualenv

Führen Sie für Virtualenv den folgenden Befehl aus, um die virtuelle Umgebung zu erstellen und zu aktivieren.

$ pip install virtualenv
$ virtualenv env
$ source env/bin/activate

Für Conda

Führen Sie für Conda den folgenden Befehl aus, um die virtuelle Umgebung zu erstellen und zu aktivieren.

$ conda create -n env python
$ source activate env   #Für die Eingabeaufforderung aktivieren Sie env

API-Schlüssel abrufen

Erhalten Sie die folgenden zwei API-Schlüssel zur Verwendung im Interaktionssystem für die Restaurantsuche.

Die Docomo-Chat-Konversations-API wird zum Chatten mit Bot und die HotPepper-Gourmet-Such-API zum Suchen nach Restaurants verwendet. Als Leitfaden dauert es ungefähr 5 Minuten für den API-Schlüssel von HotPepper und ungefähr 1 Tag für die API des Docomo-Chat-Dialogs.

Erstellen Sie einen Bot, bis Sie ihn erhalten.

Erstellen Sie ein Slack-Konto

Dieses Mal werden wir einen Bot auf Slack erstellen. Wenn Sie kein Slack-Konto haben, erstellen Sie daher eines der folgenden. https://slack.com/

Bitte setzen Sie den Teamnamen usw. auf Yoshina.

Erstellen Sie ein Slack Bot-Konto

Lassen Sie uns zunächst ein Slack Bot-Konto erstellen.

https://my.slack.com/services/new/bot

Es wird davon ausgegangen, dass das Team Slack bereits geöffnet und als autorisierter Benutzer angemeldet ist. Wenn Sie in diesem Zustand den obigen Link öffnen, wird der Bildschirm zur Erstellung des Bot-Kontos geöffnet. Geben Sie den Benutzernamen Ihres Bot-Kontos in das angezeigte Formular ein und klicken Sie auf "Bot-Integration hinzufügen". スクリーンショット 2016-08-21 22.10.05.png

Klicken Sie auf "Bot-Integration hinzufügen" und ein neues Formular wird angezeigt. Notieren Sie sich das darin enthaltene "API-Token", da es im Bot verwendet wird, der später erstellt wird. スクリーンショット 2016-08-21 22.25.23.png

Sie können den Namen und das Symbolbild des mit "Symbol anpassen" oder "Name anpassen" erstellten Bots ändern. Speichern Sie Ihre Änderungen mit "Integration speichern". スクリーンショット 2016-08-21 22.26.46.png

Erstellen wir einen privaten Kanal und registrieren den erstellten Bot anschließend für den Test. Speichern Sie den Inhalt nach dem Einstellen wie unten mit "Kanal erstellen". スクリーンショット 2016-08-21 22.30.18.png

Damit sind die Slack-Einstellungen abgeschlossen. Beginnen wir nun mit der Erstellung eines Bots.

Erster Bot

Jetzt ist es Zeit, den Bot zu erstellen. Verwenden Sie die folgende Python-Bibliothek. lins05/slackbot

Die Installation erfolgt mit pip.

$ pip install slackbot

Versuchen Sie, Slack Bot zu starten

Wechseln Sie zunächst in das Verzeichnis für den Bot.

$ cd application

Beschreiben Sie nach dem Wechseln in das Anwendungsverzeichnis die Bot-Einstellungen in "slackbot_settings.py".

# -*- coding: utf-8 -*-
import os


API_TOKEN = os.environ.get('SLACK_API_KEY', '')
 
default_reply = "Suimasen. Das Wort Wakarimasen"

Hier liest API_TOKEN den zuvor angegebenen Wert aus der Umgebungsvariablen und verwendet ihn. Führen Sie daher den folgenden Befehl aus und legen Sie den Wert fest, den Sie zuvor in der Umgebungsvariablen notiert haben.

$ export SLACK_API_KEY=YOUR_API_KEY  #Für die Eingabeaufforderung: set SLACK_API_KEY=YOUR_API_KEY

Schreiben Sie als Nächstes den Code zum Starten des Bot in "slack_bot.py".

# -*- coding: utf-8 -*-
from slackbot.bot import Bot


def main():
    bot = Bot()
    bot.run()
 
if __name__ == "__main__":
    main()

Jetzt ist es Zeit, Bot zu starten.

$ python slack_bot.py

Reagieren Sie auf bestimmte Wörter in Erwähnungen oder auf Wörter, die auf dem Kanal veröffentlicht wurden. スクリーンショット 2016-08-21 23.34.15.png

Die hier gegebene Antwort ist auf das Standard-Plug-In der Slackbot-Bibliothek zurückzuführen. Dies allein ist nicht lecker, deshalb werde ich das Plug-In selbst registrieren und die Funktion erweitern. Lassen Sie uns das Plug-In als Nächstes selbst erstellen.

Erstes Plug-In

In Next erstellen wir einen Bot, um zum "Hallo" zum "Hallo" des Benutzers zurückzukehren. Die in diesem Artikel verwendete Python Slackbot-Bibliothek kann mit Plug-Ins erweitert werden. Indem Sie das Plug-In selbst implementieren, können Sie die Möglichkeit implementieren, auf bestimmte Wörter in direkten Nachrichten und Posts innerhalb des Kanals zu antworten, an dem der Bot teilnimmt.

Wechseln Sie zunächst in das Plug-In-Platzierungsverzeichnis im erstellten Bot-Verzeichnis.

$ cd plugins

Dieses Plugins-Verzeichnis enthält "\ _ \ _ init \ _ \ _. Py". Der Grund, warum diese Datei erforderlich ist, besteht darin, dass das als Slackbot-Plug-In zu ladende Verzeichnis ein Python-Paket sein muss. Daher ist "\ _ \ _ init \ _ \ _. Py" enthalten, damit es als Paket erkannt wird. Der Inhalt kann übrigens leer sein.

Nachdem Sie in das Plugin-Bereitstellungsverzeichnis gewechselt sind, erstellen wir das Plugin-Skript. Schreiben Sie den folgenden Code in "slack.py".

from slackbot.bot import respond_to
 
@respond_to('Hallo')
@respond_to('heute')
def hello(message):
    message.reply('Hallo!')

Ein Dekorator namens "reply_to" wird der Funktion "Hallo" hinzugefügt.

Durch Angabe eines Schlüsselworts, das dem Argument des Dekorators "reply_to" entspricht, wird die Funktion registriert, um beim Laden des Plug-Ins auf Erwähnungen an den Bot zu reagieren. Schlüsselwörter können auch mit regulären Ausdrücken angegeben werden. Es ist auch möglich, mehrere Schlüsselwörter zu unterstützen, indem Sie mehrere Dekoratoren wie in diesem Beispiel hinzufügen.

Fügen Sie abschließend Folgendes zu "slackbot_settings.py" hinzu, damit das Plug-In geladen wird.

PLUGINS = [
    'plugins',
]

Starten Sie Slackbot und senden Sie eine Erwähnung. Bitte fügen Sie @ hinzu. </ font>

$ python slack_bot.py
スクリーンショット 2016-08-21 23.51.18.png

Sie können sehen, dass der diesmal erstellte Bot wie beabsichtigt reagiert.

Umu gibt Bot zurück

Als nächstes verwenden wir reguläre Ausdrücke, um zu erfahren, was der Benutzer sagt. Versuchen Sie, "slack.py" wie folgt zu ändern.

# -*- coding: utf-8 -*-
from slackbot.bot import respond_to, listen_to


@listen_to('ich(.*)ist')
@listen_to('ich(.*)ist')
def hello(message, something):
    message.reply('Hallo!{0}Herr.'.format(something))

Starten Sie Slackbot und lassen Sie uns posten. Bitte fügen Sie nicht @ hinzu. </ font>

$ python slack_bot.py
スクリーンショット 2016-08-22 0.09.12.png

Sie können sehen, dass die Anmerkungen des Benutzers erfasst wurden.

Es gibt zwei Hauptunterschiede zwischen der vorherigen Hallo-Funktion und der aktuellen Hallo-Funktion. Zunächst verwenden wir diesmal den Dekorator "listen_to". Durch Angabe eines Wortes, das dem Argument des Dekorators "listen_to" entspricht, antwortet der Bot auf Beiträge auf den Kanälen, an denen er teilnimmt.

Der andere ist "(. \ *)" Im Dekorateur. Hierbei wird ein regulärer Ausdruck verwendet, und Sie können ihn mit einer beliebigen Zeichenfolge abgleichen, indem Sie "(. \ *)" Angeben. Außerdem wird der übereinstimmende Inhalt in einem der zweiten Argumente gespeichert. Daher konnte ich das Gesagte mit etwas zurückschicken.

Es ist für Bot noch einfacher, einfach zusammenzufassen, was der Benutzer sagt. Schreiben Sie einfach den Code wie folgt:

@respond_to('(.*)')
def refrection(message, something):
    message.reply(something)

Reguläre Ausdrücke können nicht nur mit einer Zeichenfolge übereinstimmen, sondern auch nur mit Zahlen oder nur mit Großbuchstaben. Siehe unten für Details.

Reguläre Ausdrücke in Python

Wenn Sie einen regulären Ausdruck schreiben und ihn in Echtzeit mit einem Online-Editor überprüfen, können Sie sofort erkennen, mit welchem Muster der reguläre Ausdruck, den Sie schreiben, übereinstimmt, sodass Sie schneller arbeiten können.

https://regex101.com/

regexp.mov.gif

Restaurant-Suchsystem

Bisher wissen Sie, wie Sie mit der Slackbot-Bibliothek einen Slackbot erstellen. Von hier aus werden wir ein interaktives System erstellen, das Restaurants mit Python durchsucht. Erstellen Sie dann den Slackbot, indem Sie das in Slack integrierte Dialogsystem integrieren.

Das fertige Bild ist wie folgt. bot2.mov.gif Dieser Bot kann im Dialog nach Restaurants suchen. Darüber hinaus ist es an sich nicht geschmackvoll, so dass es möglich ist, zu chatten. Lassen Sie uns nun die fertige Zeichnung erstellen, wenn wir sie kennen. Zunächst die Vorbereitung.

Vorbereitung

Installieren Sie die im Restaurant-Such-Bot verwendete Bibliothek. Führen Sie den folgenden Befehl aus, um die Bibliothek zu installieren.

$ pip install requests
$ pip install pyyaml
$ pip install doco
  • Wenn bei der Installation von doco unter Windows ein Unicode-Dekodierungsfehler auftritt
  1. Laden Sie das Repository von [https://github.com/heavenshell/py-doco] herunter (https://github.com/heavenshell/py-doco)
  2. Bearbeiten Sie die 18. Zeile von setup.py wie folgt und installieren Sie sie
open(rst, 'r', encoding='utf-8')
$ python setup.py install

Legen Sie außerdem den API-Schlüssel fest, der von der Docomo-Chat-Dialog-API und der HotPepper-Gourmet-Such-API in der Umgebungsvariablen abgerufen wird.

$ export DOCOMO_DIALOGUE_API_KEY=YOUR_DOCOMO_API_KEY
$ export HOTPEPPER_API_KEY=YOUR_HOTPEPPER_API_KEY

Stellen Sie für eine Eingabeaufforderungsumgebung Folgendes ein.

$ set DOCOMO_DIALOGUE_API_KEY=YOUR_DOCOMO_API_KEY
$ set HOTPEPPER_API_KEY=YOUR_HOTPEPPER_API_KEY

Systemkonfiguration

Die Systemkonfiguration ist wie folgt. Es folgt die Konfiguration des grundlegenden Dialogsystems. スクリーンショット 2016-08-18 20.50.40.png

Verzeichnisaufbau

Die Verzeichnisstruktur ist wie folgt. Die Verzeichnisstruktur entspricht der Systemkonfiguration.

.
├── application                       #Slackbot erstellen
└── dialogue_system                   #Gesamtdialogsystem
    ├── language_generation             #Sprachgenerator
    ├── language_understanding          #Abteilung für Sprachverständnis
    │   ├── attribute_extraction          #Attributextraktion
    │   ├── dialogue_act_type             #Schätzung der Art des Dialogs
    │   ├── language_understanding.py
    │   └── utils
    ├── dialogue_management             #Abteilung für Dialogmanagement
    ├── backend                         #Abteilung für externe Zusammenarbeit
    │   └── apis
    ├── knowledge                       #Fachwissen
    └── bot.py

Lassen Sie uns nun die Komponenten des Systems einzeln erstellen.

Sprachverständnis

Nun, erstellen wir es zuerst in der Abteilung für Sprachverständnis. Wir werden die folgenden zwei Prozesse erstellen.

  • Attributextraktion
  • Schätzung der Art des Dialogs

Es gibt zwei Hauptmethoden, um diese zu erstellen:

  • Regelbasierte Methode
  • Methode des maschinellen Lernens

Es ist möglich, mithilfe der maschinellen Lernmethode ein robustes System zu erstellen, aber es ist ziemlich schwierig, die Daten vorzubereiten. Erstellen wir daher zunächst eine regelbasierte Methode, für die keine Trainingsdaten erforderlich sind und die relativ einfach zu erstellen ist.

Die Verzeichnisstruktur der Abteilung Sprachverständnis ist wie folgt.

.
└── language_understanding          #Abteilung für Sprachverständnis
    ├── attribute_extraction          #Attributextraktion
    ├── dialogue_act_type             #Schätzung der Art des Dialogs
    ├── language_understanding.py   #Integration von Attributextraktion und Interaktionstypschätzung
    └── utils                       #Bequeme Funktion

Attributextraktion

Wenn die Sprachverständnisabteilung den vom Benutzer eingegebenen Text erhält, extrahiert sie die Attribute. Die Attribute, die dieses Mal extrahiert werden müssen, sind die folgenden drei. Verwenden Sie diese drei Informationen bei der Suche nach Restaurants.

  • Kochgenre
  • Platz
  • Budgetlimit

Es gibt eine Methode zur Schlüsselwortextraktion als Methode zur Attributextraktion basierend auf Regeln. Dies ist eine Methode, um im Voraus ein Wörterbuch mit Orten und Kochgenres zu erstellen und den passenden Teil während der Rede des Benutzers zu extrahieren. Wenn der Benutzer beispielsweise sagt, dass "Shinjuku ein guter Ort ist" und das Schlüsselwort "Shinjuku" im Ortswörterbuch enthalten ist, kann "Shinjuku" als Ort aus der Sprache des Benutzers extrahiert werden.

Die Verzeichnisstruktur des Attributextraktionsteils ist wie folgt.

.
└── attribute_extraction          #Attributextraktion
    ├── __init__.py
    └── rule_based_extractor.py

rule_based_extractor.py sieht folgendermaßen aus: attribute_extraction/rule_based_extractor.py

Sie können Attribute wie folgt extrahieren.

from rule_based_extractor import RuleBasedAttributeExtractor

extractor = RuleBasedAttributeExtractor()
attribute = extractor.extract(text='Ich möchte Ramen essen')
print(attribute)
>>> {'LOCATION': '', 'GENRE': 'Ramen', 'MAXIMUM_AMOUNT': ''}

Schätzung der Art des Dialogs

Wenn die Sprachverständnisabteilung den vom Benutzer eingegebenen Text erhält, schätzt sie die Art der Interaktion. Die folgenden vier Arten von Dialogen werden dieses Mal geschätzt.

  • Genrebezeichnung (INFORM_GENRE)
  • Speicherort angeben (INFORM_LOC)
  • Maximaler angegebener Betrag (INFORM_MONEY)
  • Andere andere)

Wir werden das Ergebnis der Attributextraktion verwenden, um den Interaktionstyp abzuschätzen. Wenn bei dieser Methode das Kochgenre als Attribut extrahiert wird, wird das Genre als Dialogtyp geschätzt, und wenn der Ort extrahiert wird, wird der Ort als Dialogtyp geschätzt. Wenn nichts als Attribut extrahiert wird, schätzen wir Other (OTHER) als Interaktionstyp.

Die Verzeichnisstruktur des Interaktionstyp-Schätzungsteils ist wie folgt.

.
└── dialogue_act_type             #Schätzung der Art des Dialogs
    ├── __init__.py
    └── rule_based_estimator.py

rule_based_estimator.py ist ein einfacher Code wie folgt: dialogue_act_type/rule_based_estimator.py

Nach Überprüfung des Vorgangs ist dies wie folgt.

from rule_based_extractor import RuleBasedAttributeExtractor
from rule_based_estimator import RuleBasedDialogueActTypeEstimator

extractor = RuleBasedAttributeExtractor()
estimator = RuleBasedDialogueActTypeEstimator()
attribute = extractor.extract(text='Ich möchte Ramen essen')
act_type = estimator.estimate(attribute)
print(act_type)
>>> 'INFORM_GENRE'

Integration von Attributextraktion und Interaktionstypschätzung

Zu diesem Zeitpunkt haben wir Attribute extrahiert und die Art der Interaktion geschätzt. Integrieren Sie diese als Nächstes und erstellen Sie den Code der Sprachverständnisabteilung in "language_understanding.py".

Der Code ist unten. language_understanding/language_understanding.py

Dialogmanagement

Die Abteilung Dialogmanagement führt die folgenden zwei Prozesse basierend auf dem Ergebnis des Input-Verständnisses durch (Dialog Act).

  • Interne Statusaktualisierung
  • Aktionsauswahl

Die Verzeichnisstruktur der Dialogmanagementabteilung ist wie folgt.

.
└── dialogue_management             #Abteilung für Dialogmanagement
    ├── __init__.py
    ├── manager.py
    └── state.py

Schauen wir uns jeden an.

Interne Statusaktualisierung

Bei der internen Statusaktualisierung wird der interne Status des interaktiven Systems basierend auf dem Ergebnis des Sprachverständnisses aktualisiert. Aktualisieren Sie den internen Status mithilfe von Regeln. Der interne Zustand kann auch verschiedene Informationen enthalten, diesmal wird jedoch der Einfachheit halber nur die Absicht des Benutzers angegeben. Die Absicht des Benutzers sind die Attribute und Attributwerte, die in der Vergangenheit erhalten wurden. Insbesondere enthält es die folgenden Informationen.

  • Kochgenre (GENRE)
  • LAGE
  • Budgetlimit (MAXIMUM_AMOUNT)

Schreiben Sie zunächst eine Klasse, die sich auf den Status bezieht, der beibehalten werden soll. Ich werde eine Statusaktualisierungsmethode in diese Klasse schreiben. dialogue_management/state.py

Als nächstes werden wir eine Klasse schreiben, die den Dialog verwaltet. Die Konversationsverwaltungsklasse delegiert den Statusaktualisierungsprozess an die Statusklasse. dialogue_management/manager.py

Aktionsauswahl

Der Aktionsauswahlabschnitt entscheidet die nächste Aktion basierend auf dem internen Status und den Regeln. Insbesondere wird der Interaktionstyp ausgegeben und an die nächste Sprachgeneration übergeben. Basierend auf diesem Interaktionstyp generiert der Sprachgenerator den Text. Rufen Sie bei Bedarf den externen Link an.

Wir werden den Aktionsauswahlalgorithmus in die Dialogverwaltungsklasse schreiben, die in der internen Statusaktualisierung geschrieben wurde. Die Auswahl der Aktion erfolgt gemäß der folgenden Richtlinie.

Bedingungen Inhalt
IF(Benutzerinteraktionstyp=OTHER) Dialogtyp zum Chatten(CHAT)Ausgabe
IF(Einige Attributwerte sind nicht gefüllt) Ausgabedialogtyp, um nicht ausgefüllte Attribute herauszufinden
IF(Alle Attributwerte werden gefüllt) Dialogtyp, der ein Restaurant präsentiert(INFORM_RESTAURANT)Ausgabe

Der tatsächliche Code ist unten. dialogue_management/manager.py

Sprachgenerierung

Die Sprachgenerierungsabteilung generiert die Sprache basierend auf den Regeln und den Dialogaktionen, die von der Dialogverwaltungsabteilung erhalten wurden.

Die Verzeichnisstruktur des Sprachgenerators ist wie folgt.

.
└── language_generation             #Sprachgenerator
    ├── __init__.py
    └── generator.py

Die Sprachgenerierung wird gemäß der folgenden Richtlinie durchgeführt.

Bedingungen Inhalt
IF(Dialogtyp=REQUEST_LOCATION) Hören Sie sich den Ort an
IF(Dialogtyp=REQUEST_GENRE) Hören Sie sich das Genre an
IF(Dialogtyp=REQUEST_BUDGET) Fragen Sie nach Ihrem Budget
IF(Dialogtyp=CHAT) Plaudern
IF(Dialogtyp=INFORM_RESTAURANT) Schlagen Sie ein Restaurant vor

Hier wird die Chat-Dialog-API von docomo beim Chatten aufgerufen, und die HotPepper-Gourmet-Such-API wird aufgerufen, wenn ein Restaurant vorgeschlagen wird.

Der tatsächliche Code lautet wie folgt. language_generation/generator.py

Erstellen einer Bot-Klasse

Damit ist die Komponentenerstellung des interaktiven Systems abgeschlossen. Ich werde eine Bot-Klasse erstellen, die diese kombiniert. Innerhalb dieser Bot-Klasse arbeiten die Komponenten des Interaktionssystems zusammen, um eine Antwort an den Benutzer zu generieren. dialogue_system/bot.py

Eingebettet in Slackbot

Wir werden die erstellte Bot-Klasse in Slackbot integrieren. Erstellen Sie ein neues Plug-In und schreiben Sie den folgenden Code. application/plugins/slack.py

Führen Sie nach dem Einbetten slackbot aus.

$ python slack_bot.py

Nach der Ausführung wird der Bot angezeigt und Sie können interagieren. bot2.mov.gif

Klüger sein

Dieses Mal wurde es von der Abteilung für Sprachverständnis durch Schlüsselwortextraktion und Regeln erstellt. Die Schlüsselwortextraktion kann jedoch keine Wörter extrahieren, die nicht im Wörterbuch enthalten sind. Um dieses Problem zu beheben, können Sie mithilfe von maschinellem Lernen Attribute extrahieren. Das Schätzen der Art des Dialogs kann auch als eine Frage der Satzklassifizierung betrachtet werden. Dies kann auch durch maschinelles Lernen geschätzt werden. In jüngster Zeit wurden APIs für maschinelles Lernen verbessert. Verwenden Sie sie daher, um Ihr Sprachverständnis zu verbessern.

Dies ist Miso, aber im folgenden Artikel verstehen wir Sprachen mithilfe von maschinellem Lernen.

Auch das Dialogmanagement mit Regeln ist einfach und leicht zu verstehen, aber mit zunehmender Anzahl von Regeln wird es unmöglich, es zu verwalten und zu ändern. Eine andere Möglichkeit besteht darin, erweitertes Lernen zu verwenden, um das Problem anzugehen. Darüber hinaus kann im Fall eines Sprachinteraktionssystems die Eingabe Fehler enthalten. Es wurden auch Untersuchungen durchgeführt, um Eingabefehler mithilfe eines Rahmens für verbessertes Lernen namens POMDP zu beheben. Wenn Sie interessiert sind, versuchen Sie bitte, den Dialog mithilfe von erweitertem Lernen zu verwalten.

abschließend

Dieses Mal habe ich auf Slack ein Dialogsystem für die Restaurantsuche aufgebaut. Dies ist das Ende der praktischen Arbeit. Wie war das. Es war ein einfaches regelbasiertes aufgabenorientiertes Dialogsystem, aber ich hoffe, Sie können verschiedene Möglichkeiten spüren, indem Sie es zu SlackBot machen. Lassen Sie uns über einen Mechanismus nachdenken, der es intelligenter macht, indem er mit anderen Web-APIs und APIs für maschinelles Lernen kombiniert wird!

Referenz

  • Slackbot mit Python erstellen (1)
  • Slackbot mit Python erstellen (2)
  • Mit maschinellem Lernen erstelltes Dialogsystem
  • [Dialogsystem (Verarbeitungsserie für natürliche Sprache)](https://www.amazon.co.jp/%E5%AF%BE%E8%A9%B1%E3%82%B7%E3%82%B9%E3 % 83% 86% E3% 83% A0-% E8% 87% AA% E7% 84% B6% E8% A8% 80% E8% AA% 9E% E5% 87% A6% E7% 90% 86% E3% 82% B7% E3% 83% AA% E3% 83% BC% E3% 82% BA-% E4% B8% AD% E9% 87% 8E-% E5% B9% B9% E7% 94% 9F / dp / 433902757X / ref = sr_1_1? Dh = UTF8 & qid = 1471848601 & sr = 8-1 & Schlüsselwörter =% E5% AF% BE% E8% A9% B1% E3% 82% B7% E3% 82% B9% E3% 83% 86% E3% 83 % A0)

Recommended Posts