簡體   English   中英

使用R中的tex2vec進行手套詞嵌入模型參數,並每n次迭代后顯示訓練輸出(歷元)

[英]Glove word embedding model parameters using tex2vec in R, and display training output (epochs) after every n iterations

我正在R中使用text2vec軟件包來訓練單詞嵌入(手套模型),如下所示:

library(text2vec)
library(tm)

prep_fun = tolower
tok_fun = word_tokenizer
tokens = docs %>%  # docs: a collection of text documents  
prep_fun %>% 
tok_fun

it = itoken(tokens, progressbar = FALSE)

stopword <- tm::stopwords("SMART")
vocab = create_vocabulary(it,stopwords=stopword) 

vectorizer <- vocab_vectorizer(vocab)

tcm <- create_tcm(it, vectorizer, skip_grams_window = 6)

x_max <- min(50,max(10,ceiling(length(vocab$doc_count)/100)))
glove_model <- GlobalVectors$new(word_vectors_size = 200, vocabulary = vocab, x_max = x_max,learning_rate = 0.1) 

word_vectors <- glove_model$fit_transform(tcm, n_iter = 1000, convergence_tol = 0.001)

運行此代碼時,將得到以下輸出: 在此處輸入圖片說明

我的問題是:

  1. 每n次迭代后是否有輸出,即針對時期50、100、150等的輸出。
  2. 對word_vectors_size,x_max和learning_rate的最佳值有何建議? 例如,對於10,000個文檔,這些參數的最佳價值是多少?

感謝您的回復。

非常感謝,山姆

GlobalVectors類的一個成員稱為n_dump_every 您可以將其設置為一些數字,並且單詞嵌入的歷史記錄將被保存。 然后可以使用get_history()函數進行檢索

glove_model <- GlobalVectors$new(word_vectors_size = 200, vocabulary = vocab, x_max = 100,learning_rate = 0.1) 
glove_model$n_dump_every = 10
word_vectors <- glove_model$fit_transform(tcm, n_iter = 1000, convergence_tol = 0.001)
trace = glove_model$get_history()

關於第二個問題-

  • 您可以嘗試略微改變學習率(通常會降低),但默認設置應該可以(跟蹤成本函數的值)。
  • 您擁有的數據越多,可以為word_vectors_size提供的值word_vectors_size 對於Wikipedia,大小通常為300就足夠了。 對於較小的數據集,您可以從20-50開始。 您確實需要嘗試一下。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM