@Terras

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

Всем привет

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

p.s. либо есть смысл уже использовать дерево с помощью python big data?
  • Вопрос задан
  • 150 просмотров
Пригласить эксперта
Ответы на вопрос 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а к новой таблице, чтобы вывести соответствующие пометки
Ответ написан
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы
Email Soldiers Рязань
от 25 000 до 50 000 руб.
Amigoweb Магнитогорск
от 40 000 до 60 000 руб.
Roonyx Ростов-на-Дону
от 50 000 до 100 000 руб.