ML.TF_IDF 함수

TF-IDF(역문서 빈도)는 단어가 컬렉션 또는 코퍼스의 문서에서 얼마나 중요한지 나타냅니다. ML.TF_IDF 함수를 사용하여 머신러닝 모델 생성에 사용할 수 있도록 미리 계산된 역문서 빈도에 따라 문서의 용어 TF-IDF를 계산합니다. TRANSFORM 절 내에서 ML.TF_IDF를 사용할 수 있습니다.

이 함수는 TF-IDF 알고리즘을 사용하여 토큰화된 문서 집합에서 용어의 관련성을 계산합니다. TF-IDF는 두 가지 측정항목, 즉 용어가 문서에서 사용된 횟수(용어 빈도)와 문서 컬렉션 전반에서 해당 용어의 역 문서 빈도(역문서 빈도)를 곱합니다.

  • TF-IDF:

    term frequency * inverse document frequency
    
  • 용어 빈도:

    (count of term in document) / (document size)
    
  • 역문서 빈도:

    log(1 + num_documents / (1 + token_document_count))
    

top_kfrequency_threshold의 기준을 충족할 경우 용어 딕셔너리에 용어가 추가되고 그렇지 않으면 알 수 없는 용어로 간주됩니다. 알 수 없는 용어는 항상 딕셔너리의 첫 번째 용어이며 0으로 표시됩니다. 딕셔너리의 나머지 부분은 알파벳순으로 정렬됩니다.

구문

ML.TF_IDF(
  tokenized_document
  [, top_k]
  [, frequency_threshold]
)
OVER()

인수

ML.TF_IDF는 다음 인수를 사용합니다.

  • tokenized_document: 토큰화된 문서를 나타내는 ARRAY<STRING> 값입니다. 토큰화된 문서는 텍스트 분석에 사용되는 용어(토큰)의 모음입니다.
  • top_k: 선택적 인수입니다. 알 수 없는 용어를 제외하고 딕셔너리의 크기를 나타내는 INT64 값을 사용합니다. 대부분의 문서에 표시되는 top_k 용어는 이 임곗값이 충족될 때까지 사전에 추가됩니다. 예를 들어 이 값이 20인 경우 대부분의 문서에 나타나는 상위 20개의 고유 용어가 추가되고 이후에는 추가 용어가 추가되지 않습니다.
  • frequency_threshold: 선택적 인수입니다. 용어를 딕셔너리에 포함하기 위해 해당 용어가 표시되어야 하는 최소 문서 수를 나타내는 INT64 값을 사용합니다. 예를 들어 이 값이 3인 경우 딕셔너리에 추가하려면 용어가 3개 이상의 문서에 나타나야 합니다.

출력

ML.TF_IDF는 입력 테이블과 다음 두 열을 반환합니다.

ARRAY<STRUCT<index INT64, value FLOAT64>>

정의:

  • index: 딕셔너리에 추가된 용어의 색인입니다. 알 수 없는 용어의 색인은 0입니다.

  • value: 용어에 대한 TF-IDF 계산입니다.

할당량

Cloud AI 서비스 함수 할당량 및 제한사항을 참조하세요.

다음 예시에서는 ExampleTable 테이블을 만들고 ML.TF_IDF 함수를 적용합니다.

WITH
  ExampleTable AS (
    SELECT 1 AS id, ['I', 'like', 'pie', 'pie', 'pie', NULL] AS f
    UNION ALL
    SELECT 2 AS id, ['yum', 'yum', 'pie', NULL] AS f
    UNION ALL
    SELECT 3 AS id, ['I', 'yum', 'pie', NULL] AS f
    UNION ALL
    SELECT 4 AS id, ['you', 'like', 'pie', NULL] AS f
  )
SELECT id, ML.TF_IDF(f, 3, 1) OVER () AS results
FROM ExampleTable
ORDER BY id;

출력은 다음과 비슷합니다.

+----+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| id |                                                                                     results                                                                                     |
+----+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|  1 | [{"index":"0","value":"0.12679902142647365"},{"index":"1","value":"0.1412163100645339"},{"index":"2","value":"0.1412163100645339"},{"index":"3","value":"0.29389333245105953"}] |
|  2 |                                                                                        [{"index":"0","value":"0.5705955964191315"},{"index":"3","value":"0.14694666622552977"}] |
|  3 |                                             [{"index":"0","value":"0.380397064279421"},{"index":"1","value":"0.21182446509680086"},{"index":"3","value":"0.14694666622552977"}] |
|  4 |                                             [{"index":"0","value":"0.380397064279421"},{"index":"2","value":"0.21182446509680086"},{"index":"3","value":"0.14694666622552977"}] |
+----+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

다음 단계

  • 머신러닝 외부에서 TF-IDF에 대해 자세히 알아보세요.