luktom.net
  • blog
  • kontakt
  • english





Chatboty i sztuczna inteligencja – część 1: wprowadzenie

12 maj, 2017
Chatboty, Daj się poznać 2017
Brak komentarzy
Odsłony : 4624

W ten nowej serii wpisów zajmiemy się dodaniem odrobiny „inteligencji” do naszych chatbotów. Seria będzie dość praktyczna, tj. nie będę się skupiał na tym co się dzieje pod spodem, a raczej na tym jak skutecznie używać dostępnych w sieci narzędzi na bazie których możemy uczynić bota bardziej inteligentnym – a mówiąc inteligentnym mam na myśli głównie rozumienie mowy naturalnej przez bota.

 

Choć Microsoft w ramach Bot Frameworka oferuje narzędzie do przetwarzania języka naturalnego o nazwie LUIS (Language Understanding Intelligent Service), które całkiem sprawnie integruje się z systemem dialogów Bot Buildera, to jednak obiektem mojego zainteresowania w niniejszej serii będzie głównie usługa o nazwie Wit.ai. Dlaczego? Główny powód to obsługa języka polskiego, co jest ewenementem, gdyż ciężko uświadczyć gotowe usługi wspierające tak egzotyczny język :) Poza tym Wit.ai oferuje przyjemne API oraz przystępny system dialogów – o szczegółach wkrótce, dzisiaj natomiast podstawy.

Jak działają API do rozumienia języka naturalnego (NLU)?

Na początek mała grafika, zapożyczona z dokumentacji API.AI, która doskonale opisuje działanie serwisów do NLU (Natural Language Understanding):

Proces przebiega następująco:

Użytkownik pisze do chatbota, a chatbot przesyła tekst użytkownika jako zapytanie do usługi typu NLU.
Usługa NLU przetwarza zapytanie i „na wyjściu” zwraca kilka informacji, z których najważniejszą jest tzw. intent (polskie tłumaczenie jako „zamiar” słabo mi pasuje, już prędzej „intencja”). Intent wskazuje na jeden z predefiniowanych w aplikacji NLU zamiarów, informacja ta jest zazwyczaj opatrzona także poziomem pewności (confidence) co to tego, że dany zamiar faktycznie pasuje do zapytania użytkownika.

Encje

Poza intent usługa NLU zwraca w niektórych przypadkach także entities, czyli dodatkowe informacje wydobyte z zapytania użytkownika. Przykładowo, dla zapytania „jaka pogoda będzie jutro w Krakowie?” usługa NLU powinna – poza określeniem intencji w stylu „sprawdź pogodę” – zwrócić dwie encje: jedna z lokalizacją, o którą pyta użytkownik, a druga z datą o jaką chodzi w zapytaniu.

Oczywiście encji danego typu (np. lokalizacji) może być kilka w jednym zdaniu (np. „sprawdź loty z Krakowa do Genewy między 15 maja a 20 maja”) co dodatkowo komplikuje sytuację, jak również zapytanie może mieć… mniej encji niż tego wymaga aplikacja. Przykładem niech będzie zapytanie „jaka będzie pogoda?” – w tym przypadku bot wymaga podania lokalizacji, niestety w zapytaniu od użytkownika nie ma sprecyzowanej lokalizacji. Konieczne jest więc „dopytanie” użytkownika, a do tego przydaje się, aby usługa oferowała…

Wsparcie dla konwersacji i kontekstu

Ta funkcja usług NLU pozwala na tworzenie bardziej rozbudowanych konwersacji oraz obsługę scenariuszy, w których bot jest w stanie dopytać się użytkownika o brakujące dane. W powyższym przykładzie bot zapytałby użytkownika „dla jakiego miasta pogoda Cię interesuje”, aby – otrzymawszy kolejną wiadomość od użytkownika – wpasować ją w kontekst konwersacji – czyli dla danego intent uzupełnić encję dotyczącą lokalizacji.

O technicznych aspektach kontekstu konwersacji będę pisał więcej w następnych wpisach, dzisiaj poruszę jeszcze jeden aspekt, mianowicie:

Customowe akcje

W przypadku niektórych usług NLU – jak rozważany Wit.ai – mamy także dostęp do mechanizmu, w którym usługa nie tylko zwraca intent i entities, ale także jest w stanie „wywołać” jakieś akcje w kodzie użytkownika. Użyłem słowa „wywołać” w cudzysłowie, gdyż takowe „wywołanie” nie zawsze jest mechanizmem typu callback lub webhook, a po prostu zwróceniem odpowiedniej odpowiedzi ze wskazaniem akcji, jaką powinien podjąć kod użytkownika – tak jest w Wit.ai. API.AI dla odmiany oferuje pełnoprawnego webhooka :)

W następnych częściach…

… zajmiemy się utworzeniem przykładowej aplikacji przy użyciu Wit.ai, w której zaprezentuję wszystkie ficzery tego narzędzia :)

Aby nie przegapić kolejnych wpisów zapraszam do śledzenia tego bloga, czy to przez kanał RSS, czy też poprzez stronę na Facebooku.



Tagi :   aibot frameworkchatbotydsp2017inteligencjanluwitai

Powiązane wpisy

  • Poznaj chatboty – startuję w „Daj się poznać 2017”

  • Anatomia chatbota – część 5: przejścia między dialogami

  • SmogBot – zamknięcie projektu

  • Ikonka dla SmogBota

  • 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