Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Бизнес-решения > Скрипты, программы и технические решения
Дата
USD/RUB58.9960
BTC/USD0.0000
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии.

Закрытая тема
Опции темы Опции просмотра
Старый 02.12.2014, 13:51   #1
Sultan
на позитиве!
 
Аватар для Sultan
 
Регистрация: 23.01.2011
Сообщений: 1,702
Бабло: $301615
Exclamation Автоматическая категоризация

Помогите составить грамотный (оптимальный) запрос для подбора категории в mysql.

хотелось бы быстро получать категорию при отправки
title - description

имеем большую эталонную модерируемую базу данных продуктов
title - description - category

нужно получить несколько категорий из имеющихся с процентным совпадением по каждому полю отправляемых заголовков и описания

т.е. в результате надо, чтоб автоматом категория выбралась
Sultan вне форума  
Старый 02.12.2014, 14:19   #2
chesser
автоматизирую интернеты
 
Аватар для chesser
 
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,382
Бабло: $470735
По умолчанию

Цитата:
Сообщение от Sultan
запрос для подбора категории в mysql
эти слова вводят в заблуждение...ты не знаешь, как это выглядит на алгоритмическом уровне, а уже полез в детализацию (mysql).
И вообще не понятно, откуда тут mysql, зачем автопостинг упомянут.

если это вопрос по mysql - давай структуру БД или отдельных таблиц.

если это вопрос про алгоритмы, то используй алгоритмы классификации или кластеризации, если лень - найди готовый сервис.
__________________
USA и NL серверы и VPS | wiki | блог | Drupal | NginxТДС
Ave, Google, morituri te salutant! © chesser
chesser вне форума  
Старый 02.12.2014, 14:23   #3
Sultan
на позитиве!
 
Аватар для Sultan
 
Регистрация: 23.01.2011
Сообщений: 1,702
Бабло: $301615
ТС -->
автор темы ТС По умолчанию

говоря простым языком мне надо
1. найти наиболее подходящую категорию из title - description - category
2. на входе имеется title - description от юзера
нужен запрос чтоб это проводить быстро, так понятно?

Последний раз редактировалось Sultan; 02.12.2014 в 14:28.
Sultan вне форума  
Старый 02.12.2014, 16:14   #4
chesser
автоматизирую интернеты
 
Аватар для chesser
 
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,382
Бабло: $470735
По умолчанию

Цитата:
Сообщение от Sultan
нужен запрос чтоб это проводить быстро, так понятно?
1) я бы на твоем месте под такой нелегкий вопрос завел отдельный топик, попроси модератора?
2) ты не знаешь как его решить алгоритмически, а уже хочешь сразу решение в mysql, тем более, на мой вгляд, одним mysql тут не обойтись
3) пример:
category = экономика, наука, автомобили
title = Передвижение по городу
descr = Ученые-экономисты провели научно-исследовательскую работу доказали, что в городах экономичнее передвигаться на малолитражках, что способствовало росту популярности этих автомобилей

тут какая категория из перечисленных? особенно "наиболее подходящая"

если делать по уму, то тут надо классификатор, основанный на алгоритмах ML, ну или готовое решение какое-то.
__________________
USA и NL серверы и VPS | wiki | блог | Drupal | NginxТДС
Ave, Google, morituri te salutant! © chesser
chesser вне форума  
Старый 02.12.2014, 17:35   #5
Sultan
на позитиве!
 
Аватар для Sultan
 
Регистрация: 23.01.2011
Сообщений: 1,702
Бабло: $301615
ТС -->
автор темы ТС По умолчанию

chesser, да можно и создать, только не думаю что интерес будет
хотел простого решения
есть ведь эталон отмодерированный и в описниях и названиях встречаются определенные типичные слова
допустим
б.д.
1. силиконовый чехол iphone - красивый чехол с принтом бла бла - чехлы для мобил
2. самсунг плазма тв - четкий 3д смарт тв и т.п. -телики
юзер пихает
что то про телик, делается выборка из того что мы уже имеем и по колличетву вхождений определится категория телик

как видишь алго в моем понимание есть примерное
аналогично и в твоем примере
есть допустим бд где все посты разложены по полочкам, например распарсили rss ворд прессов
и при добавлении твоего примерного поста, ищим,смотрим, считаем, что там уже использовалось в распарсеном(категории,теги..)

а если допустим недостает данных, ставим на модерацию

и по скольку бд не маленькая и категорий больше 1к простым запросом наверное не обойтись
Sultan вне форума  
Старый 02.12.2014, 18:23   #6
chesser
автоматизирую интернеты
 
Аватар для chesser
 
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,382
Бабло: $470735
По умолчанию

Sultan, я еще хотел сказать, что частотный анализ слов тут не лучшее решение, к тому же, оно должно учитывать морфологию.

но если очень убедиться, что решение в лоб не работает, то как-то так:

SELECT C.category_name, COUNT (C.category_id) AS freq
FROM category AS C
INNER JOIN product AS P ON C.category_id=P.category_id
WHERE '%телек%' LIKE P.product_title OR '%телек%' LIKE P.product_descr
GROUP BY C.category_id
ORDER BY freq DESC
LIMIT 1

вместо телек вставляешь юзерский текст....причем, по-словно
__________________
USA и NL серверы и VPS | wiki | блог | Drupal | NginxТДС
Ave, Google, morituri te salutant! © chesser
chesser вне форума  
Старый 02.12.2014, 18:56   #7
Sultan
на позитиве!
 
Аватар для Sultan
 
Регистрация: 23.01.2011
Сообщений: 1,702
Бабло: $301615
ТС -->
автор темы ТС По умолчанию

chesser, спасибо за пример, хвалю при такой выборке погрешности будут, просто потому что в какой то категории может быть продуктов в сотни раз больше чем в нужной. потому надо учитывать процент вхождений по каждой категории, так можно? и долго отрабатывает сука, а фишка нужная модераторы будут счастливы.
конечно в идеале и морфо использовать но можно и 3-4 символа с конца на длинных словах удалять. походу надо сфинкс курить или что то подобное.
Sultan вне форума  
Старый 02.12.2014, 19:30   #8
Юнга
white powder
 
Аватар для Юнга
 
Регистрация: 29.04.2007
Сообщений: 2,650
Бабло: $351040
По умолчанию

эластиксёрч
__________________
господин мойва любит вас
Юнга на форуме  
Старый 02.12.2014, 20:33   #9
chesser
автоматизирую интернеты
 
Аватар для chesser
 
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,382
Бабло: $470735
По умолчанию

Цитата:
Сообщение от Юнга
эластиксёрч
и там есть морфологический классификатор?

Цитата:
Сообщение от Sultan
просто потому что в какой то категории может быть продуктов в сотни раз больше чем в нужной
ну...раз много продуктов со словом "телек" входят в категорию "Телевизоры", значит юзер, скорее всего, хочет добавить текст в "Телевизоры"...не?

тут могла бы быть другая проблема, если бы запрос считал количество "телек" в конкретном описании каждого продукта, но LIKE считает только вхождение: да или нет. Хотя, даже этот случай нельзя оценивать как ошибочный, т.к. многократное упоминание слов "телек" в одном тексте свидетельствует о высокой степени принадлежности юзерского текста к этому продукту, но тогда и надо бы учесть количество повторов этого кея в юзерском тексте...как-то так

короче, задача не легкая и проще ее решать а) эмпирически б) эвристически
__________________
USA и NL серверы и VPS | wiki | блог | Drupal | NginxТДС
Ave, Google, morituri te salutant! © chesser
chesser вне форума  
Старый 02.12.2014, 21:09   #10
Sultan
на позитиве!
 
Аватар для Sultan
 
Регистрация: 23.01.2011
Сообщений: 1,702
Бабло: $301615
ТС -->
автор темы ТС По умолчанию

chesser, нельзя не согласится, просто заголовки разные бывают. и мне видится таким оброзом меньше брака будет при категоризации. вообщем sql запросом не получится сортировку по проценту относительно категорий, это уже програмно?
что касается электроники то такой способ будет в большинстве случаев точным т.к. там параметры и метрика аналогичная.
Sultan вне форума