La funzione ML.TF_IDF

Il termine TF-IDF (frequenza inversa dei documenti) riflette l'importanza di una parola per un documento in una raccolta o in un corpus. Usa la funzione ML.TF_IDF per calcolare il valore TF-IDF dei termini in un documento, data la frequenza precalcolata del documento inverso per l'utilizzo nella creazione di modelli di machine learning. Puoi utilizzare ML.TF_IDF all'interno della clausola TRASFORMA.

Questa funzione utilizza un algoritmo TF-IDF per calcolare la pertinenza dei termini in un insieme di documenti tokenizzati. TF-IDF moltiplica due metriche: quante volte un termine viene visualizzato in un documento (frequenza dei termini) e la frequenza inversa dei documenti del termine in una raccolta di documenti (frequenza inversa del documento).

  • TF-IDF:

    term frequency * inverse document frequency
    
  • Frequenza termine:

    (count of term in document) / (document size)
    
  • Frequenza inversa del documento:

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

I termini vengono aggiunti a un dizionario se soddisfano i criteri di top_k e frequency_threshold, altrimenti vengono considerati come termine sconosciuto. Il termine sconosciuto è sempre il primo termine del dizionario ed è rappresentato come 0. Il resto del dizionario è in ordine alfabetico.

Sintassi

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

Argomenti

ML.TF_IDF accetta i seguenti argomenti:

  • tokenized_document: valore ARRAY<STRING> che rappresenta un documento che è stato tokenizzato. Un documento tokenizzato è una raccolta di termini (token) utilizzati per l'analisi del testo.
  • top_k: argomento facoltativo. Prende un valore INT64, che rappresenta la dimensione del dizionario, escluso il termine sconosciuto. I termini top_k visualizzati nella maggior parte dei documenti vengono aggiunti al dizionario fino al raggiungimento di questa soglia. Ad esempio, se questo valore è 20, vengono aggiunti i primi 20 termini univoci presenti nella maggior parte dei documenti senza aggiungere altri termini.
  • frequency_threshold: argomento facoltativo. Utilizza un valore INT64 che rappresenta il numero minimo di documenti in cui un termine deve apparire per essere incluso nel dizionario. Ad esempio, se questo valore è 3, un termine deve essere presente in almeno tre documenti per poter essere aggiunto al dizionario.

Output

ML.TF_IDF restituisce la tabella di input e le due colonne seguenti:

ARRAY<STRUCT<index INT64, value FLOAT64>>

Definizioni:

  • index: l'indice del termine aggiunto al dizionario. I termini sconosciuti hanno un indice pari a 0.

  • value: il calcolo di TF-IDF per il termine.

Quote

Consulta Quote e limiti delle funzioni di servizio IA di Cloud.

Esempio

L'esempio seguente crea una tabella ExampleTable e applica la funzione 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;

L'output è simile al seguente:

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

Passaggi successivi

  • Scopri di più su TF-IDF al di fuori del machine learning.