집 >데이터 베이스 >MySQL 튜토리얼 >겹치는 단어와 Levenshtein 거리를 사용하여 MySQL에서 문자열 유사성을 측정하는 방법은 무엇입니까?
MySQL에서 문자열 유사성을 계산하는 방법
MySQL에서 두 문자열 간의 유사성을 계산하려면 문자열 조작 함수와 수학 표현식을 활용할 수 있습니다. . 두 개의 문자열이 있는 다음 예를 고려해 보세요.
SET @a = "Welcome to Stack Overflow"; SET @b = "Hello to stack overflow";
겹치는 단어를 사용한 유사성 계산
두 문자열에 나타나는 단어 수를 세고 다음을 사용할 수 있습니다. 그것은 유사성의 척도입니다. 이 경우 다음 단어가 겹칩니다.
유사성 계산 색인
유사성 지수는 다음과 같이 계산됩니다.
similarity = count(similar words between @a and @b) / (count(@a) + count(@b) - count(intersection))
Levenshtein 함수 사용
MySQL은 기본적으로 다음에 대한 함수를 지원하지 않습니다. 문자열 유사성. 그러나 levenshtein이라는 사용자 정의 함수(UDF)를 사용하여 Levenshtein 거리를 계산할 수 있습니다. 이는 한 문자열을 다른 문자열로 변환하는 데 필요한 편집(삽입, 삭제 또는 대체) 횟수를 측정합니다.
Levenshtein UDF 생성
CREATE FUNCTION `levenshtein`(s1 text, s2 text) RETURNS int(11) DETERMINISTIC ...
Levenshtein UDF는 제공된 코드 스니펫을 참조하세요.
유사성 비율 계산
마지막으로 Levenshtein 거리를 최대 길이에 대해 정규화하여 유사성 비율을 계산할 수 있습니다. 두 문자열 중:
CREATE FUNCTION `levenshtein_ratio`(s1 text, s2 text) RETURNS int(11) DETERMINISTIC ...
예를 들어 유사성은 Levenshtein 비율 함수를 사용하여 @a와 @b 사이의 비율은 다음과 같이 계산할 수 있습니다.
SELECT levenshtein_ratio(@a, @b);
이것은 유사성 비율을 백분율 값으로 반환합니다.
위 내용은 겹치는 단어와 Levenshtein 거리를 사용하여 MySQL에서 문자열 유사성을 측정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!