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


R textrecipes step_tokenfilter 根據詞頻過濾標記


step_tokenfilter() 創建配方步驟的規範,該步驟將轉換 token 變量以根據頻率進行過濾。

用法

step_tokenfilter(
  recipe,
  ...,
  role = NA,
  trained = FALSE,
  columns = NULL,
  max_times = Inf,
  min_times = 0,
  percentage = FALSE,
  max_tokens = 100,
  filter_fun = NULL,
  res = NULL,
  skip = FALSE,
  id = rand_id("tokenfilter")
)

參數

recipe

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

...

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

role

由於沒有創建新變量,因此此步驟未使用。

trained

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

columns

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

max_times

一個整數。單詞被刪除之前可以出現的最大次數。

min_times

一個整數。單詞被刪除之前可以出現的最少次數。

percentage

一個合乎邏輯的。 max_times 和 min_times 應該解釋為百分比而不是計數。

max_tokens

一個整數。在 max_times 和 min_times 完成過濾後,僅保留頂部的 max_tokens 標記。默認為 100。

filter_fun

一個函數。該函數應采用字符向量,並返回相同長度的邏輯向量。該函數將應用於數據集的每個觀察。默認為 NULL 。如果使用此參數,所有其他參數將被忽略。

res

一旦通過 prep.recipe() 訓練此預處理步驟,將保留的單詞將存儲在此處。

skip

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

id

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

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

細節

此步驟允許您通過過濾語料庫中出現的標記來限製您正在查看的標記。如果標記在數據中出現過多或過少,您可以將其排除。可以使用 max_timesmin_times 將其指定為計數,也可以通過將 percentage 設置為 TRUE 將其指定為百分比。此外,還可以過濾以僅使用最常用的 max_tokens 標記。如果max_tokens 設置為Inf,則將使用所有令牌。當標記是單詞或三元組時,這通常會導致非常大的數據集。一個好的策略是從較低的令牌數量開始,然後根據您想要使用的 RAM 數量增加。

強烈建議在使用step_tfstep_tfidf之前進行過濾,以限製創建的變量數量。

整理

當您tidy()此步驟時,會出現一個包含列terms(選擇的選擇器或變量)和value(唯一標記的數量)的小標題。

調整參數

這一步有3個調整參數:

  • max_times:最大令牌頻率(類型:整數,默認值:Inf)

  • min_times:最小令牌頻率(類型:整數,默認值:0)

  • max_tokens : # 保留的令牌(類型:整數,默認值:100)

箱重

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

也可以看看

step_tokenize() 將字符轉換為tokens

令牌修改的其他步驟: step_lemma()step_ngram()step_pos_filter()step_stem()step_stopwords()step_tokenmerge()

例子

library(recipes)
library(modeldata)
data(tate_text)

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

tate_obj <- tate_rec %>%
  prep()

bake(tate_obj, new_data = NULL, medium) %>%
  slice(1:2)
#> # A tibble: 2 × 1
#>       medium
#>    <tknlist>
#> 1 [8 tokens]
#> 2 [3 tokens]

bake(tate_obj, new_data = NULL) %>%
  slice(2) %>%
  pull(medium)
#> <textrecipes_tokenlist[1]>
#> [1] [3 tokens]
#> # Unique Tokens: 3

tidy(tate_rec, number = 2)
#> # A tibble: 1 × 3
#>   terms  value id               
#>   <chr>  <int> <chr>            
#> 1 medium    NA tokenfilter_iSSZG
tidy(tate_obj, number = 2)
#> # A tibble: 1 × 3
#>   terms  value id               
#>   <chr>  <int> <chr>            
#> 1 medium   952 tokenfilter_iSSZG
源代碼:R/tokenfilter.R

相關用法


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