W zeszłym tygodniu opisałem pokrótce jak działają serwisy online do przetwarzania języka naturalnego – dzisiejszy wpis będzie dotyczył tego jak konkretnie działa Wit.ai i co musimy wiedzieć, aby rozpocząć z nim pracę. Bez przydługawego wstępu, zaczynamy!
Wit.ai oferuje nam dwa tryby odpytywania – rozumienie (Understanding) oraz konwersację (Converse). W trybie rozumienia Wit.ai przetwarza pojedyncze zapytania przesyłane do usługi, próbuje je dopasować do wyuczonych intents, wydobyć z tekstu encje oraz zwraca wynik do klienta. W trybie konwersacji, wraz z zapytaniem przesyłamy tzw. kontekst rozmowy. Na bazie zapytania oraz kontekstu rozmowy Wit.ai nie tylko określa intent oraz wydobywa encje, ale także próbuje przewidzieć następny krok konwersacji, gdzie następnym krokiem może być albo wysłanie tekstu do klienta, albo też wywołanie (technicznie rzecz biorąc zwrócenie informacji o konieczności wywołania; nie jest to callback w sensie webhook) funkcji na kliencie.
Całą ideę prezentuje ładny obrazek z dokumentacji Wit.ai:
Elementy interfejsu
Konsola Wit.ai jest podzielona na kilka sekcji:
- Inbox – gdy tylko wdrożymy naszą usługę (lub odpytamy testowo przez API) wszystkie nowe zapytania, co do których Wit.ai nie jest pewny trafią do sekcji Inbox, gdzie możemy ręcznie je sprawdzić i doszkolić sztuczną inteligencję Wit.ai w rozumieniu tego konkretnego zdania.
- Understanding – w tej sekcji możemy zarówno sprawdzić jak usługa odpowiada na pojedyncze zapytania jak i doszkolić AI w zakresie rozumienia poprzez ręczną korektę interpretacji jaką zwraca Wit.ai.
- Stories – w sekcji tej tworzymy pełne dialogi, których Wit.ai używa po pierwsze do dopasowania intent dla zapytania, a po drugie do określenia następnej akcji.
- Logs – tutaj znajdziemy logi z działania aplikacji.
- Settings – a tutaj ustawimy główne rzeczy związane z interpretacją, w szczególności język oraz strefę czasową (czas w zapytaniach jest interpretowany w kontekście tej strefy czasowej), a także informacje na temat kluczy uwierzytelniających zapytania do usługi.
W przyszłych wpisach będziemy się głównie skupiać na funkcjonalności Stories, gdyż jest ona dość dobrym zamiennikiem (lub przynajmniej uzupełnieniem) systemu dialogów MS Bot Frameworka.
Encje i strategie ich przetwarzania
Wit.ai oferuje kilka mechanizmów przetwarzania encji, gdzie przez sposób przetwarzania rozumiemy sugestię dla AI odnośnie tego co zawiera dana encja. Poza gotowymi do skorzystania encjami typu lokalizacja lub czas, możemy wytrenować własne, które będą np. dopasowywać wartości z podanych przez nas enumów lub też przetwarzać ukryte znaczenia, typu sentyment.
Gotowych encji mamy dość dużo, poniżej szybki zrzut z przykładami tego, co możemy użyć od razu:
Jest tego całkiem sporo i wbudowane elementy są dość praktyczne, niemniej czasami może zajść potrzeba zaimplementowania czegoś własnego. Wit.ai oferuje w tym celu możliwość zdefiniowania własnej encji oraz określenia sposobu przetwarzania. Do wyboru są trzy:
- Trait – przeznaczony do przetwarzania encji, które nie wynikają bezpośrednio z konkretnych słów kluczowych, np. zarówno w zdaniu „jaka będzie pogoda” jak i „czy będzie padać” intencją jest dowiedzenie się jaka będzie pogoda, jednak konkretne słowa nie są bezpośrednio powiązane z intencją. Innymi przykładami na użycie strategii trait jest np. określanie sentymentu lub grzeczności.
- Keywords – przeznaczony do wyszukiwania encji składających się z predefiniowanych wartości.
- Free text – przeznaczony do wyszukiwania encji, w których ciężko jest określić predefiniowane wartości lub interesuje nas jakaś część zapytania – np. chcemy podyktować tekst SMSa.
Opcję Keywords oraz Free text można łączyć, aby uzyskać efekt dopasowania do listy, przy jednoczesnym zezwoleniu na poszerzenie tej listy.
Encje i role
Czasami zachodzi potrzeba wydobycia z pojedynczego zapytania kilku encji tego samego rodzaju – np. lokalizacji. Wit.ai oferuje w tym aspekcie mechanizm ról encji – po zdefiniowaniu encji możemy przypisać jej rolę, jaką pełni w zdaniu, np:
W następnych częściach…
… przejdziemy do tworzenia aplikacji w oparciu o Wit.ai. Pokażę Wam również mój „mini-framework”, który znacznie ułatwia pracę z Wit.ai :)
Aby nie przegapić kolejnych wpisów zapraszam do śledzenia tego bloga, czy to przez kanał RSS, czy też poprzez stronę na Facebooku.
Dodaj komentarz