У меня есть список строк, и я хочу отфильтровать строки, которые слишком похожи на основе расстояния levenstein. Поэтому, если lev(list[0], list[10]) < 50
; затем del list[10]
. Есть ли способ, которым я могу рассчитать такое расстояние между каждой парой строк в списке, более эффективно? Благодаря!!Расчет расстояния levenshtein в списке Python
data2= []
for i in data:
for index, j in enumerate(data):
s = levenshtein(i, j)
if s < 50:
del data[index]
data2.append(i)
Довольно немого выше код занимает слишком много времени, чтобы вычислить ...
Для получения дополнительной информации вам потребуется дополнительная информация. Алгоритм Левенштейна считается медленным. Кроме того, данные и данные1 не определены. Вы посмотрели, http://www.levenshtein.net? Exobyte? Вы использовали профилировщик python? – xxyzzy
Левенштейн симметричен. Возможно, вы захотите построить свои вложенные петли. См. Http://stackoverflow.com/questions/9722022/levenshtein-distance-symmetric – xxyzzy
Спасибо. Я использую пятую реализацию Levenshtein из [link] (http://en.wikibooks.org/wiki/Algorithm_Implementation/Strings/Levenshtein_distance#Python). data - это список, состоящий из 6000 предложений, и я хочу оставить только одно из очень похожих предложений. – Blue482