Как правильно искать совпадение по словам в php?

Всем привет

Есть большой архив переписки с клиентами. Задача автоматически сегментировать далоги, собрать эмоциональный окрас диалогов (все хорошо, проблема, продажи, конкуренты итд). Т.е. фактически прогнать все диалоги на наличие каких-то ключевых слов. Как это правильно сделать, чтобы не сильно проседать по скорости работы?

p.s. либо есть смысл уже использовать дерево с помощью python big data?
  • Вопрос задан
  • 329 просмотров
Пригласить эксперта
Ответы на вопрос 3
inoise
@inoise Куратор тега PHP
Solution Architect, AWS Certified, Serverless
Либо прочитать, например, про Elastic Search или Sphinx
Ответ написан
Комментировать
@Alk90
php, mysql, jquery, css, html, api
Вряд ли есть необходимость брать весь диалог, из-за возможности встречающихся ключевых слов в процессе разговора, не относящихся к сути обращения.
Имеет смысл взять только первое сообщение от клиента, в котором он излагал суть обращения. А значит сократить объем обрабатываемых данных. Если нет, то не сильно это усложнит обработку, если обрабатывать все сообщения, даже если их миллионы - Это же одиночная обработка. Дальше вы будуте обрабатывать новые входящие обращения на лету. Значит:
1. Выбрать первые сообщения всех диалогов из БД. (можно с использованием limit и пометкой после обработки, что этот диалог уже обработан).
2. Циклом пробегаетесь по всем полученным данным. Внутри цикла foreach с массивом ключевых слов а внутри foreach функция stripos(). если есть совпадение с ключевым словом - кидаем в массив совпадений ID диалога и ID ключевого слова.
3. После прохождения всех диалогов. Записываете в отдельную таблицу ID диалогов и ключевых слов одним запросом.

Далее все новые вопросы обрабатываете таким же способом. А список диалогов получаете так же как и получали, но уже с использованием JOINа к новой таблице, чтобы вывести соответствующие пометки
Ответ написан
Комментировать
@dmtrrr
Backend developer
NLP
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы