Záměry a klasifikace

Building Chatbots in Python

Alan Nichol

Co-founder and CTO, Rasa

Řízené učení

  • Klasifikátor předpovídá záměr na základě věty
  • „Trénování" klasifikátoru pomocí trénovacích dat
  • Vyhodnocení výkonu na testovacích datech
  • Přesnost: podíl správně předpovězených záměrů
Building Chatbots in Python

Datová sada ATIS

  • Tisíce vět s označenými záměry a entitami
  • Získáno ze skutečné služby pro rezervaci letů
  • Záměry jako
    • atis_flight
    • atis_airfare
Building Chatbots in Python

Datová sada ATIS II

sentences_train[:2]                    
labels_train[:2]
[ "atis_flight",
  "atis_flight"]
["i want to fly from boston at 
  838 am and arrive in denver at 
  1110 in the morning",
  "what flights are available 
  from pittsburgh to baltimore 
  on thursday morning"]
import numpy as np
X_train_shape = (
    len(sentences_train),
    nlp.vocab.vectors_length)

X_train = np.zeros(X_train_shape)
for sentence in sentences_train: X_train[i,:] = nlp(sentence).vector
Building Chatbots in Python

Klasifikace nejbližšího souseda

  • Potřebujeme trénovací data
    • Věty, které již máme označené záměry
  • Nejjednodušší řešení:
    • Najít nejpodobnější označený příklad
    • Použít jeho záměr jako nejlepší odhad
  • Klasifikace nejbližšího souseda
Building Chatbots in Python

Klasifikace nejbližšího souseda v scikit-learn

from sklearn.metrics.pairwise import cosine_similarity
test_message = """
i would like to find a flight from charlotte
to las vegas that makes a stop in st. louis"""
test_x = nlp(test_message).vector

scores = [ cosine_similarity(X[i,:], test_x) for i in range(len(sentences_train) ]
labels_train[np.argmax(scores)]
'atis_flight'
Building Chatbots in Python

Support vector machines

  • Nejbližší soused je velmi jednoduchý – lze dosáhnout lepších výsledků
  • SVM / SVC: support vector machine / classifier
from sklearn.svm import SVC

clf = SVC()
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)
Building Chatbots in Python

Pojďme procvičovat!

Building Chatbots in Python

Preparing Video For Download...