drholy revised this gist 3 months ago. Go to revision
1 file changed, 238 insertions
README.md(file created)
| @@ -0,0 +1,238 @@ | |||
| 1 | + | Да. Я сопоставил найденные наборы с локальными данными конкурса: 711 304 русскоязычные карточки, 365 654 бинарные пары, 20 категорий, поля `name / attributes / category`, много hard negatives, различающихся моделью, размером или фасовкой. Подробнее профиль виден в [README.md](A:/projects/ecup-matching/README.md:116). | |
| 2 | + | ||
| 3 | + | ## Лучшие аналоги | |
| 4 | + | ||
| 5 | + | | Приоритет | Датасет | Масштаб и разметка | Почему полезен | | |
| 6 | + | |---|---|---|---| | |
| 7 | + | | 1 | **WDC Products** | 11 715 офферов, 2 162 товара; pairwise и cluster labels; 27 вариантов | Лучший независимый тест hard negatives и unseen products | | |
| 8 | + | | 2 | **MARKT-PILOT** | 960 532 пары; 294 701 positive; отдельный вручную проверенный test на 5 000 пар | Почти тот же масштаб и бинарный формат, что у E‑CUP | | |
| 9 | + | | 3 | **WDC LSPM / products-2017** | 370 348 готовых пар; исходный корпус — 26 млн офферов | Близок по размеру и структуре, содержит названия, описания, бренды, характеристики | | |
| 10 | + | | 4 | **ProMap** | Небольшие ручные gold-наборы, English/Czech; изображения и спецификации | Очень качественные close negatives — лучший точечный regression test | | |
| 11 | + | | 5 | **Cross-lingual Product Matching** | 171 890 офферов, EN/DE/ES/FR; до 100 800 train-пар на язык и категорию | Проверка мультиязычного переноса и устойчивости к вариантам товара | | |
| 12 | + | | 6 | **PriceRunner** | 35 311 офферов, 10 категорий, 306 магазинов, product cluster IDs | Удобен для самостоятельного построения пар, особенно cross-shop | | |
| 13 | + | | 7 | **DeepMatcher product suite** | Amazon–Google, Walmart–Amazon, Abt–Buy | Классические небольшие regression-тесты | | |
| 14 | + | | 8 | **Alaska** | Около 70 000 спецификаций с 71 сайта и 15 000 имен атрибутов | Проверка обработки грязных разнородных JSON-атрибутов | | |
| 15 | + | | 9 | **ProductER** | Около 10 000 синтетических текстовых пар | Быстрый smoke-test рассуждений о модели/размере/комплектации | | |
| 16 | + | | 10 | **Amazon ESCI** | 2,62 млн ручных query-product judgments | Не прямой duplicate matching, но полезен для Exact vs Substitute vs Irrelevant | | |
| 17 | + | | 11 | **Shopee Product Matching** | Около 34 тыс. объявлений, 11 тыс. групп, текст и изображения | Полезен для мультимодального эксперимента, но хуже по лицензированию | | |
| 18 | + | | 12 | **Retail-786k / Stanford Online Products** | 786 тыс. и 120 тыс. изображений соответственно | Только для будущего визуального матчинга | | |
| 19 | + | ||
| 20 | + | ### 1. WDC Products — лучший именно для тестирования | |
| 21 | + | ||
| 22 | + | Это наиболее подходящий внешний benchmark. Он специально построен вокруг трех факторов: | |
| 23 | + | ||
| 24 | + | - 20%, 50% или 80% corner cases; | |
| 25 | + | - наличие товаров, не встречавшихся в обучении; | |
| 26 | + | - разный размер development set. | |
| 27 | + | ||
| 28 | + | Есть явный `is_hard_negative`, cluster IDs, pairwise labels и строгая непересекаемость офферов между split’ами. Поля: `title`, `description`, `brand`, `price`, `priceCurrency`. Архив pairwise-версии с 80% corner cases занимает всего 21,5 МБ. [Описание, схема и прямые загрузки](https://webdatacommons.org/largescaleproductcorpus/wdc-products/index.html). | |
| 29 | + | ||
| 30 | + | Рекомендация: использовать вариант **80% corner cases + максимальная доля unseen products** как основной внешний regression test. По логике он ближе всего к вашей `StratifiedGroupKFold`-валидации без пересечения товаров. | |
| 31 | + | ||
| 32 | + | ### 2. MARKT-PILOT — лучший большой внешний корпус | |
| 33 | + | ||
| 34 | + | Содержит 960 532 бинарные пары: | |
| 35 | + | ||
| 36 | + | - 294 701 positive; | |
| 37 | + | - 665 831 negative; | |
| 38 | + | - отдельный общий test из 5 000 вручную проверенных пар; | |
| 39 | + | - поднаборы S/M/L с разным дисбалансом. | |
| 40 | + | ||
| 41 | + | Файлы уже в Parquet, полный архив около 746 МБ. Лицензия явно указана как **CC BY-SA 4.0**. [Карточка и файлы MARKT-PILOT](https://huggingface.co/datasets/trettenmeier/markt-pilot). | |
| 42 | + | ||
| 43 | + | Это главный кандидат для проверки: | |
| 44 | + | ||
| 45 | + | - поведения PR-AUC на большом наборе; | |
| 46 | + | - устойчивости к дисбалансу; | |
| 47 | + | - переноса E5/cross-encoder на иностранный каталог; | |
| 48 | + | - калибровки вероятностей. | |
| 49 | + | ||
| 50 | + | Оговорка: открытая карточка не так подробно документирует процедуру формирования hard negatives, как WDC. Поэтому **ручной test используйте для оценки**, а огромный train — только для экспериментов после проверки правил конкурса. | |
| 51 | + | ||
| 52 | + | ### 3. WDC LSPM / `wdc/products-2017` | |
| 53 | + | ||
| 54 | + | Готовая версия на Hugging Face содержит 370 348 строк — почти ровно как 365 654 пары E‑CUP. Категории: | |
| 55 | + | ||
| 56 | + | - computers; | |
| 57 | + | - cameras; | |
| 58 | + | - watches; | |
| 59 | + | - shoes. | |
| 60 | + | ||
| 61 | + | Доступны `title`, `description`, `brand`, `price`, `specTableContent`, cluster ID и binary label. Обучающие метки получены через GTIN/MPN, тестовые пары проверялись экспертом. [Удобная Parquet-версия на Hugging Face](https://huggingface.co/datasets/wdc/products-2017). | |
| 62 | + | ||
| 63 | + | Исходный WDC LSPM ещё больше: | |
| 64 | + | ||
| 65 | + | - 26 млн офферов; | |
| 66 | + | - 16 млн товарных кластеров; | |
| 67 | + | - 4 400 вручную проверенных gold-пар; | |
| 68 | + | - train-наборы от примерно 9 тыс. до 214 тыс. пар; | |
| 69 | + | - отрицательные пары выбирались среди похожих кластеров, а не полностью случайно. | |
| 70 | + | ||
| 71 | + | Есть прямые загрузки всех категорий и исходного корпуса. [Официальная страница WDC LSPM](https://webdatacommons.org/largescaleproductcorpus/v2/index.html). | |
| 72 | + | ||
| 73 | + | Для ваших тестов лучше брать ненормализованные файлы: они сохраняют шум, пунктуацию и исходные описания. | |
| 74 | + | ||
| 75 | + | ### 4. ProMap — маленький, но очень ценный gold test | |
| 76 | + | ||
| 77 | + | ProMap создавался именно потому, что старые benchmarks содержали слишком простые отрицательные пары. В нём есть: | |
| 78 | + | ||
| 79 | + | - `match`; | |
| 80 | + | - `close non-match`; | |
| 81 | + | - `medium non-match`; | |
| 82 | + | - в расширенной версии — `distant non-match`; | |
| 83 | + | - название, краткое и полное описание; | |
| 84 | + | - цена; | |
| 85 | + | - спецификация как пары ключ–значение; | |
| 86 | + | - изображения; | |
| 87 | + | - 10 категорий. | |
| 88 | + | ||
| 89 | + | Исходные наборы: | |
| 90 | + | ||
| 91 | + | - ProMapCz — 1 495 чешских пар; | |
| 92 | + | - ProMapEn — 1 555 английских; | |
| 93 | + | - расширенные версии — по 2 000; | |
| 94 | + | - ProMapMulti позволяет обучаться на Walmart–Amazon и тестироваться на Walmart–Target/Walmart–Sears. | |
| 95 | + | ||
| 96 | + | [Статья со схемой и статистикой](https://link.springer.com/article/10.1007/s10660-024-09892-9), [репозиторий данных](https://github.com/kackamac/Product-Mapping-Datasets). | |
| 97 | + | ||
| 98 | + | Это лучший набор для ручного анализа ошибок вида: | |
| 99 | + | ||
| 100 | + | - одинаковая модель, но другой объём; | |
| 101 | + | - почти одинаковое название, но другая комплектация; | |
| 102 | + | - одинаковый бренд и серия, но другая модификация. | |
| 103 | + | ||
| 104 | + | Недостаток: в GitHub-репозитории я не обнаружил достаточно явной открытой лицензии на данные. Для внутреннего теста это обычно приемлемо, но для включения в распространяемый артефакт лицензию надо подтвердить у авторов. | |
| 105 | + | ||
| 106 | + | ### 5. Cross-lingual Product Matching | |
| 107 | + | ||
| 108 | + | Корпус содержит 171 890 офферов на английском, немецком, испанском и французском в категориях телефонов и игрушек. Телефоны специально разделяются по памяти, цвету и другим вариантам. Pairwise-наборы содержат смесь random и hard pairs, причём поле `hardness` дано явно. | |
| 109 | + | ||
| 110 | + | Для каждой из категорий есть: | |
| 111 | + | ||
| 112 | + | - до 100 800 английских train-пар; | |
| 113 | + | - до 50 400 немецких; | |
| 114 | + | - тесты по 1 200 пар для каждого языка; | |
| 115 | + | - `title`, `description`, `EAN`, `MPN`, бренд и cluster ID. | |
| 116 | + | ||
| 117 | + | [Полное описание и статистика](https://data.dws.informatik.uni-mannheim.de/Web-based-Systems-Group/StudentProjects/2020/Cross-lingual-Product-Matching-using-Transformers/). | |
| 118 | + | ||
| 119 | + | Доступ выдаётся по запросу авторам, только для research use. Зато это сильнейший тест для `multilingual-e5`: можно проверить train EN → test DE/ES/FR и увидеть, действительно ли выигрыш модели связан с мультиязычностью. | |
| 120 | + | ||
| 121 | + | ### 6. PriceRunner | |
| 122 | + | ||
| 123 | + | 35 311 предложений из 306 магазинов, 10 категорий, canonical product ID. Это не готовые бинарные пары, но cluster ID позволяет получить positives, а hard negatives можно создать среди ближайших товаров другой группы. | |
| 124 | + | ||
| 125 | + | Лицензия: **CC BY 4.0**. [Карточка PriceRunner](https://www.kaggle.com/datasets/joebeachcapital/pricerunner-product-classification-and-clustering). | |
| 126 | + | ||
| 127 | + | Для честного теста: | |
| 128 | + | ||
| 129 | + | 1. Разбить по canonical product ID. | |
| 130 | + | 2. Positive пары брать только внутри кластера. | |
| 131 | + | 3. Negative — BM25/TF-IDF top neighbors в той же категории, но с другим product ID. | |
| 132 | + | 4. Исключить случайные лёгкие negatives либо хранить их отдельным срезом. | |
| 133 | + | ||
| 134 | + | ### 7. DeepMatcher product benchmarks | |
| 135 | + | ||
| 136 | + | Готовые классические наборы: | |
| 137 | + | ||
| 138 | + | - Amazon–Google: 11 460 пар, 1 167 positive; | |
| 139 | + | - Walmart–Amazon: 10 242 пары, 962 positive; | |
| 140 | + | - Abt–Buy: 9 575 пар, 1 028 positive; | |
| 141 | + | - также существуют dirty-версии Walmart–Amazon. | |
| 142 | + | ||
| 143 | + | Есть готовые `train/valid/test`, таблицы товаров и прямые ZIP-ссылки. [Официальный индекс DeepMatcher](https://raw.githubusercontent.com/anhaidgroup/deepmatcher/master/Datasets.md), [Ditto с уже сериализованными версиями](https://github.com/megagonlabs/ditto). | |
| 144 | + | ||
| 145 | + | Это хорошие быстрые CI-тесты, но они заметно легче и меньше E‑CUP. | |
| 146 | + | ||
| 147 | + | ### 8. Alaska | |
| 148 | + | ||
| 149 | + | Около 70 тыс. реальных товарных спецификаций с 71 сайта, направления cameras/monitors/notebooks, порядка 15 тыс. различных названий атрибутов. Ground truth курировался экспертами. [Описание Alaska](https://arxiv.org/abs/2101.11259), [репозиторий](https://github.com/merialdo/research.alaska). | |
| 150 | + | ||
| 151 | + | Полезен не столько для общей метрики, сколько для проверки вашего парсера `attributes`: | |
| 152 | + | ||
| 153 | + | - разные ключи для одного свойства; | |
| 154 | + | - разные единицы измерения; | |
| 155 | + | - пропуски; | |
| 156 | + | - атрибуты, перемещённые в title; | |
| 157 | + | - несовместимые схемы разных магазинов. | |
| 158 | + | ||
| 159 | + | ### 9. ProductER | |
| 160 | + | ||
| 161 | + | 9 996 коротких пар названий с ответами `yes/no/maybe`, лицензия MIT. Набор специально содержит различия в model number и specifications. [ProductER](https://huggingface.co/datasets/crossingminds/productER). | |
| 162 | + | ||
| 163 | + | Но это синтетика, созданная с помощью `o1-preview`, а не реальные человеческие marketplace labels. Использовать как: | |
| 164 | + | ||
| 165 | + | - sanity-check для LLM teacher; | |
| 166 | + | - тест конфликтов размеров и моделей; | |
| 167 | + | - небольшой prompt/reranker benchmark. | |
| 168 | + | ||
| 169 | + | Не использовать как основной источник оценки качества. | |
| 170 | + | ||
| 171 | + | ### 10. Amazon ESCI | |
| 172 | + | ||
| 173 | + | 2,62 млн вручную размеченных query-product пар с классами Exact/Substitute/Complement/Irrelevant и полями title, description, bullet points, brand, color. Языки: английский, испанский и японский; лицензия Apache 2.0. [Официальный репозиторий Amazon ESCI](https://github.com/amazon-science/esci-data). | |
| 174 | + | ||
| 175 | + | Это не duplicate matching: левая часть является поисковым запросом. Но классы Exact и Substitute хорошо подходят для дополнительного обучения модели различать точное совпадение и просто похожий товар. | |
| 176 | + | ||
| 177 | + | ## Русскоязычные источники | |
| 178 | + | ||
| 179 | + | Публичного русскоязычного gold-набора, сопоставимого с E‑CUP, я не нашёл. Есть несколько смежных вариантов, но они не заменяют размеченный benchmark: | |
| 180 | + | ||
| 181 | + | - **OZON Product Category** — русские карточки, но нет пар и лицензия не указана: [Kaggle](https://www.kaggle.com/datasets/andrewboroda/ozon-product-category). | |
| 182 | + | - **S-SHOT** — актуальные выгрузки Ozon/Wildberries с названиями, брендами, ценами и ссылками, но без true match labels: [каталог](https://www.s-shot.ru/datasets/). | |
| 183 | + | - **Wildberries duplicate competition** действительно существовал, но датасет сейчас требует авторизации/не обнаружен как свободно скачиваемый публичный корпус: [WB Space](https://wbspace.wb.ru/). | |
| 184 | + | - На Hugging Face есть русскоязычная модель marketplace matching, но её train dataset описан как frozen/private и отдельно не опубликован. | |
| 185 | + | - Коммерческие выгрузки Ozon/Wildberries обычно содержат карточки, но не достоверные связи «один SKU». | |
| 186 | + | ||
| 187 | + | Такие выгрузки пригодны для unlabeled drift-тестов: проверить, что инференс не падает на новых брендах, форматах чисел и современных названиях. Делать из них gold labels автоматически опасно. | |
| 188 | + | ||
| 189 | + | ## Какой комплект я бы взял | |
| 190 | + | ||
| 191 | + | Минимальный, но сильный внешний test suite: | |
| 192 | + | ||
| 193 | + | 1. **WDC Products 80% corner cases** — главный тест hard negatives и unseen products. | |
| 194 | + | 2. **MARKT-PILOT manual test** — большая независимая бинарная проверка. | |
| 195 | + | 3. **ProMapEn + ProMapCz close/medium negatives** — точечная проверка критических атрибутов. | |
| 196 | + | 4. **WDC LSPM gold standard** — стабильный классический benchmark. | |
| 197 | + | 5. **PriceRunner, самостоятельно построенный unseen-cluster split** — тест генерации кандидатов. | |
| 198 | + | 6. **ProductER** — только быстрый semantic smoke-test. | |
| 199 | + | ||
| 200 | + | Для конвертации в формат E‑CUP: | |
| 201 | + | ||
| 202 | + | ```text | |
| 203 | + | items: | |
| 204 | + | id | |
| 205 | + | name <- title | |
| 206 | + | attributes <- JSON из brand, description, specification, price | |
| 207 | + | category | |
| 208 | + | ||
| 209 | + | matches: | |
| 210 | + | id1 | |
| 211 | + | id2 | |
| 212 | + | target | |
| 213 | + | ``` | |
| 214 | + | ||
| 215 | + | Считать желательно несколько показателей: | |
| 216 | + | ||
| 217 | + | - global PR-AUC; | |
| 218 | + | - PR-AUC отдельно на hard negatives; | |
| 219 | + | - PR-AUC только на unseen entities; | |
| 220 | + | - recall при фиксированной высокой precision; | |
| 221 | + | - F1 для сравнения с опубликованными benchmark-результатами. | |
| 222 | + | ||
| 223 | + | Macro PR-AUC по 20 категориям E‑CUP напрямую с иностранными наборами несопоставим, поэтому внешний score лучше хранить отдельно. | |
| 224 | + | ||
| 225 | + | ## Лицензии и правила конкурса | |
| 226 | + | ||
| 227 | + | Надёжно определённые лицензии: | |
| 228 | + | ||
| 229 | + | - MARKT-PILOT — CC BY-SA 4.0; | |
| 230 | + | - PriceRunner — CC BY 4.0; | |
| 231 | + | - ProductER — MIT; | |
| 232 | + | - Amazon ESCI — Apache 2.0; | |
| 233 | + | - Retail-786k — CC BY-NC-ND 4.0, то есть не для коммерческого использования и без распространения производных данных; | |
| 234 | + | - Cross-lingual Mannheim — research only; | |
| 235 | + | - Shopee competition data — ограниченное использование по условиям соревнования; | |
| 236 | + | - ProMap и некоторые старые DeepMatcher/WDC-выгрузки требуют отдельной проверки условий именно для данных: лицензия кода не автоматически покрывает содержимое карточек. | |
| 237 | + | ||
| 238 | + | В открытом FAQ E‑CUP явно говорится о допустимости моделей с открытой лицензией, но я не нашёл столь же явного разрешения использовать внешние размеченные датасеты. [FAQ E‑CUP](https://ods.ai/tracks/e-cup-2026-competitions/faq). Поэтому безопасная стратегия: применять найденные наборы как **внешние тесты**, а перед добавлением их в fine-tuning письменно уточнить это у организаторов. | |
Newer
Older