2016-09-15 5 views
2

На основе виньетки пакета text2vec представлен пример создания встраивания слов. Данные вики-файла являются токенизированными, а затем создается матрица совместного возникновения (TCM), которая используется для создания слова вложение с использованием перчаточной функции, предусмотренной в пакете. Я хочу построить вложение слов для данных просмотра фильма, предоставленных с пакетом. Мой вопрос:Подготовка текстовых вложений в пакете text2vec R

  1. Мне нужно свернуть все просмотры фильмов в одну длинную строку, а затем сделать токенизацию.

Это вызовет граничные знаки между двумя отзывами, чтобы совместить, что не имеет смысла.

**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") 

ответ

3

Нет, вам не нужно сцепить отзывы. Вам нужно просто построить 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 модель:

fit <- glove(tcm = tcm, 
      word_vectors_size = 50, 
      x_max = 10, learning_rate = 0.2, 
      num_iters = 15) 
+0

Благодарим за ваш ответ. Именно этого я и надеялся. – amitkb3