Levenshtein Distance 알고리즘은 String A를 String B로 변경하는 데 필요한 삭제, 삽입 및 대체의 최소 수를 고려한다는 것을 알고 있습니다.하지만 궁금합니다 변경을 수행하는 데 필요한 전체 편집에서 삭제 횟수를 개별적으로 추적 할 수있는 방법. 나는 그래서 삭제를 추적하기 위해, 알고리즘의 구현을 Levenshtein 거리 알고리즘에서 삭제 횟수를 개별적으로 계산
def levenshtein(first, second)
first = first.split
second = second.split
first_size = first.size
second_size = second.size
matrix = [(0..first_size).to_a]
(1..second_size).each do |j|
matrix << [j] + [0] * (first_size)
end
count = 0
(1..second_size).each do |i|
(1..first_size).each do |j|
if first[j-1] == second[i-1]
matrix[i][j] = matrix[i-1][j-1]
else
matrix[i][j] = [matrix[i-1][j],matrix[i][j-1], matrix[i-1][j-1]].min + 1
end
end
end
return matrix.last.last
end
을 찾고 있었다, 나는 시도 :
if matrix[i-1[j] == [matrix[i-1][j],matrix[i][j-1], matrix[i-1][j-1]].min
이 다음 수를 증가시킨다. 그러나 이것은 효과가없는 것 같습니다. 또한 두 개의 문자열 크기의 차이를 얻기 위해 시도했지만이 여기에 분명히 하나 삭제는 단순히 그렇게 감지하지 못합니다 크기의 차이를 받고 다음과 같은 경우
String 1: "my response to prompt#1"
String 2: "my edited response to"
실패합니다.
사람이
삭제 내용이 정확합니까? –
단어 삭제. 예를 들어, "프롬프트 응답 # 1에 대한 나의 응답", "응답", 우리는 "프롬프트 # 1"을 삭제했습니다 – kchoi
작업 콘솔 예제를 게시 할 수 있습니까? 수정을 진행하는 데 도움이 될 것입니다. –