W 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.
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:
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:
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ć.
Komentarz