Size: a a a

Natural Language Processing

2021 January 14

AT

Andrey Tatarinov in Natural Language Processing
Sergey Dulikov
locality sensitive hashing на n-граммах для приближения жакара попробуйте, с достаточно большими бакетами, а дальше брать по примеру из бакета
хорошая мысль, спасибо
источник

СШ

Слава Шишкам... in Natural Language Processing
мне кажется, эту задачу можно динамикой решить по аналогии с тем как решается задача о рюкзаке
источник

СШ

Слава Шишкам... in Natural Language Processing
в качестве стоимости можно взять максимальное расстояние по левенштейну между объектом и другими объектами в рюкзаке.
источник

SD

Sergey Dulikov in Natural Language Processing
посчитать все попарные расстояния левенштейна для 100к строк это уже долго, а если масштабировать, то растет квадратично
источник

SD

Sergey Dulikov in Natural Language Processing
а еще на это сверху алгоритм накручивать
источник

AT

Andrey Tatarinov in Natural Language Processing
Вот Сергей чувствует мою боль 🙂
источник

SD

Sergey Dulikov in Natural Language Processing
Плавали-знаем 😏
источник

SS

Sergey Shulga in Natural Language Processing
Энкодер берешь по желанию и все это в быстрый индекс, например hnsw. А дальше просто
источник

СШ

Слава Шишкам... in Natural Language Processing
поправьте меня, если не прав, но там будет сложность m (сколько мы ищем для анализа)^ 2 * n (сколько всего объектов), если m очень мало, оно должно будет достаточно быстро отрабатывать. Помимо этого, если я правильно понял задачу, нам нужно найти максимально далекие точки, а LSH даст нам наоборот самые близкие
источник

СШ

Слава Шишкам... in Natural Language Processing
да и в изначальной постановке задачи не говорится, что этот набор надо собирать с некоторой частотой, а не один раз.
источник

SS

Sergey Shulga in Natural Language Processing
Среди ANN-решений hnsw один из самых быстрых и точных, а инвертировать его выдачу под цели конкретной задачи несложно.
источник

DD

David Dale in Natural Language Processing
Andrey Tatarinov
Привет, а вот представьте себе, что у меня есть большое количество коротких строк (товарных названий), скажем 100К.

Среди них очень много близких по написанию, а я хочу выбрать семпл из наиболее разнообразных по некоторой метрике. Например по левенштейну или другой метрике попарной близости.

Есть ли какие-то существующие наработки для такой задачи? Или придется что-то самим выдумывать?
Мне кажется, для этой задачи вполне годится эвристическое решение. Например, такое:
1) насэмплить случайную выборку в несколько раз больше, чем нужно, и посчитать внутри неё все попарные расстояния
2) итеративно выкидывать из выборки текст с самым близким средним расстоянием до k ближайших соседей в оставшейся выборке, пока она не уменьшится до нужного размера.
Думаю, что это будет на порядки быстрее, чем строгое решение, и мало отличимо по качеству.
источник

DD

David Dale in Natural Language Processing
А ещё можно применить к твоему датасету любой алгоритм кластеризации (мне для больших датасетов нравится Birch, но для него нужно метрическое пространство), и взять по примеру из каждого достаточно крупного кластера.
источник

AT

Andrey Tatarinov in Natural Language Processing
David Dale
А ещё можно применить к твоему датасету любой алгоритм кластеризации (мне для больших датасетов нравится Birch, но для него нужно метрическое пространство), и взять по примеру из каждого достаточно крупного кластера.
Вот это мы сейчас как раз и делаем. Хотим поэкспериментировать с альтернативными подходами.
источник

НК

Николай Карпенко... in Natural Language Processing
Богдан Бондарчук
жаль, что там нельзя gpu поставить..
источник

AT

Andrey Tatarinov in Natural Language Processing
Вообщем что я понял: готовых решений (как в случае кластеризации) нет, костыли на эмпириках - наше все :)
источник

М

Марк in Natural Language Processing
Sergey Dulikov
locality sensitive hashing на n-граммах для приближения жакара попробуйте, с достаточно большими бакетами, а дальше брать по примеру из бакета
Согласен, lsh, на мой взгляд, будет нормально работать. Можно поиграть с порогом
источник

ЕЗ

Евгений Зубов... in Natural Language Processing
Слава Шишкам
да и в изначальной постановке задачи не говорится, что этот набор надо собирать с некоторой частотой, а не один раз.
Можно динамически добавлять элементы в индекс с библиотекой близнецом hnswlib
источник

ЕЗ

Евгений Зубов... in Natural Language Processing
Богдан Бондарчук
для мультиязычности сейчас крутой mT5 трансформер выпустили на huggingface<3
Ваш совет в итоге стал решением. Спасибо! Написал такую функцию, которая всегда возвращает 512 вектор: https://paste.ofcode.org/vynJRq9GLjjDUXrmvdPmbb
источник

A

Anton in Natural Language Processing
Евгений Зубов
Ваш совет в итоге стал решением. Спасибо! Написал такую функцию, которая всегда возвращает 512 вектор: https://paste.ofcode.org/vynJRq9GLjjDUXrmvdPmbb
Уверен что 512 возвращать будет всегда?
источник