TfIdfVectorizer

TfIdfVectorizer - 9

版本

  • 名稱TfIdfVectorizer (GitHub)

  • 網域main

  • since_version9

  • 函數False

  • 支援層級SupportType.COMMON

  • 形狀推斷True

此版本的運算子自版本 9 起可用。

摘要

此轉換從輸入序列中擷取 n-gram 並將它們儲存為向量。輸入可以是 1 維或 2 維張量。對於 1 維輸入,輸出是該輸入的 n-gram 表示法。對於 2 維輸入,輸出也是一個 2 維張量,其第 i 列是第 i 個輸入列的 n-gram 表示法。更具體地說,如果輸入形狀是 [C],則對應的輸出形狀將是 [max(ngram_indexes) + 1]。如果輸入形狀是 [N, C],則此運算子會產生一個 [N, max(ngram_indexes) + 1] 張量。

與標準 n-gram 擷取相比,此處,從原始序列中擷取 n-gram 的索引不一定是連續的數字。索引之間的間斷由跳過的數量控制。如果跳過的數量是 2,則在掃描原始序列時應跳過兩個符號。讓我們考慮一個範例。假設輸入序列是 [94, 17, 36, 12, 28],且跳過的數量是 2。相關的 2-gram 分別是 [94, 12] 和 [17, 28],其索引分別是 [0, 3] 和 [1, 4]。如果跳過的數量變成 0,則產生的 2-gram 分別是 [94, 17]、[17, 36]、[36, 12]、[12, 28],其索引分別是 [0, 1]、[1, 2]、[2, 3]、[3, 4]。

輸出向量(以 Y 表示)儲存每個 n-gram 的計數;Y[ngram_indexes[i]] 表示找到第 i 個 n-gram 的次數。屬性 ngram_indexes 用於決定索引 i 與對應 n-gram 輸出座標之間的映射。如果 pool_int64s 是 [94, 17, 17, 36],ngram_indexes 是 [1, 0],ngram_counts=[0, 0],則 Y[0](Y 中的第一個元素)和 Y[1](Y 中的第二個元素)分別是 [17, 36] 和 [94, 17] 的計數。在 pool_strings/pool_int64s 中找不到的 n-gram 應該被忽略,且對輸出沒有影響。請注意,我們可以在產生 n-gram 時考慮所有高達 S 的跳過。

如果模式是「TF」,則上面使用的範例為真。如果模式是「IDF」,則所有大於 1 的計數都會被截斷為 1,且權重中的第 i 個元素會被用來縮放(透過乘法)池中第 i 個 n-gram 的計數。如果模式是「TFIDF」,則此運算子會先計算所有 n-gram 的計數,然後以權重屬性中相關的值來縮放它們。

只能設定 pool_strings 和 pool_int64s 其中之一。如果設定 pool_int64s,則輸入應該是整數張量。如果設定 pool_strings,則輸入必須是字串張量。

屬性

  • max_gram_length - INT (必要)

    最大 n-gram 長度。如果此值是 3,則會使用 3-gram 來產生輸出。

  • max_skip_count - INT (必要)

    從 X 建構 n-gram 時要跳過的最大項目(整數/字串)數量。如果 max_skip_count=1、min_gram_length=2、max_gram_length=3,則此運算子可能會產生 skip_count=0 和 skip_count=1 的 2-gram,以及 skip_count=0 和 skip_count=1 的 3-gram

  • min_gram_length - INT (必要)

    最小 n-gram 長度。如果此值是 2 且 max_gram_length 是 3,則輸出可能包含 2-gram 和 3-gram 的計數。

  • mode - STRING (必要)

    加權標準。它可以是「TF」(詞頻)、「IDF」(反向文件頻率)和「TFIDF」(TF 和 IDF 的組合)其中之一。

  • ngram_counts - INTS (必要)

    池中 1-gram、2-gram 等的起始索引。當決定兩個連續 n-gram 集合之間的界限時,它很有用。例如,如果 ngram_counts 是 [0, 17, 36],則池中 1-gram/2-gram/3-gram 的第一個索引(從零開始)是 0/17/36。此格式與 CSR(或 CSC)稀疏矩陣格式基本相同,且我們選擇使用此格式是因為它很受歡迎。

  • ngram_indexes - INTS (必要)

    int64s 清單 (類型:AttributeProto::INTS)。此清單與指定的 'pool_*' 屬性平行。ngram_indexes 中的第 i 個元素表示輸出張量中第 i 個 n-gram 的座標。

  • pool_int64s - INTS :

    從訓練集中學習到的 int64 n-gram 清單。必須存在此屬性或 pool_strings 屬性,但不能同時存在。它是一個 1 維張量,從所有 1-gram 的集合開始,到 n-gram 的集合結束。池中的第 i 個元素儲存應該對應到輸出向量中 ngram_indexes[i] 座標的 n-gram。

  • pool_strings - STRINGS :

    從訓練集中學習到的字串 n-gram 列表。此屬性或 pool_int64s 屬性必須存在其中一個,但不能同時存在。這是一個一維張量,從所有 1-gram 的集合開始,到 n-gram 的集合結束。池中的第 i 個元素儲存應該對應到輸出向量中 ngram_indexes[i] 座標的 n-gram。

  • weights - 浮點數 :

    浮點數列表。此屬性儲存池中每個 n-gram 的權重。weights 中的第 i 個元素是池中第 i 個 n-gram 的權重。它的長度等於 ngram_indexes 的大小。預設情況下,weights 是一個全為 1 的張量。當模式為 “IDF” 或 “TFIDF” 時,此屬性用於縮放相關的字詞計數。

輸入

  • X (異質) - T

    用於 n-gram 提取的輸入

輸出

  • Y (異質) - T1

    Ngram 結果

類型約束

  • T in ( tensor(int32), tensor(int64), tensor(string) )

    輸入是 UTF-8 字串或 int32/int64

  • T1 in ( tensor(float) )

    一維浮點數張量