내용 목차
본 장에서는 UTL_MATCH 패키지의 기본 개념과 패키지 내의 함수를 사용하는 방법을 설명한다.
UTL_MATCH는 두 문자열의 유사도를 계산하는 함수들을 제공하는 패키지이다.
본 패키지는 두 문자열의 유사도를 계산하는 방법들 중, Levenshtein 알고리즘을 사용하여 Edit Distance를 산출하는 방법과 Jaro-Winkler 알고리즘을 사용하여 Match Score를 산출하는 방법을 사용하는 함수들을 제공한다.
본 절에서는 UTL_MATCH 패키지에서 제공하는 함수를 알파벳 순으로 설명한다.
주어진 두 문자열의 Edit Distance를 Levenshtein 알고리즘을 이용하여 산출하여 반환하는 함수이다.
EDIT_DISTANCE 함수의 세부 내용은 다음과 같다.
프로토타입
UTL_MATCH.EDIT_DISTANCE ( str1 IN VARCHAR2, str2 IN VARCHAR2 ) RETURN PLS_INTEGER;
파라미터
파라미터 | 설명 |
---|---|
str1 | 피연산자이다. |
str2 | 피연산자이다. |
반환값
반환값 | 설명 |
---|---|
PLS_INTEGER | str1과 str2의 Edit Distance 산출 결과를 반환한다. str1과 str2 중 하나라도 NULL인 경우는 -1을 반환한다. |
예제
BEGIN DBMS_OUTPUT.PUT_LINE(UTL_MATCH.EDIT_DISTANCE('apple','aaple')); END; / 1
Levenshtein 알고리즘을 이용하여 산출한 주어진 두 문자열의 Edit Distance를 두 문자열 중 긴 문자열의 길이로 Normalize후 백분율 값으로 반환하는 함수이다.
EDIT_DISTANCE_SIMILARITY 함수의 세부 내용은 다음과 같다.
프로토타입
UTL_MATCH.EDIT_DISTANCE_SIMILARITY ( str1 IN VARCHAR2, str2 IN VARCHAR2 ) RETURN PLS_INTEGER;
파라미터
파라미터 | 설명 |
---|---|
str1 | 피연산자이다. |
str2 | 피연산자이다. |
반환값
반환값 | 설명 |
---|---|
PLS_INTEGER | str1과 str2의 Edit Distance 산출 결과를 Length가 긴 피연산자의 Length로 Normalize한 값을 백분율 값으로 반환한다. str1과 str2가 모두 NULL인 경우는 100을 반환하고, 둘 중 하나만 NULL인 경우는 0을 반환한다. |
예제
BEGIN DBMS_OUTPUT.PUT_LINE(UTL_MATCH.EDIT_DISTANCE_SIMILARITY('apple', 'aaple')); END; / 81
주어진 두 문자열의 Match Score를 Jaro-Winkler 알고리즘을 사용하여 산출한 후 반환하는 함수이다.
JARO_WINKLER 함수의 세부 내용은 다음과 같다.
프로토타입
UTL_MATCH.JARO_WINKLER ( str1 IN VARCHAR2, str2 IN VARCHAR2 ) RETURN BINARY_DOUBLE;
파라미터
파라미터 | 설명 |
---|---|
str1 | 피연산자이다. |
str2 | 피연산자이다. |
반환값
반환값 | 설명 |
---|---|
BINARY_DOUBLE | str1과 str2의 Match Score 산출 결과를 반환한다. str1과 str2 중 하나라도 NULL인 경우는 0을 반환한다. |
예제
BEGIN DBMS_OUTPUT.PUT_LINE(UTL_MATCH.JARO_WINKLER('apple','aaple')); END; / .88
Jaro-Winkler 알고리즘을 이용하여 산출한 주어진 두 문자열의 Match Score를 백분율 값으로 반환하는 함수이다.
JARO_WINKLER_SIMILARITY 함수의 세부 내용은 다음과 같다.
프로토타입
UTL_MATCH.JARO_WINKLER_SIMILARITY ( str1 IN VARCHAR2, str2 IN VARCHAR2 ) RETURN PLS_INTEGER;
파라미터
파라미터 | 설명 |
---|---|
str1 | 피연산자이다. |
str2 | 피연산자이다. |
반환값
반환값 | 설명 |
---|---|
PLS_INTEGER | str1과 str2의 Match Score 산출 결과를 백분율값으로 반환한다. str1과 str2 중 하나라도 NULL인 경우는 0을 반환한다. |
예제
BEGIN DBMS_OUTPUT.PUT_LINE(UTL_MATCH.JARO_DISTANCE_SIMILARITY('apple','aaple')); END; / 88