#python #levenshtein-distance
Вопрос:
У меня есть список таких слов, где каждое слово имеет вхождение, я хочу , например, вычислить сходство между всеми словами, python
и mypython
они похожи, поэтому все суммируют вхождение:
my_list = [{
"name": "python",
"occ": 1623
},
{
"name": "C ",
"occ": 1527
},
{
"name": "programming",
"occ": 390
},
{
"name": "programme",
"occ": 371
},
{
"name": "mypython",
"occ": 252
},
{
"name": "pythonne",
"occ": 219
}]
Я хочу вычислить сходство между всеми словами этого списка и суммировать вхождение, чтобы получилось что-то вроде этого
my_list = [{
"name": "python",
"occ": 2094
},
{
"name": "C ",
"occ": 1527
},
{
"name": "programming",
"occ": 761
}]
Я подумываю об использовании расстояния Левенштейна, но я не знаю, будет ли это хорошим выбором и самым быстрым способом сделать это?
def levenshtein(seq1, seq2):
size_x = len(seq1) 1
size_y = len(seq2) 1
matrix = np.zeros ((size_x, size_y))
for x in xrange(size_x):
matrix [x, 0] = x
for y in xrange(size_y):
matrix [0, y] = y
for x in xrange(1, size_x):
for y in xrange(1, size_y):
if seq1[x-1] == seq2[y-1]:
matrix [x,y] = min(
matrix[x-1, y] 1,
matrix[x-1, y-1],
matrix[x, y-1] 1
)
else:
matrix [x,y] = min(
matrix[x-1,y] 1,
matrix[x-1,y-1] 1,
matrix[x,y-1] 1
)
print (matrix)
return (matrix[size_x - 1, size_y - 1])
Комментарии:
1. Этот вопрос связан и обсуждает некоторые варианты: datascience.stackexchange.com/questions/12575/…
2. Если вы знакомы с НЛП, вы могли бы использовать вывод или лемматизацию
3. спасибо за ваши ответы, но чего я не могу понять, так это как я могу применить это к своему списку