Извлечение знаний на службе у Яндекс.Маркета

28 июня 2010, 16:52

 

Технологии извлечения знаний занимают важное место среди технологий Яндекс.Маркета. Мы давно работаем в этом направлении: наши роботы находят обзоры товаров и документацию на сайтах производителей, другие компоненты классифицируют товары по категориям и привязывают их к карточкам моделей. О последнем достижении на этом поприще — выборе по параметрам во многих популярных категориях Яндекс.Маркета — мы рассказывали совсем недавно.

Как главных товароведов Яндекса, нас особенно заинтересовала формализация параметров товаров, то есть извлечение параметров и их значений из разнообразных текстовых описаний и приведение их к удобному для восприятия и обработки виду. Мы решили дополнить наш арсенал по извлечению знаний компонентом, который получил название «Формализатор».

Для начала мы выбрали 170 категорий, которые пользуются популярностью у наших пользователей. Для каждой из этих категорий был составлен список наиболее важных параметров. По выбранным параметрам осуществляется формализация предложений магазинов в рамках категорий. Формализатор разбирает текст предложения магазина на составные части, а затем распознает в полученном наборе элементов параметры товара, их значения и единицы измерения и устанавливает взаимосвязи между ними. Для различных параметров применяются ограничения на допустимые значения, а по результатам формализации разрешаются «конфликты», когда на одно значение претендует сразу несколько параметров. Как различить, например, где в строке «DDRII 4096Mb Geforce GTX 295 1792Mb» указана оперативная память компьютера, а какое значение показывает объем видеопамяти? Разбирающийся в компьютерах человек без труда ответит на этот вопрос, а как в подобных случаях быть Формализатору? Ему помогает «умение» учитывать контекст и распознавать в нем названия процессоров, видеокарт, материнских плат и много другого. Формализатор понимает, что рядом с типом оперативной памяти DDRII будет указан ее объем, а за названием видеокарты, вероятнее всего, следует объем видеопамяти. Формализатор также легко конвертирует единицы измерения из одной системы в другую и различает «правильные» гигабайты, равные 1000 мегабайт, в которых измеряется объем жестких дисков, и «неправильные», но популярные — объемом 1024 мегабайта, — используемые для оперативной памяти.

 

 

В результате из описания товара мы получаем осмысленный набор параметров, по которым наши пользователи могут быстро и просто выбрать товар во множестве популярных категорий Яндекс.Маркета. Причем, наш Формализатор одинаково хорошо справляется как с конфигурациями компьютеров, так и с матрасами, акустическими гитарами, роликовыми коньками и многим другим. Однако Формализатор тоже иногда ошибается, поэтому мы предоставили магазинам возможность «подстраховаться» — явно указать параметры товаров и их значения в специальном теге YML-файла, который мы недавно начали принимать от магазинов. Эти данные также оказываются полезными при обучении Формализатора.

Наш Формализатор трудится не покладая рук — сейчас он непрерывно обрабатывает около 1,5 миллионов предложений магазинов из 170 категорий товаров! А в перспективе этот уникальный компонент может приносить ещё больше пользы. К примеру, нам теперь по зубам прайс-листы, содержащие в одном поле через слеш целый клад данных, в которых с первого прочтения и человек разберется не сразу. Формализатору под силу обрабатывать практически любые спецификации, даже китайские и японские, для чего достаточно подключить соответствующие словари. Правда, мы не уверены, что это задача «первой необходимости» для Яндекс.Маркета :).

Первые результаты альтернативного применения Формализатора уже налицо: мы реализовали простую и удобную функциональность — факты о товарах на основе отзывов пользователей. А какие интересные задачи для нашего Формализатора видите вы?

Команда Яндекс.Маркета, извлекаем знания

12 комментариев
Есть ли у команды Яндекс.Маркета планы по реализации веб-апи для формализатора? (на входе - текстовое описание товара, на выходе - формализованное описание в виде json/xml)?

Пример практического применения: идентификация товаров при загрузке накладных, прайс-листов различных поставщиков в информационные базы (1С, Navision и т.п.).

Спасибо.


Пока таких планов нет. Но спасибо за предложение, возможно в будущем что-то сделаем.
чем сложнее магазин, тем опастнее он :-)
Алексей Кузнецов
28 июня 2010, 20:59
А не хотите усилия в первую очередь направить именно на обработку прайс-листов (у многих это просто файл Excel на сайте), чем на обработку пространных текстовых описаний?


Известно ли Формализатору, что у таких-то, к примеру, видеокарт, могут быть только такие-то объёмы видеопамяти? Это насчёт "где память компьютера, а где видеокарты".
Кардапольцев Андрей
29 июня 2010, 10:31
Прайслистами в экселе обязательно займёмся.
Кардапольцев Андрей
29 июня 2010, 10:33
Память видеокарты, как правило, меньше оперативной.
Алексей Кузнецов
29 июня 2010, 11:40

Но не обязательно. Вполне вероятно встретить компьютер с 512 МБ ОЗУ и с видеокартой с бОльшим объёмом памяти: многие "дешёвые" производители продают такие карты низкого уровня.
Но я, собственно, о другом. Мысль была смотреть не только на относительные объёмы памяти компьютера и видеокарты, но и на конкретные. Вот например у Nvidia GeForce GTX 470 объём памяти 1280 МБ, причём типа GDDR5. Соответственно, если Формализатор встречает это довольно специфичное число 1280, он должен предположить, что скорее всего это память видеокарты.

я думаю так всетаки более строгие соответствия применяются.. Хотя если они там это решают статистическими методами в том числе- то оно само так получицца..
Прикольно. Молодцы. Тока чтото долго делали- что вам мешало этоу штуку сделать с самого начала ЯндексМаркета?
И еще скажите- как в ваш отдел датамайнинга на работу устроицца, а?
:)
Следите за обновлениями на этой странице - http://company.yandex.ru/job/vacancies/

может быть, если данные формализуются, то заодно переводить Мб в МБ и Гб в ГБ?


Или я придираюсь?. ;]

Предлагаем скрипт формирования YML выдачи для магазинов на  joomshopping

http://www.scanerlink.ru/forum/viewtopic.php?f=18&t=243