2017-12-11 13 views
-2

문자열 사이에 가장 잘 맞는 케이스를 선택하는 좋은 방법이 있다면 궁금합니다. 예를 들어, "Hi there", "Hello", "Hiya", "hi", "Hi"및 "Hey there"키가있는 테이블이 있다고 가정 해보십시오. "Hi"에 가장 근접한 것을 찾고 싶습니다. 그런 다음 먼저 "Hi"와 일치합니다. 그게 발견되지 않으면, "안녕"다음 "히야", 등등. 완벽한 성냥의 우선 순위를 정하고, 그 다음에 대/소문자의 성냥을 찾은 다음, 차이 또는 길이 차이가 가장 적은 성냥을 찾습니다.루아 - 문자열에 가장 잘 맞는 문자열 찾기

현재 메서드는 다루기가 쉽지 않습니다. 먼저 완벽하게 일치하는지 확인한 다음 string.match를 사용하여 반복하고 가장 가까운 string.len을 저장합니다.

+0

제 생각에, 당신은 이것을 위해 Levenshtein 거리가 필요합니다. [여기를 보시오] (https://stackoverflow.com/questions/42681501/how-do-you-make-a-string-dictionary-function-in-lua) – McBarby

답변

0

완벽한 일치만을 찾고있는 것이 아니라면 유사성을 측정하기 위해 일부 측정 항목을 사용하고 가장 근접한 항목을 찾아야합니다.

McBarby가 언급 한 바에 따르면 문자열 1에서 문자열 2로 전환하는 데 필요한 최소한의 단일 문자 편집 수인 Levenshtein 거리를 사용할 수 있습니다. 메트릭을 사용할 수 있는지, 어느 것이 가장 적합한 지 연구하면됩니다. 물론 자체 메트릭을 정의 할 수도 있습니다.

https://en.wikipedia.org/wiki/String_metric 목록 다른 문자열 메트릭 번호 :

Sørensen은 다이스 계수

블록 거리 또는 L1 거리 또는 시티 블록 거리

JARO-윙클러 거리

간단한 매칭 계수 (SMC)

일본 accard 유사성 또는 인 Jaccard 계수 또는 타니 모토 계수

Tversky 인덱스

오버랩 계수

변분 거리

Hellinger 거리 또는 Bhattacharyya 거리

정보 반경 (젠슨 섀넌 발산)

스큐 발산

,

혼동 가능성

타우 메트릭의 쿨백 - 라이 블러 발산

Fellegi 및 Sunters 메트릭 (SFS)의 근사값

극대가

문법 기반 형 거리

TFIDF 일치 거리 메트릭