ML.BAG_OF_WORDS 함수

ML.BAG_OF_WORDS 함수를 사용하여 토큰화된 문서의 표현을 단어 순서 및 문법에 관계없이 집합(멀티 세트)으로 계산합니다. TRANSFORM 절에서 ML.BAG_OF_WORDS를 사용할 수 있습니다.

구문

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

인수

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

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

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

출력

ML.BAG_OF_WORDS는 입력에 있는 모든 행의 값을 반환합니다. 각 값의 유형은 다음과 같습니다.

ARRAY<STRUCT<index INT64, value FLOAT64>>

정의:

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

할당량

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

예시

다음 예시는 알 수 없는 용어 없이 입력 열 f에서 ML.BAG_OF_WORDS 함수를 호출합니다.

WITH ExampleTable AS (
  SELECT 1 AS id, ['a', 'b', 'b', 'c'] AS f
  UNION ALL
  SELECT 2 AS id, ['a', 'c'] AS f
)

SELECT ML.BAG_OF_WORDS(f, 32, 1) OVER() AS results
FROM ExampleTable
ORDER BY id;

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

+----+---------------------------------------------------------------------------------------+
| id |                                        results                                        |
+----+---------------------------------------------------------------------------------------+
|  1 | [{"index":"1","value":"1.0"},{"index":"2","value":"2.0"},{"index":"3","value":"1.0"}] |
|  2 |                             [{"index":"1","value":"1.0"},{"index":"3","value":"1.0"}] |
+----+---------------------------------------------------------------------------------------+

알 수 없는 용어가 없으므로 결과에 0 색인이 없습니다.

다음 예시에서는 입력 열 f에서 ML.BAG_OF_WORDS 함수를 호출합니다.

WITH ExampleTable AS (
  SELECT 1 AS id, ['a', 'b', 'b', 'b', 'c', 'c', 'c', 'c', 'd', 'd'] AS f
  UNION ALL
  SELECT 2 AS id, ['a', 'c', NULL] AS f
)

SELECT ML.BAG_OF_WORDS(f, 4, 2) OVER() AS results
FROM ExampleTable
ORDER BY id;

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

+----+---------------------------------------------------------------------------------------+
| id |                                        results                                        |
+----+---------------------------------------------------------------------------------------+
|  1 | [{"index":"0","value":"5.0"},{"index":"1","value":"1.0"},{"index":"2","value":"4.0"}] |
|  2 | [{"index":"0","value":"1.0"},{"index":"1","value":"1.0"},{"index":"2","value":"1.0"}] |
+----+---------------------------------------------------------------------------------------+
 

frequency_threshold 값이 2로 설정된 경우 bd의 값은 한 문서에만 표시되므로 반환되지 않습니다.

다음 예시에서는 top_k 값이 더 낮은 ML.BAG_OF_WORDS 함수를 호출합니다.


WITH ExampleTable AS (
  SELECT 1 AS id, ['a', 'b', 'b', 'c'] AS f
  UNION ALL
  SELECT 2 AS id, ['a', 'c', 'c'] AS f
)

SELECT ML.BAG_OF_WORDS(f, 2, 1) OVER() AS results
FROM ExampleTable
ORDER BY id;

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

+----+---------------------------------------------------------------------------------------+
| id |                                        results                                        |
+----+---------------------------------------------------------------------------------------+
|  1 | [{"index":"0","value":"2.0"},{"index":"1","value":"1.0"},{"index":"2","value":"1.0"}] |
|  2 |                             [{"index":"1","value":"1.0"},{"index":"2","value":"2.0"}] |
+----+---------------------------------------------------------------------------------------+
 

상위 2개 용어를 지정하려고 하므로 b의 값이 반환되지 않으며 b는 문서 하나에만 표시됩니다.

다음 예시에는 빈도가 동일한 두 용어가 포함되어 있습니다. 알파벳 순서로 인해 결과 중 하나의 용어가 결과에서 제외됩니다.


WITH ExampleData AS (
  SELECT 1 AS id, ['a', 'b', 'b', 'c', 'd', 'd', 'd'] as f
  UNION ALL
  SELECT 2 AS id, ['a', 'c', 'c', 'd', 'd', 'd'] as f
)

SELECT id, ML.BAG_OF_WORDS(f, 2 ,2) OVER() as result
FROM ExampleData
ORDER BY id;

결과는 다음과 같이 표시됩니다.

+----+---------------------------------------------------------------------------------------+
| id |                                         result                                        |
+----+---------------------------------------------------------------------------------------+
|  1 | [{"index":"0","value":"5.0"},{"index":"1","value":"1.0"},{"index":"2","value":"1.0"}] |
|  2 | [{"index":"0","value":"3.0"},{"index":"1","value":"1.0"},{"index":"2","value":"2.0"}] |
+----+---------------------------------------------------------------------------------------+

다음 단계