Ребят, у меня здесь NLP задача и я был бы очень благодарен если бы подсказал в каком направлении двигаться!
Есть значит у меня телефонные разговоры операторов с абонентами (речь уже преобразована в текст (английский), и уже произведена классификация того что говорит абонент, и то что говорит оператор). Задача выявить чем абонент разочарован, чтобы при последующим звонке того же абонента, оператор выдел на экране в чём разочарование состояло.
Сейчас все реализовано следующим образом: с помощью regular expressions ведётся поиск отрицательных слов, типа "разочарован", "зол", и т.д. Далее от каждого такого слова отчитывается десять слов в право и десять в лево (пунктуации в тексте нету, поэтому нельзя просто выбрать интересуемое предложение). Получаем кусок текста который потенциально несет negative sentiment. Если в одном разговоре таких слов много, то будет создано много кусков текста. Далее используется Vader из NLTK для скоринга каждого такого куска текста. Выбирается наиболее негативный кусок и он и показывается оператору, когда этот же абонент звонит в следующий раз.
Алгоритм не идеальный по многим причинам. Основная:
Vader приписывает значительный отрицательный скор, обрывкам теста, которые по сути являются набором бессвязных слов. Понятно что Vader не особо в этом виноват, так как такое качество исходного текста. К слову, я не могу повлиять на способ преобразования звука в текст :(