ML.TF_IDF 関数

用語頻度 - 逆文書頻度(TF-IDF)は、コレクションまたはコーパス内のドキュメントにおける単語の重要度を反映します。機械学習モデルの作成で使用する事前計算済みの逆文書頻度を使用してドキュメント内の用語の TF-IDF を計算するには、ML.TF_IDF 関数を使用します。ML.TF_IDFTRANSFORM 句内で使用できます。

この関数は TF-IDF アルゴリズムを使用して、一連のトークン化されたドキュメントにおける用語の関連性を計算します。TF-IDF は、「あるドキュメントにおける用語の出現回数(用語頻度)」と、「ドキュメントのコレクション全体における当該用語の逆文書頻度(逆文書頻度)」という 2 つの指標を乗算します。

  • 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 は、入力テーブルと次の 2 つの列を返します。

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"}] |
+----+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

次のステップ

  • ML 以外での TF-IDF の詳細を確認する。