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

Всем привет

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

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

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

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

Войти через центр авторизации
Похожие вопросы
ZAVOD Games Москва
от 80 000 до 120 000 руб.
от 50 000 до 80 000 руб.
ELKO Москва
от 150 000 руб.
22 апр. 2019, в 11:02
30000 руб./за проект
22 апр. 2019, в 11:00
1800 руб./за проект
22 апр. 2019, в 10:37
5000 руб./за проект