基于text2vec包的小插图,提供了一个创建词嵌入的示例。对wiki数据进行标记,然后创建术语共现矩阵(TCM),该矩阵用于使用包中提供的glove函数创建词嵌入。
我想为包中提供的电影评论数据构建词嵌入。我的问题是:
- 我是否需要将所有电影评论折叠成一长串,然后进行标记化。
这将导致 2 个评论之间的边界标记同时出现,这是没有意义的。
**vignettes code:**
library(text2vec)
library(readr)
temp <- tempfile()
download.file('http://mattmahoney.net/dc/text8.zip', temp)
wiki <- read_lines(unz(temp, "text8"))
unlink(temp)
# Create iterator over tokens
tokens <- strsplit(wiki, split = " ", fixed = T)
# Create vocabulary. Terms will be unigrams (simple words).
vocab <- create_vocabulary(itoken(tokens))
vocab <- prune_vocabulary(vocab, term_count_min = 5L)
# We provide an iterator to create_vocab_corpus function
it <- itoken(tokens)
# Use our filtered vocabulary
vectorizer <- vocab_vectorizer(vocab,
# don't vectorize input
grow_dtm = FALSE,
# use window of 5 for context words
skip_grams_window = 5L)
tcm <- create_tcm(it, vectorizer)
fit <- glove(tcm = tcm,
word_vectors_size = 50,
x_max = 10, learning_rate = 0.2,
num_iters = 15)
我有兴趣开发词嵌入的数据可以通过以下方式获得:
library(text2vec)
data("movie_review")
不,您不需要串联评论。你只需要构建tcm
来自令牌上的正确迭代器:
library(text2vec)
data("movie_review")
tokens = movie_review$review %>% tolower %>% word_tokenizer
it = itoken(tokens)
# create vocabulary
v = create_vocabulary(it) %>%
prune_vocabulary(term_count_min = 5)
# create co-occurrence vectorizer
vectorizer = vocab_vectorizer(v, grow_dtm = F, skip_grams_window = 5)
现在我们需要重新初始化(对于稳定的0.3版本。对于dev 0.4不需要重新初始化迭代器):
it = itoken(tokens)
tcm = create_tcm(it, vectorizer)
适配型号:
fit <- glove(tcm = tcm,
word_vectors_size = 50,
x_max = 10, learning_rate = 0.2,
num_iters = 15)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)