제42장 UTL_MATCH

내용 목차

42.1. 개요
42.2. 함수
42.2.1. EDIT_DISTANCE
42.2.2. EDIT_DISTANCE_SIMILARITY
42.2.3. JARO_WINKLER
42.2.4. JARO_WINKLER_SIMILARITY

본 장에서는 UTL_MATCH 패키지의 기본 개념과 패키지 내의 함수를 사용하는 방법을 설명한다.

42.1. 개요

UTL_MATCH는 두 문자열의 유사도를 계산하는 함수들을 제공하는 패키지이다.

본 패키지는 두 문자열의 유사도를 계산하는 방법들 중 Levenshtein 알고리즘을 사용하여 Edit Distance를 산출하는 방법과 Jaro-Winkler 알고리즘을 사용하여 Match Score를 산출하는 방법을 사용하는 함수들을 제공한다.

42.2. 함수

본 절에서는 UTL_MATCH 패키지에서 제공하는 함수를 알파벳 순으로 설명한다.

42.2.1. EDIT_DISTANCE

주어진 두 문자열의 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
    

42.2.2. EDIT_DISTANCE_SIMILARITY

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
    

42.2.3. JARO_WINKLER

주어진 두 문자열의 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
    

42.2.4. JARO_WINKLER_SIMILARITY

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