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

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

Patricia Arquette
Patricia Arquette원래의
2024-12-02 20:39:13392검색

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.