Sztuczna inteligencja na przykładzie Wit.ai, cz. 2

Wit.ai logo

poprzednim wpisie opisaliśmy podstawy systemów wspomagających przetwarzanie języka naturalnego – w jaki sposób działaja i jak możemy ich użyć.

Dzisiaj chcemy zaprezentować jeden z takich systemów – Wit.ai, czyli framework wykupiony przez Facebook’a, wspierający ponad 50 języków – w tym, co najważniejsze dla nas, język polski. Dowiecie się z tego artykułu jakie są podstawowe funkcjonalności systemu, jak się w nim poruszać, co to jest entity, co to jest intent i jak je wykorzystać.

Konto i cena

Rejestracja oraz korzystanie z Wit.ai jest całkowicie darmowe, bez żadnego z góry nałożonego limitu requestów. Twórcy zaznaczają jednak, że w przypadku zakładanego dużego ruchu proszą o kontakt (duży ruch to dla nich ruch długotrwały o częstotliwości przynajmniej 1 req/sek).

Założyć konto możemy wchodząc na Wit.ai i rejestrując się kontem Facebook’owym lub GitHub’owym. Po zalogowaniu zostaniemy poproszeni o stworzenie nowej aplikacji i podanie podstawowych informacji (Nazwa, opis, język) w celu jej konfiguracji.

Wit.ai konto

Na screenie widzicie potwierdzenie tego o czym wspominaliśmy wcześniej – mamy opcję wyboru języka polskiego. Dodać należy jednak, że jest on w wersji Beta (jak ostrzega nas Wit.ai). W związku z tym może nie działać jeszcze w 100% poprawnie.

Trenowanie modelu

Podstawą sukcesu systemu przetwarzania języka naturalnego jest wystarczające wytrenowanie modelu. Na czym to polega? Musimy zasilić system danymi, które pozwolą w prawidłowy sposób wyciągać wnioski.

Aby zademonstrować Wam na czym to w skrócie polega wejdźmy na zakładkę „Understanding” i wpiszmy:

Wit.ai

Na załączonym screenie widzicie, że wpisanej frazie przypisaliśmy tzw. entities (intent, wit/location:from, wit:location:to). Co one oznaczają w tym przypadku?

  • intent – to tzw. zamiar, tyczy się znaczenia całej frazy i udziela nam informacji co miał na myśli użytkownik wpisując dane zdanie
  • wit:location:from – encja ta tyczy się słowa „Warszawy” i oznacza, że ten keyword oznacza lokalizację oraz miejsce początku podróży
  • wit:location:to – encja ta tyczy się słowa „Wrocława” i oznacza, że ten keyword oznacza lokalizację oraz miejsce końca podróży

Dodać w tym miejscy należy, że to co oznacza encję jako początek podróży i jej koniec (from i to) to tzw. role, przypisane przez nas ręcznie.

Douczenie modelu odbywa się po kliknięciu w przycisk „Validate”.

Już tak nauczony jednym zdaniem model będzie potrafił poprawnie zinterpretować inne choć podobne zdanie, przykład:

Wit.ai

Poza lokalizacją mamy również inne predefiniowane encje, które możemy wykorzystać podczas nauki. Co mamy do wyboru?

  • wit/age_of_person – system potrafi wyciągnąć z kontekstu zdania wiek osoby
  • wit/amount_money – wyciąga wartość/cenę z frazy, np. 20 zł, 52 euro
  • wit/datetime – zwraca datę występującą w zdaniu, np. zwróci dzisiejszą datę gdy ktoś użyje słowa „dzisiaj”
  • wit/email – wyciąga email z kontekstu zdania
  • wit/url – chyba nie trzeba wyjaśniać

To tylko przykład wybranych encji – pełną ich listę możecie zobaczyć rozwijając listę encji w zakładce „Understanding”.

Lookup strategies

Dopasowywanie encji do fraz odbywa się na kilka różnych sposobów – decyduje o tym typ strategii przypisany do encji. Jakie są typy strategii?

  • Trait – encja nie jest wprost wyciągana ze słów składających się na frazę ( w naszym przykładzie jest to encja reservation – mimo, że we frazie nie występuje to słowo to zostaje ta encja do niej przypisana)
  • Free-text – gdy encja zawiera informację wyciąganą z frazy, ale nie stanowi listy predefiniowanych słów ( w naszym przypadku taką encją byłaby encja wit/location:from – wartość pobierana jest z frazy na podstawie kontekstu)
  • Keywords – gdy encja wyciąga z frazy słowa na podstawie predefiniowanej listy

Więcej informacji o encjach i strategiach znajdziecie w dokumentacji.

To tyle w dzisiejszej części, a w kolejnej pokażemy Wam w jaki sposób odpytywać nauczony model i jak go monitorować.