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


R textrecipes step_word_embeddings 令牌的預訓練詞嵌入


step_word_embeddings() 創建配方步驟的規範,通過聚合預訓練嵌入中每個標記的向量,將 token 變量轉換為 word-embedding 維度。

用法

step_word_embeddings(
  recipe,
  ...,
  role = "predictor",
  trained = FALSE,
  columns = NULL,
  embeddings,
  aggregation = c("sum", "mean", "min", "max"),
  aggregation_default = 0,
  prefix = "wordembed",
  keep_original_cols = FALSE,
  skip = FALSE,
  id = rand_id("word_embeddings")
)

參數

recipe

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

...

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

role

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

trained

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

columns

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

embeddings

預先訓練的詞嵌入的 tibble,例如由 textdata 包中的 embedding_glove 函數返回的詞嵌入。第一列應包含標記,其他列應包含嵌入向量。

aggregation

給出要使用的聚合函數名稱的字符。必須是 "sum"、"mean"、"min" 和 "max" 之一。默認為"sum"。

aggregation_default

表示在嵌入中匹配沒有單詞的情況的默認值的數字。默認為 0。

prefix

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

keep_original_cols

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

skip

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

id

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

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

細節

詞嵌入將詞(或其他標記)映射到高維特征空間。此函數將預先訓練的詞嵌入映射到數據中的標記上。

參數 embeddings 提供預訓練向量。此 tibble 中存在的每個維度都會成為一個新的特征列,每一列使用 aggregation 參數中提供的函數在文本的每一行中聚合。

新組件的名稱以 prefix 開頭,然後是聚合函數的名稱,然後是嵌入小標題中的變量的名稱(通常類似於 "d7")。例如,使用默認的 "wordembedding" 前綴和 textdata 包中的 GloVe 嵌入(其中列名稱為 d1d2 等),新列將為 wordembedding_d1wordembedding_d1 , ETC。

整理

當您tidy()此步驟時,會出現一個包含列terms(選擇的選擇器或變量)、embedding_rows(嵌入的行數)和aggregation(聚合方法)的小標題。

箱重

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

也可以看看

step_tokenize() 將字符轉換為tokens

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

例子

library(recipes)

embeddings <- tibble(
  tokens = c("the", "cat", "ran"),
  d1 = c(1, 0, 0),
  d2 = c(0, 1, 0),
  d3 = c(0, 0, 1)
)

sample_data <- tibble(
  text = c(
    "The.",
    "The cat.",
    "The cat ran."
  ),
  text_label = c("fragment", "fragment", "sentence")
)

rec <- recipe(text_label ~ ., data = sample_data) %>%
  step_tokenize(text) %>%
  step_word_embeddings(text, embeddings = embeddings)

obj <- rec %>%
  prep()

bake(obj, sample_data)
#> # A tibble: 3 × 4
#>   text_label wordembed_text_d1 wordembed_text_d2 wordembed_text_d3
#>   <fct>                  <dbl>             <dbl>             <dbl>
#> 1 fragment                   1                 0                 0
#> 2 fragment                   1                 1                 0
#> 3 sentence                   1                 1                 1

tidy(rec, number = 2)
#> # A tibble: 1 × 4
#>   terms embeddings_rows aggregation id                   
#>   <chr>           <int> <chr>       <chr>                
#> 1 text                3 sum         word_embeddings_HUbJD
tidy(obj, number = 2)
#> # A tibble: 1 × 4
#>   terms embeddings_rows aggregation id                   
#>   <chr>           <int> <chr>       <chr>                
#> 1 text                3 sum         word_embeddings_HUbJD

相關用法


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