> 데이터 베이스 > MySQL 튜토리얼 > 겹치는 단어와 Levenshtein 거리를 사용하여 MySQL에서 문자열 유사성을 측정하는 방법은 무엇입니까?

겹치는 단어와 Levenshtein 거리를 사용하여 MySQL에서 문자열 유사성을 측정하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-12-02 20:39:13
원래의
460명이 탐색했습니다.

How to Measure String Similarity in MySQL Using Overlapping Words and Levenshtein Distance?

MySQL에서 문자열 유사성을 계산하는 방법

MySQL에서 두 문자열 간의 유사성을 계산하려면 문자열 조작 함수와 수학 표현식을 활용할 수 있습니다. . 두 개의 문자열이 있는 다음 예를 고려해 보세요.

SET @a = "Welcome to Stack Overflow";
SET @b = "Hello to stack overflow";
로그인 후 복사

겹치는 단어를 사용한 유사성 계산

두 문자열에 나타나는 단어 수를 세고 다음을 사용할 수 있습니다. 그것은 유사성의 척도입니다. 이 경우 다음 단어가 겹칩니다.

  • Welcome
  • 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿