當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R textrecipes step_tfidf 詞頻-令牌的逆文檔頻率


step_tfidf() 創建配方步驟的規範,該步驟將 token 變量轉換為包含術語 frequency-inverse 標記文檔頻率的多個變量。

用法

step_tfidf(
  recipe,
  ...,
  role = "predictor",
  trained = FALSE,
  columns = NULL,
  vocabulary = NULL,
  res = NULL,
  smooth_idf = TRUE,
  norm = "l1",
  sublinear_tf = FALSE,
  prefix = "tfidf",
  keep_original_cols = FALSE,
  skip = FALSE,
  id = rand_id("tfidf")
)

參數

recipe

一個recipe 對象。該步驟將添加到此配方的操作序列中。

...

一個或多個選擇器函數用於選擇受該步驟影響的變量。有關更多詳細信息,請參閱recipes::selections()

role

對於此步驟創建的模型項,應為它們分配什麽分析角色?默認情況下,該函數假定由原始變量創建的新列將用作模型中的預測變量。

trained

指示預處理數量是否已估計的邏輯。

columns

將由 terms 參數(最終)填充的變量名稱字符串。在 recipes::prep.recipe() 訓練該步驟之前,這是 NULL

vocabulary

要考慮的字符串的字符向量。

res

一旦 prep.recipe() 訓練了此預處理步驟,用於計算術語頻率的單詞將存儲在此處。

smooth_idf

通過向文檔頻率加一來實現真正的平滑 IDF 權重,就好像看到一個額外的文檔包含集合中的每個術語恰好一次。這可以防止被零除。

norm

一個字符,定義應用於術語向量的標準化類型。默認情況下"l1",即按文檔中的字數進行縮放。必須是 c("l1"、"l2"、"none") 之一。

sublinear_tf

邏輯上,應用次線性 term-frequency 縮放,即將術語頻率替換為 1 + log(TF)。默認為 FALSE。

prefix

將作為結果新變量的前綴的字符串。請參閱下麵的注釋。

keep_original_cols

將原始變量保留在輸出中的邏輯。默認為 FALSE

skip

一個合乎邏輯的。當recipes::bake.recipe() 烘焙食譜時是否應該跳過此步驟?雖然所有操作都是在 recipes::prep.recipe() 運行時烘焙的,但某些操作可能無法對新數據進行(例如處理結果變量)。使用 skip = FALSE 時應小心。

id

該步驟特有的字符串,用於標識它。

recipe 的更新版本,其中新步驟添加到現有步驟(如果有)的序列中。

細節

強烈建議在使用step_tfidf之前使用step_tokenfilter來限製創建的變量數量;否則你可能會遇到內存問題。一個好的策略是從較低的令牌數量開始,然後根據您想要使用的 RAM 數量增加令牌數量。

術語 frequency-inverse 文檔頻率是兩個統計量的乘積:術語頻率 (TF) 和逆文檔頻率 (IDF)。

術語頻率衡量每個標記在每個觀察中出現的次數。

逆文檔頻率是對單詞信息量的衡量,例如,該單詞在所有觀察中的常見或罕見程度。如果一個詞出現在所有觀察中,它可能不會提供那麽多的洞察力,但如果它隻出現在某些觀察中,它可能有助於區分觀察。

IDF 定義如下: idf = log(1 + (語料庫中的#個文檔) /(該術語出現的#個文檔))

新組件的名稱以 prefix 開頭,然後是變量名稱,最後是由 - 分隔的標記。變量名稱用零填充。例如,如果 prefix = "hash"num_terms < 10 ,則它們的名稱將為 hash1 - hash9 。如果 num_terms = 101 ,它們的名稱將為 hash001 - hash101

整理

當您 tidy() 此步驟時,將返回一個包含列 terms(選擇的選擇器或變量)、token(標記名稱)、weight(計算的 IDF 權重)的 tibble。

箱重

底層操作不允許使用案例權重。

也可以看看

step_tokenize() 將字符轉換為tokens

來自標記的數字變量的其他步驟:step_lda()step_texthash()step_tf()step_word_embeddings()

例子

# \donttest{
library(recipes)
library(modeldata)
data(tate_text)

tate_rec <- recipe(~., data = tate_text) %>%
  step_tokenize(medium) %>%
  step_tfidf(medium)

tate_obj <- tate_rec %>%
  prep()

bake(tate_obj, tate_text)
#> # A tibble: 4,284 × 956
#>        id artist             title     year tfidf_medium_1 tfidf_medium_10
#>     <dbl> <fct>              <fct>    <dbl>          <dbl>           <dbl>
#>  1  21926 Absalon            Proposa…  1990              0               0
#>  2  20472 Auerbach, Frank    Michael   1990              0               0
#>  3  20474 Auerbach, Frank    Geoffrey  1990              0               0
#>  4  20473 Auerbach, Frank    Jake      1990              0               0
#>  5  20513 Auerbach, Frank    To the …  1990              0               0
#>  6  21389 Ayres, OBE Gillian Phaëthon  1990              0               0
#>  7 121187 Barlow, Phyllida   Untitled  1990              0               0
#>  8  19455 Baselitz, Georg    Green V…  1990              0               0
#>  9  20938 Beattie, Basil     Present…  1990              0               0
#> 10 105941 Beuys, Joseph      Joseph …  1990              0               0
#> # ℹ 4,274 more rows
#> # ℹ 950 more variables: tfidf_medium_100 <dbl>, tfidf_medium_11 <dbl>,
#> #   tfidf_medium_12 <dbl>, tfidf_medium_13 <dbl>, tfidf_medium_133 <dbl>,
#> #   tfidf_medium_14 <dbl>, tfidf_medium_15 <dbl>, tfidf_medium_151 <dbl>,
#> #   tfidf_medium_16 <dbl>, tfidf_medium_160 <dbl>,
#> #   tfidf_medium_16mm <dbl>, tfidf_medium_18 <dbl>,
#> #   tfidf_medium_19 <dbl>, tfidf_medium_2 <dbl>, tfidf_medium_20 <dbl>, …

tidy(tate_rec, number = 2)
#> # A tibble: 1 × 4
#>   terms  token weight id         
#>   <chr>  <chr>  <dbl> <chr>      
#> 1 medium NA        NA tfidf_W9mpN
tidy(tate_obj, number = 2)
#> # A tibble: 952 × 4
#>    terms  token weight id         
#>    <chr>  <chr>  <dbl> <chr>      
#>  1 medium 1       7.26 tfidf_W9mpN
#>  2 medium 10      7.26 tfidf_W9mpN
#>  3 medium 100     7.26 tfidf_W9mpN
#>  4 medium 11      7.67 tfidf_W9mpN
#>  5 medium 12      7.67 tfidf_W9mpN
#>  6 medium 13      8.36 tfidf_W9mpN
#>  7 medium 133     8.36 tfidf_W9mpN
#>  8 medium 14      6.75 tfidf_W9mpN
#>  9 medium 15      6.57 tfidf_W9mpN
#> 10 medium 151     8.36 tfidf_W9mpN
#> # ℹ 942 more rows
# }

源代碼:R/tfidf.R

相關用法


注:本文由純淨天空篩選整理自大神的英文原創作品 Term Frequency-Inverse Document Frequency of Tokens。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。