Я работаю с API, который сопоставляет мои запросы GTIN/EAN с данными о продуктах.
Поскольку возвращаемые данные происходят из кормов товарных продуктов, следующее почти повсеместно:
- Несколько результатов в GTIN
- Названия продуктов в значительной степени неструктурированы.
- Названия продуктов "загрязнены"
- Связанный с SEO материал,
- информация о количестве, содержащемся,
- "купить два, получить один бесплатный" предложения,
- и др.
Я ищу программный способ
- выберите "самую чистую" /самую доступную каноническую версию
- или создать новый, который представляет "самый низкий общий знаменатель".
Рассмотрим следующий пример для одного запроса EAN:
- Nivea Deo Roll-On Dry Impact для мужчин
- NIVEA DEO Roll on Dry/blau
- Nivea Deo Roll-On Dry Impact для мужчин, 50 мл, 3er Pack (3 x 50 мл).
- Nivea Deo Roll on Dry/blau 50 ml
- Nivea Deoroller 50 мл сухой для мужчин blau Mindestabnahme: 6 Stück (1 VE)
- NIVEA Deoroller, сухое воздействие для мужчин
- NIVEA DEO Roll on Dry/blau_50 ml
Мой подход домохозяйства выглядит следующим образом:
- Основная очистка:
- Опишите заголовки,
- удалить лишние пробелы,
- выбросить очевидные временные слова, такие как "купить" и "click"
- Создайте массив для
word => global occurence
-
"Nivea" => 7
-
"Deo" => 5
-
"Deoroller" => 2
-
…
-
"VE" => 1
-
- Рассчитайте "совокупное значение слова" для каждого из названий
-
"Nivea Deo" => 12
-
"Nivea Deoroller VE" => 10
-
- Разделите кумулятивное значение по длине заголовка, в результате получив оценку
-
"Nivea Deo" => 6
-
"Nivea Deoroller VE" => 3.34
-
Очевидно, что мой подход является довольно простым, подверженным ошибкам и предвзятым отношением к коротким предложениям с часто используемыми словами - дает более или менее удовлетворительные результаты.
- Вы бы выбрали другой подход?
- Есть ли какой-нибудь магический способ NLP для решения проблемы, о которой я не знаю?