CODECENTRIC.AI BOOTCAMP

created by @codecentric.ai

Natural Language Processing

Intent Recognition

"Wie komme ich
      zum Bahnhof?"
{intent: 'find_route',
 slots: {from: None, 
         to: 'Bahnhof',
         dep_time: None, 
         arr_time: None}}

Was bedeutet Intent Recognition?

Intent Recognition

1. Intent Recognition - wozu?

3. Von der Idee zur Anwendung

5. Wie geht's weiter? Die Praxis

4. Wie funktioniert's? Die Theorie

2. Was ist ein Intent?

Unser Plan

1. Intent recognition - wozu?

Universelle und einfache Bedienung

Termine

Musik

Navigation

Haustechnik

...

Gesundheitswesen

Rechtswesen

...

Kreditaufnahme

Adressänderung

Termin für Anlageberatung

Kontoführung

Kundenkommunikation kanalisieren

1. Was ist ein Intent?

Intents und Slots

Zeig mir den Weg zum Hauptbahnhof!
Wie komme ich von hier aus zum Bahnhof?
Finde_Weg
Start
Ziel

Intent

Slots

{intent: 'Finde_Weg',
 slots: {'Start': None,
         'Ziel': 'Hauptbahnhof'}}
{intent: 'Finde_Weg',
 slots: {'Start': 'hier',
         'Ziel': 'Bahnhof'}}

Aber welche Slots? und wieviele?

Finde_Weg
Start
Ziel
Wie komme ich mit dem Bus 
von hier aus zum Bahnhof?
Wie komme ich morgen früh 
mit dem Bus zum Bahnhof?
Abfahrt
Ankunft
Mittel

Flexiblere Intents mit Bäumen

Zeige mir den kürzesten Weg 
von hier zum nächsten Bahnhof.
Zeige
mir
Weg
kürzesten
hier
Bahnhof
nächster
wem
was
Start
Ziel
Eigenschaft
Eigenschaft

3. Von der Idee zur Anwendung

Intents

spezifizieren

und parametrisieren

Sprach-Enginge

auswählen und

optimieren

Trainingsdaten

sammeln und labeln

oder generieren

Anwendung

launchen,

beobachten und trainieren

1

2

3

4

Schritte von der Idee zur Anwendung

Schritt 1 - Intents spezifizieren

Finde_Weg
Start
Ziel
Abfahrt
Ankunft
Mittel
Nenne_Standort
Objekt
Suche_Restaurant
Ort
Suche
Ort
Objekt

?

einfach

komplex

Ich bin hungrig!

Schritt 2 - Sprach-Engine

...oder open source?

Natural Language Understanding as a service...

Rasa-NLU

IBM Watson

Conversation Service

...

Microsoft Luis

Amazon Lex

Wit.ai

Google Cloud Natural Language

Dialogflow

SemanticMachines

snips-nlu

NLP Architect

SoundHound Inc.

pytext

spaCy

DeepPavlov

Schritt 3 - Trainingsdaten sammeln...

Sammeln...

...und labeln mit NLP annotation tools

(offline/online/as a service)

...oder generieren

%[intent_Temperatur]
    ~[Frag_Temperatur] @[Ort] ~[wann]?
    ~[Frag_Temperatur] ~[wann] @[Ort]?

    ...

~[wann]
    [im Jahr?] @[Jahr]
    {von|in den Jahren} @[Start] bis @[Ende]  
    zwischen @[Start] und @[Ende]

    ...

@[Ort]
    Brandenburg
    Baden-Wuerttemberg

    ...

~[Frag_Temperatur]
    Wie {kalt|warm} war es
    Was war die Temperatur
    Welche Temperatur hatten wir

    ...

1

2

3

4

5

6

7

8

9

10

11

Intents

Slots

Synonyme

4. Wie funktioniert's?

Ein wenig Theorie

Intent Recognition in zwei Schritten

Schritt 1: Intent klassifizieren

Finde_Weg
Start
Ziel
Wie komme ich von hier aus zum Bahnhof ?
{intent: 'Finde_Weg',
 slots: {Start: 'hier',
         Ziel: 'Bahnhof'}}

Schritt 2: Slots füllen

(sequence tagging)

Landkarte der Techniken

Intent klassifizieren

Slots füllen

Wort-Statistiken

Machine Learning

Text als Folge von Wortvektoren

neuronale Netze

statistische Modelle

   (       nlp basics)

 (sequence tagging)

hidden Markov

chains

continuous

random fields

multinomial

naive Bayes

support vector

machines

bag of words

tf-idf-Maß

convolutional

dense

recurrent

word2vec

gloVe

fasttext

Rekurrente Schichten              

                    in neuronalen Netzen

Wortvektoren

Kopien einer RNN-Zelle

Startwert

sehr gut angepasst

an sequentielle Daten

(Text, Audio, Zeitreihen...)

schwer zu trainieren

(vanishing/exploding gradients)

 rechenintensiv

+

-

-

Beispiel einer RNN-Zelle - LSTM

Ausgabe der vorigen Zelle

aktuelle Eingabe

voriger Speicher

forget gate

input gate

output gate

aktueller Speicher

aktuelle Ausgabe

Bi-RNN für Intent und Slot filling

forward pass

backward pass

merge

forward pass

slot tags

word vectors

intent

5. Wie geht's weiter?

Etwas Praxis

Unser Tutorial - was machen wir?

Wie warm war es 1900, 1940, 1980 und 2018 in Baden-Württemberg und in Schleswig-Holstein?
('Frag_Wert', 
[('Eigenschaft', 'warm'), 
 ('Zeit', '1920'), ('Zeit', '1940'), 
 ('Zeit', '1960'), ('Zeit', '1980'),  
 ('Zeit', '2000'), 
 ('Ort', 'Schleswig-Holstein'), 
 ('Ort', 'Baden-Württemberg')])
Wann war es in Niedersachsen wärmer als in Sachsen?
('Frag_Jahr', 
[('Ort', 'Niedersachsen'),  
 ('Komparativ', 'wärmer'), 
 ('Ort', 'Sachsen')])
> Das ist eine gute Frage.

Intent Recognition

Unser Tutorial - so geht's!

%[intent_Temperatur]
    Wie {warm/kalt} war e
    Welche Temperatur hat
    
rules.txt

generieren

Modell trainieren

chatette

Rasa-NLU

{
  "rasa_nlu_data": {
    "common_examples": [
      {
        "entities": [

 

intents_rasa.json

Modell anwenden

unser einfacher

WetterBot

TensorFlow

spaCy

scikit-learn

Trainingsdaten

NLP intent recognition

By cc_ai

NLP intent recognition

  • 143
Loading comments...

More from cc_ai