NLP ÉS SZÁNDÉKOS KIVONÁS Liksi Blog
Robin Leclerc | 2018. július 16. | Vissza | 0 |

Philippe előző cikkében elmondta, a Liksi-nél szeretjük a chatbotokat. És még ha szeretjük is a Dialogflow-t, elmondjuk magunknak, hogy hasznos megoldás lehet a Google tarifaváltása esetén (lásd a Google Maps nemrégiben). Ez azonban nem csak árképzési kérdés. Amint azt a BreizhCamp 2018-ról szóló cikkben említettem, időnként nem lehet adatait adni egy olyan harmadik fél szolgáltatásának, mint a Dialogflow. Megnéztük tehát azokat a projekteket, amelyek lehetővé teszik ezt nekünk, és számos megoldást találtunk, például a Rasa a rasa_nlu megoldással.
A cikk célja bemutatni, mi a természetes nyelvű feldolgozó (NLP) motor, és elmagyarázni működésének egy részét a szöveges témakivonat (vagy chatbot szándékának) kódolásával a pythonban. A kód egy részét a cikk tartalmazza. Az összes kód, amely a fő lépések megértéséhez elméleti részletek nélkül foglalkozik, elérhető a cikk github-tárában .
A chatbot (más néven beszélgető ügynök) lehetővé teszi, hogy csevegjen egy felhasználóval. Például kérhetünk tőle hiányzó információkat egy szükségletről (annak a pizzának a neve, amelyet a felhasználó el akar enni), vagy egyszerűen végezhetünk műveleteket és válaszolhatunk a felhasználónak. Ennek a fekete varázslatnak a megvalósításához választhat egy NLP motort.
Az NLP motornak két fő funkciója van:
- Keresse meg a mondathoz társított műveletet/témát (szándék angolul)
- Keresse meg az ebben a mondatban található paramétereket (entitások angolul)
NLP motor általános működése
A Rasa egy NLP motor, amely lehetővé teszi a meghatározást gépi tanulási csővezetékek elérni ezt. Az alábbiakban magas szintű áttekintést adunk a Rasában elérhető szándékos extrakciós lánc különböző összetevőiről. Ezek részletes értékelése a Rasa megoldásban nem lehetséges, így bemutatunk egy módszert, amely ezt lehetővé teszi, ha példát veszünk a korpusz egy részének besorolásáról 20 hírcsoportból. Vagyis keresse meg a kategóriákkal a szöveghez társított hírcsoportot:
- sci.tér
- sci.elektronika
- comp.sys.mac.hardware
- comp.windows.x
- rec.sport.baseball
- rek.sport.jégkorong
A scikit-learn használatával lekérjük az alábbi kategóriákkal kapcsolatos adatokat:
Az osztályozási algoritmusok gyakran ugyanúgy működnek: a jellemző vektor amely az adatainkat képviseli (mondatunk az NLP esetben), és kimenetként megkapjuk annak a valószínűségét, hogy ezek az adatok ilyen vagy olyan más kategóriába tartoznak (a szándékok, amelyekről korábban beszéltünk).
A jó eredmények elérése érdekében meg kell vizsgálni, hogyan lehet ezeket a vektorokat felépíteni (Featurization lépés az alábbi képen). Két módszert mutatunk be a cikk további részében (CountVectorizer vagy szavak zsákja és Word2Vec).