Fuzzy matching treats two words that are "fuzzily" similar as if they were the same word. First, we need to define what we mean by fuzziness.
퍼지 일치(fuzzy matching) 는 두 단어가 동일한 단어인 것처럼, "애매하게(fuzzily)" 유사한 두 단어를 다룬다. 먼저, fuzziness 의 의미를 정의해야 한다.
In 1965, Vladimir Levenshtein developed the Levenshtein distance, which measures the number of single-character edits required to transform one word into the other. He proposed three types of one-character edits:
1965년, Vladimir Levenshtein은 하나의 단어를 다른 단어로 변환하는데 필요한, 단일 문자 편집의 횟수를 측정하는, levenshtein distance를 개발하였다. 그는 단일 문자 편집의 세가지 유형을 제안하였다.
Substitution of one character for another: _f_ox → _b_ox
어떤 문자를 다른 문자로 치환(substitution) : _f_ox → _b_ox
Insertion of a new character: sic → sic_k_
새로운 문자를 추가(insertion) : sic → sic_k_
Deletion of a character: b_l_ack → back
특정 문자의 삭제(deletion) : b_l_ack → back
Frederick Damerau later expanded these operations to include one more:
Frederick Damerau는 나중에 이들 연산에 한 가지를 추가하여, 확장했다.
Transposition of two adjacent characters: _st_ar → _ts_ar
인접한 두 문자를 바꾼다(transposition) : _st_ar → _ts_ar
For example, to convert the word bieber
into beaver
requires the following steps:
예를 들어, bieber
를 beaber
로 바꾸려면, 다음의 단계가 필요하다.
b
를v
로 치환 : bie_b_er → bie_v_eri
를a
로 치환 : b_i_ever → b_a_evera
와e
를 옮김 : b_ae_ver → b_ea_ver
These three steps represent a Damerau-Levenshtein edit distance of 3.
이들 세 단계가 Damerau-Levenshtein edit distance의 세가지이다.
Clearly, bieber
is a long way from beaver
—they are too far apart to be considered a simple misspelling. Damerau observed that 80% of human misspellings have an edit distance of 1. In other words, 80% of misspellings could be corrected with a single edit to the original string.
분명히, bieber
와 beaber
는 판이하다. 이것들은 단순한 맞춤법 오류라고 간주할 수는 없다. Damerau는, 사람들의 맞춤법 오류의 80%가 편집 거리(edit distance) 1, 즉, 맞춤법 오류의 80%는, _단일 편집(single edit)_으로, 원래의 문자열로 보정될 수 있다는 것을 발견하였다.
Elasticsearch supports a maximum edit distance, specified with the fuzziness
parameter, of 2.
Elasticsearch는, fuzziness
매개변수를 지정하여, 최대 편집 거리 2를 지원한다.
Of course, the impact that a single edit has on a string depends on the length of the string. Two edits to the word hat
can produce mad
, so allowing two edits on a string of length 3 is overkill. The fuzziness
parameter can be set to AUTO
, which results in the following maximum edit distances:
물론, 문자열에서, 단일 편집이 문자열에 미치는 영향은 문자열의 길이에 달려 있다. 단어 hat
에 대한, 두 번의 편집으로, mad
를 얻을 수 있다. 따라서, 길이가 3인 문자열에 대한 두 번 편집은 지나치다. fuzziness
매개변수를 AUTO
로 설정하면, 다음과 같은, 최대 편집 거리로 나타난다.
- 문자가 1~2개인 문자열:
0
- 문자가 3~5개인 문자열:
1
- 문자가 6개 이상인 문자열:
2
Of course, you may find that an edit distance of 2
is still overkill, and returns results that don’t appear to be related. You may get better results, and better performance, with a maximum fuzziness
of 1
.
물론, 편집 거리 2
는 여전히 지나치고, 관련되었다고 보이지 않는 결과가 반환될지도 모른다. 최대 fuzziness
1
로, 더 나은 결과와 더 나은 성능을 얻을지도 모른다.
'2.X > 3. Dealing with Human Language' 카테고리의 다른 글
3-6-6. Symbol Synonyms (0) | 2017.09.24 |
---|---|
3-7. Typoes and Mispelings (0) | 2017.09.24 |
3-7-2. Fuzzy Query (0) | 2017.09.24 |
3-7-3. Fuzzy match Query (0) | 2017.09.24 |
3-7-4. Scoring Fuzziness (0) | 2017.09.24 |