NLP ȘI EXTRACȚIE INTENȚIONALĂ Blog Liksi

Postat de Robin Leclerc | 16 iulie 2018 | Înapoi | 0 |

intențională

Philippe a spus-o în articolul său anterior, la Liksi adorăm chatbot-urile. Și chiar dacă ne place Dialogflow, ne spunem că poate fi util să avem o soluție alternativă în cazul unei modificări a prețului Google (a se vedea recent Google Maps). Cu toate acestea, aceasta nu este doar o problemă de stabilire a prețurilor. După cum am menționat în articolul despre BreizhCamp 2018, uneori nu este posibil să furnizați datele dvs. către un serviciu terță parte, cum ar fi Dialogflow. Așadar, ne-am uitat la proiecte care ne permit să facem acest lucru singuri și am găsit mai multe soluții, de exemplu Rasa cu soluția sa rasa_nlu.

Scopul acestui articol este de a introduce ce este un motor de procesare a limbajului natural (NLP) și de a explica o parte a modului în care funcționează prin codificarea unui extractor de temă text (sau intenția unui chatbot) în python. O parte din cod va fi dată în articol. Tot codul pentru a înțelege pașii principali fără a intra în detalii teoretice este disponibil în depozitul github al articolului .

Un chatbot (numit și agent de conversație) vă permite să discutați cu un utilizator. De exemplu, îi putem solicita informații lipsă despre o nevoie (numele pizzei pe care utilizatorul dorește să o mănânce) sau pur și simplu să efectuăm acțiuni și să răspundem utilizatorului. Pentru a lucra cu această magie neagră, puteți alege să includeți un motor NLP.

Un motor NLP are două funcții principale:

  • Găsiți acțiunea/tema asociată unei propoziții (intenție în limba engleză)
  • Găsiți parametrii conținuți în această propoziție (entități în limba engleză)

Funcționarea generală a unui motor NLP

Rasa este un motor NLP și vă permite să definiți conducte de învățare automată pentru a realiza acest lucru. Mai jos vom oferi o imagine de ansamblu la nivel înalt a diferitelor componente ale unui lanț de extracție intenționat disponibile în Rasa. Evaluarea detaliată a acestora nu este posibilă în soluția Rasa, astfel vom prezenta o metodă care permite acest lucru luând exemplul clasificării unei părți din corpus din 20 de grupuri de știri. Adică, găsiți grupul de știri asociat unui text printre categoriile:

  • sci.space
  • sci.electronică
  • comp.sys.mac.hardware
  • comp.windows.x
  • rec.sport.baseball
  • rec.sport.hochei

Vom folosi scikit-learn pentru a prelua datele referitoare la aceste categorii:

Algoritmii de clasificare funcționează adesea în același mod: punem un vector de caracteristici reprezentând datele noastre (propoziția noastră în cazul NLP) și obținem la ieșire probabilitatea ca aceste date să aparțină unei astfel de categorii (intențiilor despre care am vorbit anterior).

Pentru a obține rezultate bune, trebuie să vă uitați la cum să construiți acești vectori (pasul de caracterizare din imaginea de mai jos). Două metode vor fi prezentate în restul articolului (CountVectorizer sau Bag of Words și Word2Vec).