WTF is NLTK?

Na początku była pra-gęś, która zniosła pra-jajo… W mitologii egipskiej wszystko jest takie proste.

W moim wypadku na początku był chaos.

Z chaosu wyłoniła się wirtualna maszyna. Tutaj już łatwiej tworzyć byty. Miałam zostać przy Windowsie i Pythonie3, ale przygotowując się do warsztatów Daftcode na Politechnice przeczytałam wymagania dla środowiska Windows: zainstaluj wirtualną maszynę >> Ubuntu i postępuj zgodnie z instrukcjami dla Linuxa. Nie mam więcej pytań.

I jednak Python2. Bo większość kodu jest w 2. Już to słyszałam kilkukrotnie, m.in w książce Learn Python the hard wayJust learn Python 2 and ignore people saying Python 3 is the future. No problem.

Potem oczywiście przyszedł czas na Django. Po raz kolejny polecam wszystkim początkującym stwórcom świata Tutorial Django Girls. Jeżeli średni czas tworzenia świata to siedem dni, ja padam z nóg po pracowitym poniedziałku. Kto nie lubi wtedy usłyszeć: Gratulacje! Właśnie stworzyłaś swoją pierwszą stronę i uruchomiłaś ją za pomocą serwera! Prawda, że wspaniale? Brawo ja.

Na wtorek mam zadanie do odrobienia. Jeżeli mój projekt ma być czymś więcej niż zwykłą aplikacją webową w Django, a założyłam sobie, że to będzie coś na wzór wirtualnego doradcy, muszę dowiedzieć się więcej o systemach dialogowych. W skrócie, system dialogowy to program umożliwiający porozumiewanie się człowieka z komputerem. Jak? Są trzy opcje: poprzez interfejs tekstowy, głosowy lub graficzny. Tutaj nie będę szaleć, tekst jak najbardziej mi wystarczy.

Jakie znamy systemy dialogowe? Jest tego trochę, ale skupmy się na dziewczynach. ELIZA, coś na wzór wirtualnego psychoanalityka, napisana w języku SLIP – rozszerzeniu Fortrana. Wyszukuje słowa-klucze w wypowiedzi użytkownika i na tej podstawie generuje ‚pasującą’ odpowiedź. Jeżeli nie znalazła słowa-klucza, rzuca randomowy tekst. Czy to nie brzmi jak esencja psychoterapii?

Młodsza i podobno bardziej rozgarnięta siostra Elizy, ALICE, została stworzona w AIML – Artificial Intelligence Markup Language. Brzmi srogo. ALICE ma podpiętą bazę wiedzy o świecie, sama zadaje pytania użytkownikowi, ma kilka odpowiedzi na jedno pytanie, a nawet sama poprawia błędy użytkownika.

Jest jeszcze bardziej współczesna, znana dobrze wszystkim Siri. Siri nie tylko gada, ale wykonuje polecenia. Wysyła SMSy, zapisuje wydarzenia w kalendarzu, znajdzie drogę do wybranego miejsca… I uczy się naszych zachowań, żeby w przyszłości lepiej wykonywać polecenia. A mówi się, że dzisiejsza młodzież jest mniej lotna.

Ale wróćmy do AIML. Jest to język znacznikowy, wykorzystujący składnię języka XML, który używany jest przy tworzeniu baz wiedzy dla systemów dialogowych. Podstawowym elementem AIML jest kategoria, składająca się z pytania (wzorca) i odpowiedzi (szablonu). Mając te dwie wartości, budowany jest podstawowy dialog. Na pytanie zawierające dany wzorzec, program odpowiada pasującym szablonem, np. na ‚Hej, co u ciebie?’, uzyskamy odpowiedź: ‚Elo ziomuś, wszystko po staremu’.

Kategoria może zawierać kontekst, np. kiedy zapytamy: ‚Jak ci poszła sesja?’, a użytkownik odpowie: ‚Nie ma spiny, są drugie terminy’, po wprowadzeniu kontekstu możemy pociągnąć temat i zadać następne pytania: ‚Dużo masz poprawek?’.

Język AIML nie umożliwia określenia więcej niż jednego wzorca pytania w ramach jednej kategorii, ale udostępnia mechanizm synonimów. Dzięki temu możemy zdefiniować taki sam szablon odpowiedzi dla różnych wzorców pytań.

Jest jeszcze tytułowy NLTK (Natural Language Toolkit).  NLTK to platforma składająca się z programów i bibliotek napisanych w Pythonie, służących do przetwarzania języka naturalnego. Umożliwia analizę statystyczną i symboliczną, a także udostępnia przykładowe zestawy danych oraz moduły wizualizacji graficznych. I, co dla mnie najważniejsze – może być z łatwością wykorzystane nawet przez początkujących programistów. Nie potrzebuję więcej argumentów, żegnaj AIML (mogłam tyle o tobie nie czytać, seriale same się nie obejrzą), witaj NLTK.

Wybór technologii powoli się klaruje, na mój skromny użytek podstawy podstaw z ich zakresu powinny spokojnie wystarczyć.

Co do podpinania zewnętrznych baz danych – brzmi kusząco, ale mój bot nie musi zgrywać inteligentnego. W końcu jest rekruterem.

Sama stworzę pulę możliwych wypowiedzi, mam na tyle ułatwione zadanie, że to bot będzie zadawał pytania, ewentualnie komentował odpowiedzi kandydata. Oczywiście będzie podsumowanie rozmowy i być może feedback. Jeżeli rekruter uzna to za słuszne. Przewiduję kilka zwrotów akcji, jak tak sobie o tym myślę, to będzie bardziej gra niż wirtualny doradca. Zobaczymy, co się z tego wykluje.

 

 

 

Reklamy

1 thought on “WTF is NLTK?”

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj / Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj / Zmień )

Zdjęcie na Google+

Komentujesz korzystając z konta Google+. Wyloguj / Zmień )

Connecting to %s