Как стать автором
Обновить

Практический кейс: как применять ML и GPT для поиска дубликатов в базе данных

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров27K
Всего голосов 22: ↑21 и ↓1+22
Комментарии6

Комментарии 6

BM25 - походу вот она причина почему на озоне не найти просто так что-то с точными размерами.

Так как же все-таки использовать это для поиска в бд?

Привет, я использовал этот метод для поиска дубликатов в достаточно однородной БД (там были только строительные материалы и инструменты). В данном методе считается BM25score n-ой записи со всеми остальными.
Этот score учитывает:
1. TF (Term Frequency) - частоту вхождения каждого слова из n-ой записи в k-ую (с которой сейчас она сравнивается). Например если в n-ой записе есть слово "гайка", а k-ая запись "гайка гайка гайка", то такой скор будет высокий, а если вообще не упоминается это слово то 0.
2. IDF (Inverse Document Frequency) - частоту вхождения слов которые есть n-ой записи. Например если только в n-ой записи и в k-ой есть название бренда этой гайки (например "Ангстрем"), то за такое совпадение вероятность того что n-ая и k-ая запись являются дубликатами возрастёт
3. Длина документа. Если k-ая запись содержит очень много слов, то её score совпадения уменьшается (потому что если в названии вся "Война и мир" то вероятность что все слова из названия n-ой записи найдутся в k-ой велика).
4. Параметры которые подбирались эмпирически которые варьируют вес перечисленных выше параметров.

Все эти величины подставлялись в формулу (есть статья на Хабре с формулой и более подробным разбором и примером кода). Получается матрица a*a (где a число записей в БД/категории/бренде), выставляется эмпирически пороговое значение этого коэффициента совпадения и все пары со скором выше определяются как дубликаты.

доля ошибок первого рода (ложная тревога) не должны превышать 10%, то есть модель не должна ошибочно помечать запись как дубликат в более чем 10% случаев;

Так вот почему доставка привозит не то что было заказано. Базу дедуплицировали и объединили два разных товара в один. А то что люди явным образом вбили другой SKU это фигня, на которую не стоит обращать внимание истинному датасатанисту. :)

честно признаюсь что "минусанул" статью за низкий технический уровень материала . Раз уж это что-то про NLP направление, то давайте посчитаем хотя бы на easy- уровне долю предложений, соотвествующих тематике заголовка от всего корпуса этой статьи (даже без стемминга/лемматизации). И долю по тематике "топ Х советов чтобы не кинул заказчик".

Лучше бы сделали хороший авторский перевод статьи по своему заголовку чтобы Хабр стал больше похож на торт

"всегда договаривайся о критериях приемки (когда это возможно)" - это правило НОМЕР ОДИН, и только если убрать текст в скобках. Если это правило не согласовано и не подписано, то всё остальное - сотрясение воздуха. Можно сформулировать и иначе: "нет хода - не вистуй".

Как же от машинно сгенеренного текста глаза режет

Зарегистрируйтесь на Хабре, чтобы оставить комментарий