Сравнение большого количества двоичных строк - PullRequest
0 голосов
/ 28 сентября 2018

Все,

Письмо, чтобы увидеть, есть ли у кого-нибудь какие-либо сведения о том, что, по его мнению, является лучшей технологией для следующего сценария.Будь то python, solr, redis, memcache и т. Д.

Ситуация следующая.

У меня есть 100 миллионов + двоичных строк длиной около 1100 символов ... '0010100010101001010101011 .... '

Какой, по вашему мнению, самый логичный способ сделать следующее?

Для данной строки с таким же количеством символов, какой будет наиболее эффективный способ найтиближайший матч?Под самым близким я подразумеваю разделение наибольшего числа 0 и 1 в данной позиции.Дистанция Хэмминга, я думаю.

Мой вариант использования на самом деле подразумевал бы взятие примерно 100 тыс. Строк и поиск наилучшего совпадения в пуле из 100 млн. + Строк.

Есть мысли?Не нужно использовать какую-то конкретную технологию, просто желательно что-то довольно распространенное.

Любопытно посмотреть, какие идеи могут быть у каждого.

Спасибо, Тбон

1 Ответ

0 голосов
/ 28 сентября 2018

Для этого вы можете использовать numpy, R или MATLAB, или что-нибудь еще, что работает с большими матрицами:

Скажем, у вас есть матрица NxM A, где N - это len (строка), а M - это числострун.И скажем, у вас есть строка S, которую вы пытаетесь сопоставить.Вы можете:

  1. Вычесть версию массива S из A
  2. . Взять абсолютное значение всех элементов результата (1)
  3. .результат (2) вдоль оси N
  4. Argsort результат (3), чтобы найти индексы строк, которые имеют наименьшее расстояние до S.
...