Технологии извлечения знаний занимают важное место среди технологий Яндекс.Маркета. Мы давно работаем в этом направлении: наши роботы находят обзоры товаров и документацию на сайтах производителей, другие компоненты классифицируют товары по категориям и привязывают их к карточкам моделей. О последнем достижении на этом поприще — выборе по параметрам во многих популярных категориях Яндекс.Маркета — мы рассказывали совсем недавно.
Как главных товароведов Яндекса, нас особенно заинтересовала формализация параметров товаров, то есть извлечение параметров и их значений из разнообразных текстовых описаний и приведение их к удобному для восприятия и обработки виду. Мы решили дополнить наш арсенал по извлечению знаний компонентом, который получил название «Формализатор».
Для начала мы выбрали 170 категорий, которые пользуются популярностью у наших пользователей. Для каждой из этих категорий был составлен список наиболее важных параметров. По выбранным параметрам осуществляется формализация предложений магазинов в рамках категорий. Формализатор разбирает текст предложения магазина на составные части, а затем распознает в полученном наборе элементов параметры товара, их значения и единицы измерения и устанавливает взаимосвязи между ними. Для различных параметров применяются ограничения на допустимые значения, а по результатам формализации разрешаются «конфликты», когда на одно значение претендует сразу несколько параметров. Как различить, например, где в строке «DDRII 4096Mb Geforce GTX 295 1792Mb» указана оперативная память компьютера, а какое значение показывает объем видеопамяти? Разбирающийся в компьютерах человек без труда ответит на этот вопрос, а как в подобных случаях быть Формализатору? Ему помогает «умение» учитывать контекст и распознавать в нем названия процессоров, видеокарт, материнских плат и много другого. Формализатор понимает, что рядом с типом оперативной памяти DDRII будет указан ее объем, а за названием видеокарты, вероятнее всего, следует объем видеопамяти. Формализатор также легко конвертирует единицы измерения из одной системы в другую и различает «правильные» гигабайты, равные 1000 мегабайт, в которых измеряется объем жестких дисков, и «неправильные», но популярные — объемом 1024 мегабайта, — используемые для оперативной памяти.
В результате из описания товара мы получаем осмысленный набор параметров, по которым наши пользователи могут быстро и просто выбрать товар во множестве популярных категорий Яндекс.Маркета. Причем, наш Формализатор одинаково хорошо справляется как с конфигурациями компьютеров, так и с матрасами, акустическими гитарами, роликовыми коньками и многим другим. Однако Формализатор тоже иногда ошибается, поэтому мы предоставили магазинам возможность «подстраховаться» — явно указать параметры товаров и их значения в специальном теге YML-файла, который мы недавно начали принимать от магазинов. Эти данные также оказываются полезными при обучении Формализатора.
Наш Формализатор трудится не покладая рук — сейчас он непрерывно обрабатывает около 1,5 миллионов предложений магазинов из 170 категорий товаров! А в перспективе этот уникальный компонент может приносить ещё больше пользы. К примеру, нам теперь по зубам прайс-листы, содержащие в одном поле через слеш целый клад данных, в которых с первого прочтения и человек разберется не сразу. Формализатору под силу обрабатывать практически любые спецификации, даже китайские и японские, для чего достаточно подключить соответствующие словари. Правда, мы не уверены, что это задача «первой необходимости» для Яндекс.Маркета :).
Первые результаты альтернативного применения Формализатора уже налицо: мы реализовали простую и удобную функциональность — факты о товарах на основе отзывов пользователей. А какие интересные задачи для нашего Формализатора видите вы?
Команда Яндекс.Маркета, извлекаем знания