복붙노트

[PYTHON] 키보드의 근접성을 고려한 Levenshtein과 같은 거리 편집

PYTHON

키보드의 근접성을 고려한 Levenshtein과 같은 거리 편집

대체 거리를 고려한 Levenshtein과 같은 편집 거리가 있습니까?

예를 들어, 단어가 같은지 여부를 고려해 보면 typo와 tylo는 정말 가깝습니다 (p와 l은 물리적으로 키보드에서 가깝습니다). typo와 tyqo는 멀리 떨어져 있습니다. 좀 더 오타가 발생할 수있는 거리에 할당하고 싶습니다.

이러한 근접성을 고려한 측정 항목이 있어야합니다.

해결법

  1. ==============================

    1.당신이 물어 보는 거리의 종류는 levenshtein에 포함되어 있지 않습니다. 그러나 결과를 얻으려면 유클리드 거리 나 맨하탄 거리와 같은 도우미를 사용해야합니다. 간단한 가정은 q입니다 (영어 쿼티 레이아웃)는 데카르트 (y = 0; x = 0) 그래서, w는 (y = 0, x = 1) 등등이 될 것입니다. 전체 목록은 여기에

    당신이 물어 보는 거리의 종류는 levenshtein에 포함되어 있지 않습니다. 그러나 결과를 얻으려면 유클리드 거리 나 맨하탄 거리와 같은 도우미를 사용해야합니다. 간단한 가정은 q입니다 (영어 쿼티 레이아웃)는 데카르트 (y = 0; x = 0) 그래서, w는 (y = 0, x = 1) 등등이 될 것입니다. 전체 목록은 여기에

    keyboard_cartesian= {
                         'q': {'y': 0, 'x': 0},
                         'w': {'y': 0, 'x': 1},
                         'e': {'y': 0, 'x': 2},   
                         'r': {'y': 0, 'x': 3},    
                          # ...
                         'a': {'y': 1, 'x': 0}, 
                          #...
                         'z': {'y': 2, 'x': 0},
                         'x' : {'x':1, 'y':2},
                          #   
                         }
    

    단어 qaz는 의미가 있다고 가정합니다. qaz와 waz와 eaz와의 거리는 1. 어떤 오자가 더 유력한 지 체크하고 차이점을 취하여 (여기서 (q, w)와 (q, e)) 유클리드 거리를 계산하라.

    >>> from math import *
    >>> def euclidean_distance(a,b):
    ...     X = (keyboard_cartesian[a]['x']-keyboard_cartesian[b]['x'])**2
    ...     Y = (keyboard_cartesian[a]['y']-keyboard_cartesian[b]['y'])**2
    ...     return sqrt(X+Y)
    ... 
    >>> euclidean_distance('q', 'w')
    1.0 
    >>> euclidean_distance('q', 'e')
    2.0
    

    이것은 왁스가 qaz보다 eaz 가능성이 높기 때문에 qaz의 오자를 의미합니다.

  2. ==============================

    2.http://www.melissadata.com/webhelp/ssis/updated/Components/Fuzzy_Match/Algorithms.htm "Needleman-Wunsch - Levenshtein 알고리즘의 변형 인 Levenshtein과 Needleman-Wunsch는 문자 실수가 주어 졌다는 점을 제외하면 동일합니다. 예를 들어, A부터 S는 0.4의 실수 가중치가 주어지며 A에서 D는 0.6이고 A에서 P는 1.0 "이지만 Needleman-Wunsch Wikipedia는 표준 키보드 레이아웃에 얼마나 많은 문자가 있는지에 따라 다른 가중치가 적용됩니다. 기사는 키보드 레이아웃 근접을 언급하지 않습니다 ...하지만 어쩌면 당신은 그것에 대해 조사해야합니다.

    http://www.melissadata.com/webhelp/ssis/updated/Components/Fuzzy_Match/Algorithms.htm "Needleman-Wunsch - Levenshtein 알고리즘의 변형 인 Levenshtein과 Needleman-Wunsch는 문자 실수가 주어 졌다는 점을 제외하면 동일합니다. 예를 들어, A부터 S는 0.4의 실수 가중치가 주어지며 A에서 D는 0.6이고 A에서 P는 1.0 "이지만 Needleman-Wunsch Wikipedia는 표준 키보드 레이아웃에 얼마나 많은 문자가 있는지에 따라 다른 가중치가 적용됩니다. 기사는 키보드 레이아웃 근접을 언급하지 않습니다 ...하지만 어쩌면 당신은 그것에 대해 조사해야합니다.

  3. from https://stackoverflow.com/questions/29233888/edit-distance-such-as-levenshtein-taking-into-account-proximity-on-keyboard by cc-by-sa and MIT license