GithubHelp home page GithubHelp logo

aaa-intelligence / eve Goto Github PK

View Code? Open in Web Editor NEW
10.0 7.0 1.0 32.85 MB

👫 Interactive Chat-Bot made with Tensorflow

Home Page: http://leonerath.de/eve

License: MIT License

Go 32.83% Makefile 0.37% CSS 13.74% JavaScript 9.63% Python 30.29% Batchfile 0.02% PLpgSQL 12.63% Dockerfile 0.50%
chat bot ai go tensorflow eve

eve's Introduction

Project EVE

Interactive Bot Chat

How to run

Installation

go get "github.com/AAA-Intelligence/eve"

Run

After starting the webserver open http://localhost:8080/register in your browser to create an account.

With Makefile

cd "%GOPATH%/src/github.com/AAA-Intelligence/eve"
make deps
make all

Without Makefile

Windows

go build -o "eve.exe" "github.com/AAA-Intelligence/eve/cmd/eve" 
eve.exe -http 8080

macOS / linux

go build -o "eve" "github.com/AAA-Intelligence/eve/cmd/eve" 
./eve -http 8080

eve's People

Contributors

daniel-scholz avatar leonerath avatar niklaskorz avatar salomon-mh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

leonerath

eve's Issues

Create Bot Router (Interface between Bot and Webserver)

Der Bot Router verwaltet alle laufenden Bot Instanzen und leitet die vom Message Handler erhaltenen Anfragen an eine der Bot Instanzen weiter. Sollte nur eine Instanz verfügbar sein, werden alle Anfragen an diese weitergeleitet. Dieser Aufbau ermöglicht eine Lastverteilung, um eine große Anzahl von Anfragen auf unterschiedliche Bot Instanzen auf verschiedenen Servern weiterzuleiten zu können.
Die Weiterleitung erfolgt über die Standardeingabe der Botinstanz (stdin), Antworten des Bots werden über die Standardausgabe (stdout) an den EVE Manager zurückgegeben.
Über ein Mutex wird sichergestellt, dass eine Botinstanz nur eine Anfrage gleichzeitig bearbeitet und auch keine Daten anderer Anfragen übermittelt werden bis die aktuelle Anfrage bearbeitet worden ist. Die Daten für die Eingabe werden in einem JSON-Format übermittelt wobei Newlines das Ende einer Anfrage markieren (“\n” nach der Anfrage).

Create Page renderer.

Der Page Renderer nimmt eingehende HTTP Anfragen entgegen, führt die User Authentifizierung mithilfe der Datenbank durch und sendet die Web App zusammen mit den benötigten User und Bot Daten an den Browser.

Create Request Handler

Der Request Handler nimmt eingehende Anfragen über die Standardeingabe entgegen, leitet diese an die für die Antwortgenerierung zuständigen Komponenten weiter und sendet die generierte Antwort über die Standardausgabe in einem JSON-Format zurück. Die Eingabedaten enthalten zusätzlich zur Texteingabe des Nutzers die Stimmungs- und Zuneigungswerte des Bots, das Geschlecht und den Namen des Bots. Weiterhin wird die vorherige Nachricht des Nutzers übermittelt um den Nachrichtenkontext berücksichtigen zu können.

Zunächste wird die eingehende Nachricht an den Pattern Recognizer weitergeleitet. Liefert dieser eine Nachricht zurück wird die Nachrichtenanfrage mit dieser Beantwortet und der Prozess innerhalb der Bot Instanz ist abgeschlossen. Kann der Pattern Recognizer das Muster nicht erkennen und liefert deshalb eine leere Antwort, wird die Nachricht an den Text Processor. Nebst Text enthält die Antwort des Bots die erkannten Stimmungs- und Zuneigungswerte.

Create Message Handler.

Der Message Handler nimmt Nachrichtenanfragen entgegen, entnimmt der Datenbank alle für die Bot Instanz benötigten Daten, wie die Stimmung und Zuneigung des Bots ( im weiteren als Kontext bezeichnet) und leitet diese Daten zusammen mit der Nachricht an den Bot Router weiter.
Die von diesem zurückgesendete Antwort und Kontext wird zusammen mit der ursprünglichen Nachricht des Nutzers in der Datenbank gespeichert.

Create Predefined Answers

Das selektive Modell unterstützt den Vorgang der Mustererkennung durch den Pattern Recognizer. Dafür müssen die Lerndaten nach Kategorien unterteilt werden (“Frage nach Name”, “Frage nach Geschlecht”, “Frage nach Uhrzeit”, etc.) und enthalten mögliche Nachrichten, die eine vordefinierte Antwort der jeweiligen Kategorie auslösen sollen. Wichtig ist hierbei, dass es sich nur um die auslösenden Nachrichten des Nutzers handelt. Die möglichen Antworten des Bots werden in der Datenbank in der Tabelle “PredefinedAnswer”

Create Web UI.

Das Absenden einer Nachricht über das UI, führt zum Weiterleiten der Nachricht über den Web Socket an den Request Handler. Alle Nachrichten des Bots werden an den Web Socket gesendet, welcher diese an das UI weitergeleitet und somit für den User sichtbar macht.

screen shot 2018-03-13 at 08 54 19

screen shot 2018-03-13 at 08 54 25

[TF-ANT-3] Bot responds to input.

Der Bot reagiert auf die Nutzereingabe. Standardfragen wie “Wie gehts dir”, “Was machst du?”, “Wie heißt du?” etc. werden vom Bot beantwortet .

See #4

Create Request Handler.

Der Request Handler kommuniziert mithilfe eines Web Sockets mit der Web App und leitet eingehende Nachrichten an den Message Handler weiter. Zusätzlich nimmt er die Bot Antworten des Message Handlers entgegen und sendet diese über den Web Socket an die Web App

Add context to pattern recognizer

Current situation:
The pattern recognizer scans the current message using the trained patterns and looks for a predefined answer.

What's missing:
The pattern recognizer should analyze the previous message as well if and only if the recognized pattern is an ambiguous pattern. Ambiguous patterns include questions for a person's age or name without specifying the person in question.

Create Login Process

Der Authentifizierungsprozess wird durch HTTP-Authentifizierung durchgeführt. Hierbei wird der Nutzer beim Öffnen der Website vom Browser in einem Dialogfenster aufgefordert seine Anmeldedaten (Benutzername + Passwort) einzugeben. Sind die eingegebenen Daten korrekt werden sie vom Browser gespeichert und automatisiert bei jeder weiteren HTTP-Anfrage an die Webseite mit HTTP-Header mitgesendet. Der Server kann diese Daten nun bei jeder Anfrage mit der Datenbank abgleichen und so den Benutzer der Anfrage authentifizieren.

Create Mood Analyzer.

Sollte es sich nicht um eine Benutzereingabe mit vordefinierter Antwort halten, so wird eine Antwort mit Hilfe der durch TensorFlow trainierten künstlichen Intelligenz generiert. Dabei werden die Stimmung sowie Zuneigung (Mood Analyzer) berücksichtigt, die der Nutzer mit seiner Nachricht vermittelt. Dies geschieht erneut über Mustererkennung auf Basis eines Datensatzes, der Nachrichten bestimmter Stimmungen und Zuneigungen enthält (siehe Aufbau der Lerndaten).

Format code and fix code style

Before the end of the project, we should ensure a consistent code style throughout the project (i.e., gofmt style for all Go files, an agreed style for all CSS and HTML files and PEP 8 for all Python files).

Create pattern recognizer

The pattern recognizer shall detect certain sentence pattern which triggers a static respond.

Example: a joke

Create Web Socket.

Die Web App besteht aus der für den Nutzer sichtbaren User Interface (UI) und den für die Kommunikation zum Server benötigten Web Socket.
Das Absenden einer Nachricht über das UI, führt zum Weiterleiten der Nachricht über den Web Socket an den Request Handler. Alle Nachrichten des Bots werden an den Web Socket gesendet, welcher diese an das UI weitergeleitet und somit für den User sichtbar macht.

Create Chat-Korpus (Whats-App parser)

Das generative Modell wird verwendet, um Antworten auf Benutzereingaben zu generieren, für die keine vordefinierten Antworten ermittelt werden können. Dafür kommt ein Textkorpus zum Einsatz, der einen Dialog zwischen zwei Personen abbildet: dem Nutzer und den Bot. Dabei gilt, dass die Qualität der Antworten mit zunehmender Größe und Qualität des Textkorpus und Zeit, die die künstliche Intelligenz auf Basis des Textkorpus trainiert wird, steigt. Der Textkorpus muss in Form einer oder mehrerer Textdateien vorliegen, deren Nachrichten durch Zeilenumbrüche voneinander getrennt sind und am Anfang der Zeile eine Kennzeichnung “A:” oder “B:” haben, um zwischen den zwei Dialogteilnehmern zu unterscheiden. Außerdem müssen die Nachrichten eine vordefinierte Bewertung für Zuneigung und Stimmung in Form einer Fließkommazahl zwischen -1 und +1 enthalten, um die Stimmung des Bots und der Nutzernachrichten in der Antwort berücksichtigen zu können.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.