НЛП И НАМЕРНО ИЗВАДЯВАНЕ Liksi Blog
Публикувано от Робин Леклерк | 16 юли 2018 г. | Назад | 0 |

Филип го каза в предишната си статия, в Liksi обичаме чат ботове. И дори ако харесваме Dialogflow, ние си казваме, че наличието на резервно решение в случай на промяна на цената на Google може да бъде полезно (вижте Google Maps наскоро). Това обаче не е само въпрос на ценообразуване. Както споменах в статията за BreizhCamp 2018, понякога не е възможно да предоставите вашите данни на услуга на трета страна като Dialogflow. И така, разгледахме проекти, които ни позволяват да направим това сами и намерихме няколко решения, например Rasa с неговото решение rasa_nlu.
Целта на тази статия е да представи какво представлява механизмът за обработка на естествен език (NLP) и да обясни част от начина, по който работи, като кодира екстрактор на текстови теми (или намерение за chatbot) в python. Част от кода ще бъде дадена в статията. Целият код за разбиране на основните стъпки, без да навлизате в теоретични подробности, е достъпен в хранилището на github на статията .
Chatbot (наричан още разговорен агент) ви позволява да разговаряте с потребител. Например можем да го помолим за липсваща информация за нужда (името на пицата, която потребителят иска да яде), или просто да извършим действия и да отговорим на потребителя. За да работите с тази черна магия, можете да изберете да включите NLP двигател.
Двигателят на NLP има две основни функции:
- Намерете действието/темата, свързана с изречение (намерение на английски)
- Намерете параметрите, съдържащи се в това изречение (субекти на английски)
Обща работа на NLP двигател
Rasa е NLP двигател и ви позволява да дефинирате тръбопроводи за машинно обучение за да се постигне това. По-долу ще дадем общ преглед на различните компоненти на веригата за извличане на намерения, налични в Rasa. Подробната оценка на тях не е възможна в решението на Rasa, затова ще представим метод, позволяващ това, като вземем примера за класификацията на част от корпуса от 20 дискусионни групи. Тоест, намерете дискусионната група, свързана с текст, сред категориите:
- sci.space
- sci.electronics
- comp.sys.mac. хардуер
- comp.windows.x
- rec.sport.baseball
- rec.sport.hockey
Ще използваме scikit-learn за извличане на данните, свързани с тези категории:
Алгоритмите за класификация често работят по един и същ начин: поставяме a вектор на характеристиките представляващи нашите данни (нашето изречение в случая с НЛП) и ние получаваме като изход вероятността тези данни да принадлежат към една или друга друга категория (намеренията, за които говорихме по-рано).
За да получите добри резултати, трябва да разгледате как да изградите тези вектори (стъпка за характеристика на изображението по-долу). Два метода ще бъдат представени в останалата част на статията (CountVectorizer или чанта с думи и Word2Vec).