在R中使用tex2vec的手套词嵌入模型参数,并在每n次迭代后显示训练输出(epochs)
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)
当我 运行 这段代码时,我得到以下输出:
我的问题是:
- 是否可以每n次迭代后有输出,即epoch 50、100、150等的输出
- 对 word_vectors_size、x_max 和 learning_rate 的最佳值有何建议?例如,对于 10,000 个文档,这些参数的最佳值是多少?
感谢您的回复。
非常感谢,
山姆
GlobalVectors
class 中有一个成员叫 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
提供的价值就越大。对于维基百科,大小 300 通常就足够了。对于较小的数据集,您可以从 20-50 开始。你真的需要试验一下。
我在 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)
当我 运行 这段代码时,我得到以下输出:
我的问题是:
- 是否可以每n次迭代后有输出,即epoch 50、100、150等的输出
- 对 word_vectors_size、x_max 和 learning_rate 的最佳值有何建议?例如,对于 10,000 个文档,这些参数的最佳值是多少?
感谢您的回复。
非常感谢, 山姆
GlobalVectors
class 中有一个成员叫 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
提供的价值就越大。对于维基百科,大小 300 通常就足够了。对于较小的数据集,您可以从 20-50 开始。你真的需要试验一下。