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