Техника сопоставления строк путем преобразования в число? - PullRequest
1 голос
/ 24 июля 2009

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

Для простого сравнения частей этих строк я делю их на подстроки из 16 символов. (что составляет около 1 секунды песни) Но в некоторых случаях я просто не могу сравнить их один на один ... Я должен их измерять.

Например, сравнение с 'hellohellohelloo' и 'hallohellohelloo' должно получить более близкое значение, чем сравнение 'hellohellohelloo' и 'herehellohelloo'.

Есть ли какой-нибудь алгоритм или теоретический


Редактировать: Извините, я новичок здесь :) И я не мог прояснить это. Вот некоторые комментарии, которые прояснят мне и предложат идею.

Комментарий 1:

На самом деле я знаю о расстоянии Левенштейна, но проблема заключается в каждомКогда я сравниваю две строки, мне нужно построить матрицу сравнения, и это замедляет процесс поиска. Если я могу преобразовать, например, привет в 4444 и привет в 4443, я могу определить, насколько близки у меня записи для «привет», просто проиндексировав числовые значения.

Комментарий 2:

Возможно, мне следует определить базовую строку (и) постоянной длины и сохранить значения расстояний из них в качестве значений индекса для строки. Это просто идея?!

Ответы [ 2 ]

0 голосов
/ 24 июля 2009

Расстояние Левенштейна может работать на вас. Также см. Обзор Википедии расстояние редактирования .

0 голосов
/ 24 июля 2009

Расстояние Левенштейна, вероятно, поможет вам: http://en.wikipedia.org/wiki/Levenshtein_distance

Обычно это довольно быстро, и есть реализации на большинстве современных языков.

...