Я пытаюсь создать сопоставление имен для сравнения, скажем, от 'JOHN LEWIS'
до 'JOHN SMITH LEWIS'
.Это явно один и тот же человек, и я хочу создать функцию, в которой при вводе этих имен она превращается в список, а затем выдает соответствующие имена.
Проблема в том, что мой цикл возвращает, что 'LEWIS'
соответствует 'LEWIS'
, а 'SMITH'
соответствует 'LEWIS'
из-за порядка, в котором он находится.
from pyjarowinkler import distance
entered_name = 'JOHN LEWIS'.split(' ') # equals ['JOHN','LEWIS']
system_name = 'JOHN SMITH LEWIS'.split(' ') # equals ['JOHN','SMITH','LEWIS']
ratio = []
for i in entered_name:
maximum = 0
for j in system_name:
score = distance.get_jaro_distance(i, j, winkler=True,
scaling=0.1)
while score > maximum:
maximum = score
new = (i, j, maximum)
system_name.remove(i)
#removes that name from the original list
ratio.append(new)
вернул бы что-то вроде: [('JOHN', 'JOHN', 1.0), ('LEWIS', 'SMITH', 0.47)]
, а не: [('JOHN', 'JOHN', 1.0), ('LEWIS', 'LEWIS', 1.0)]
<- это то, что я хочу.</p>
Кроме того, если вы попробуете что-то вроде 'ALLY A ARM'
с 'ALLY ARIANA ARMANI'
, оно совпадет с 'ALLY'
дважды, если вы не сделаете эту строку remove(i)
.Вот почему я хочу только уникальные совпадения!
Я просто получаю ошибки или ответы, которые я не ищу.