luktom.net
  • blog
  • kontakt
  • english





Chatboty i sztuczna inteligencja – część 2: podstawy Wit.ai

20 maj, 2017
Chatboty, Daj się poznać 2017
Brak komentarzy
Odsłony : 5696

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.



Tagi :   aichatbotydsp2017nlpwit.ai

Powiązane wpisy

  • Anatomia chatbota – część 2: podstawowe operacje

  • SmogBot – zapraszam do korzystania :)

  • „Daj się poznać 2017” – podsumowanie

  • SmogBot – zamknięcie projektu

  • Dodaj komentarz

    Click here to cancel reply

    You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>





    Łukasz Tomaszkiewicz

    Łukasz Tomaszkiewicz

    Pasjonat chmury, szczególnie AWSa, który nieustannie automatyzuje powtarzające się czynności i optymalizuje procesy, przy okazji wdrażając dobre praktyki dotyczące bezpieczeństwa. Jego szerokie doświadczenie w zakresie tworzenia oprogramowania, projektowania baz danych, a także wirtualizacji serwerów i zarządzania infrastrukturą w chmurze pozwala mu spojrzeć przekrojowo na współczesny stack technologiczny.

    W wolnym czasie fotograf, sporadycznie piszący blogger :) a także regularny prelegent na krakowskich grupach związanych z IT.

    Wyznawca Vim'a :)

    Kategorie

    • Ansible
    • AWS
    • C#
    • Chatboty
    • Cloud
    • Daj się poznać 2017
    • Docker
    • Inne
    • Linux
    • Open source
    • Organizacyjne
    • Prelekcje
    • Sieci komputerowe
    • SQL Server
    • Windows
    • Windows Server
    • Wirtualizacja

    Najczęściej czytane

    • Creating single node VSAN cluster
    • SQL Server – walidacja numerów PESEL i NIP
    • Konfiguracja serwera DHCP na routerach Cisco
    • Aktywacja routingu IP w Windows 7 / Windows Server 2008
    • Konwersja maszyn wirtualnych z ESXi do Hyper-V przy użyciu SCVMM 2012
    • Jak podłączyć program R do SQL Servera?

    Tagi

    .net ai ansible asp.net mvc aws aws cli bot builder bot framework c# centos certyfikaty chatbot chatboty cisco cmd docker dsp2017 esxi hyperv kontenery konteneryzacja linux mvc nlp openvpn plssug pobieranie powershell prelekcje rancher redhat router sieci smogbot sql server ssd ssl vmware vsphere windows windows mobile windows server wirtualizacja wit.ai wrzuta

    Copyright © 2006-2018 by Łukasz Tomaszkiewicz. Wszelkie prawa zastrzeżone