русский
Ну щас E5 multilingual это sota
Хочу поделиться инфой о сравнительном тесте на скорую руку двух моделей из коробки. 1. это та, из-за которой чуть ли не дебаты в чате развернулись - 'amberoad/bert-multilingual-passage-reranking-msmarco' 2. это модель - 'intfloat/multilingual-e5-large' тестирование на маленьком корпусе из 5 товаров: corpus = ["Apple iPhone 12 Pro Max smartphone", "Samsung Galaxy S21 Ultra smartphone", "Apple MacBook Pro laptop", "Samsung Galaxy Book Pro laptop", "IRU ноутбук"] Результат работы по эмбеддингам от 1-й модели For Apple iPhone 12 Pro Max smartphone, the most similar text is: Samsung Galaxy S21 Ultra smartphone For Samsung Galaxy S21 Ultra smartphone, the most similar text is: Apple iPhone 12 Pro Max smartphone For Apple MacBook Pro laptop, the most similar text is: Samsung Galaxy Book Pro laptop For Samsung Galaxy Book Pro laptop, the most similar text is: Apple MacBook Pro laptop For IRU ноутбук, the most similar text is: Apple MacBook Pro laptop Результат работы второй модели: For Apple iPhone 12 Pro Max smartphone, the most similar text is: Apple MacBook Pro laptop For Samsung Galaxy S21 Ultra smartphone, the most similar text is: Apple iPhone 12 Pro Max smartphone For Apple MacBook Pro laptop, the most similar text is: Samsung Galaxy Book Pro laptop For Samsung Galaxy Book Pro laptop, the most similar text is: Apple MacBook Pro laptop For IRU ноутбук, the most similar text is: Apple MacBook Pro laptop Как видим, вторая модель ошиблась в одном месте - в первом результате из списка, сработав видимо по бренду, а не по категории. Семантика не сработала или не так сработала, как ожидалось Надеюсь инфа будет полезна многим На всякий случай перепроверить бы, а то может я где-нить второпях накосячил. С уважением, Александр Ничего личного. Прошу не обижаться и не раздражаться на этот мой пост. Просто привязался к последнему сообщению, которое быстро нашел и которое было по теме, чтобы в воздух не выпуливать непонятно для кого. Чтобы нить повествования сохранить, точнее тематическую нить
Сами циферки симилярити покажете?
затерлись... перепроверял себя)) остались только для одного варианта для первой модели выкладываю все что есть corpus = ["Apple iPhone 12 Pro Max smartphone", "Samsung Galaxy S21 Ultra smartphone", "Apple MacBook Pro laptop", "Samsung Galaxy Book Pro laptop", "IRU ноутбук"] embeddings = model.encode(corpus) similarity_scores = cosine_similarity(embeddings) print(similarity_scores) [[0.99999994 0.8385359 0.8233567 0.79202276 0.59452665] [0.8385359 0.99999994 0.72502774 0.7745926 0.6027187 ] [0.8233567 0.72502774 0.9999995 0.89929533 0.6540586 ] [0.79202276 0.7745926 0.89929533 1. 0.62671715] [0.59452665 0.6027187 0.6540586 0.62671715 1.0000001 ]] similarity_matrix = np.array(similarity_scores) # Заменяем диагональные элементы на очень большое отрицательное число np.fill_diagonal(similarity_matrix, -np.inf) # Находим индексы наиболее близких текстов most_similar_indices = np.argmax(similarity_matrix, axis=1) # Выводим пары наиболее близких текстов for i, index in enumerate(most_similar_indices): print(f"For {corpus[i]}, the most similar text is: {corpus[index]}") For Apple iPhone 12 Pro Max smartphone, the most similar text is: Samsung Galaxy S21 Ultra smartphone For Samsung Galaxy S21 Ultra smartphone, the most similar text is: Apple iPhone 12 Pro Max smartphone For Apple MacBook Pro laptop, the most similar text is: Samsung Galaxy Book Pro laptop For Samsung Galaxy Book Pro laptop, the most similar text is: Apple MacBook Pro laptop For IRU ноутбук, the most similar text is: Apple MacBook Pro laptop
на самом деле данный тест на паре таких примеров ничего говорит. какой-нибудь маленький SimLex , говорил бы может. Бенчмарки такие сложные с кучей датасетов как у mteb непросто так(кстати mteb довольно легко расширяется под свои бенчмарки) проблема с товарами, именованными сущностями и прочими штуками (и без контекста в виде предложений), - это особые такие слова, которые без контекста для моделей на дистрибутивной семантике могут порой означать несильно много, - почти что обычный суп из сабтокенов(поэтому fasttext порой может даже лучше показывать качество на таких коротких текстах). поэтому без доп обучения (файнтюнинга) на парах, или триплетах, модели довольно плохо понимают что должно матчиться хуже/лучше. например простой такой dummy тест показывает, что матчить-то они и абракадбру будут (еще можно shuffle по нграммам попробовать, таким фокусом тоже удается некоторые нетюненые или плохо тюненые энкодеры обмануть по именованным сущностям или по товарам)
результат тестов моделей из коробки показал, что multilingual-e5 - лучшая 'https://tfhub.dev/google/universal-sentence-encoder-multilingual-large/3' found_top_1= 122 percent_top_1= 28.57142857142857 found_top_3= 240 percent_top_3= 56.20608899297424 'amberoad/bert-multilingual-passage-reranking-msmarco' found_top_1= 65 percent_top_1= 15.22248243559719 found_top_3= 96 percent_top_3= 22.482435597189696 'cross-encoder/ms-marco-MiniLM-L-12-v2' found_top_1= 2 percent_top_1= 0.468384074941452 found_top_3= 9 percent_top_3= 2.107728337236534 'intfloat/multilingual-e5-large' found_top_1= 270 percent_top_1= 63.23185011709602 found_top_3= 341 percent_top_3= 79.85948477751757 Но это для моих данных, не знаю как для ваших....
Оно? https://huggingface.co/vprelovac/universal-sentence-encoder-multilingual-large-3
я брал с гугл)) https://tfhub.dev/google/universal-sentence-encoder-multilingual-large/3
А можно код сравнения?
к сожалению, не получится. Этот тест интегрирован в инфраструктуру и работает с выбранным вариантом из корпуса, которому соответствует набор из пар (запрос-правильный ответ) В этом случае был выбран тест из корпуса, состоящего из 110 текстовых наименований и 427 тестовых пар (запрос-ответ) зная какие должны быть ответы, считаем, проверяем и считаем сколько в результате их выдала модель при выполнении теста
А тогда вы можете проскорить модели, если я дам ссылку?
если не срочно, то сделаю просто день сегодня загружен, а к вечеру думаю смогу
если что, пиши в личку
Уточняю: учитывалось только 100% попадание? ответы рядом с высоким скором игнорируем?
там две формы - топ1 - по максимуму и топ3 - список из первых трех по максимуму и уже результат модели сравнивался с ответом из текста. Верный ответ в топ1, или в топ3, или нигде...))
я к чему. У нас похожий тест, и мы придумали оценку для мисматча. Смотрим куда попала модель, и смотрим топ-3 по сходству. Если попадание в топ-1, присуждаем два балла, если топ-2, 1 балл, топ -3, 0 баллов. Дальше -1. Потом суммируем положительные баллы. Кто больше набрал, тот и молодец )
тут вариантов может быть много, в зависимости от решаемой задачи нас больше волнует гарантия попадание в топ3
модель-многоязычная для теста использовался текст на русском с вкраплением английских слов
мой поинт , что не бывает какой-то лучшей в природе. бывают модели у которых лучше получается позитивный bias аккумулировать на каких-то тасках, а на каких-то хуже. это и пытается mteb сделать, результаты которого по каким-то таскам и по каким-то двум измерениям можно потом в парето плот положить и выбрать нужную точку. с другой стороны есть конкретные downstream задачи типа матчинга продуктов. которые потом можно сравнивать на выбранных нескольких точках. но имхо тут уже лучше тюнить модели. по метрикам - found это среднее по first relevant rank? в принципе если порядок не важен, то метрика отличная, и очень легко explainable (причем даже людям кто не разбирается в IR) . но если порядок важен, метрика слабая(проблема обычно в метриках в аггрегации, - т.н. проблема "среднего по больнице"). есть несколько лучший аналог FRR это MRR(mean reciprocal rank) - тоже самое почти что, только у нас не среднее считается по ранкам, а гармоническое среднее, - и у нас тогда метрика становится более чувствительной к изменениям в ранках. (на моих данных по разному, от задачи зависит. недавно на коротких текстах, где ошибки char base я тюнил вообще byt5 энкодер, но мне еще скорость важна, поэтому скорее всего буду вообще дистиллировать во что-то не трансформерное, буду смотреть)
А я думал, что из моего сообщения понятно, в каком смысле я объявил, что какая-то модель лучшая))
да понятно, на каких-то ваших закрытых, которые никто не видел и не может потестировать на своих, а потому все эти сообщения с циферками абсолютно бесполезны)
Обсуждают сегодня