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,则字词必须至少出现在三个文档中,才能被添加到字典中。

输出

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