2016-09-15 5 views
2

text2vec 패키지의 비 네트를 기반으로 워드 임베딩을 작성하는 예제가 제공됩니다. 위키 데이터가 토큰 화 된 다음 단어를 생성하는 데 사용되는 용어 동시 발생 행렬 (TCM)이 생성됩니다 패키지에 제공된 장갑 기능을 사용하여 임베딩. 패키지와 함께 제공되는 영화 리뷰 데이터에 단어 임베딩을 구축하려고합니다. 내 질문 :text2vec R 패키지에 단어 임베딩 준비

  1. 모든 영화 리뷰를 하나의 긴 문자열로 축소 한 다음 토큰 화해야합니까?

이렇게하면 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") 

답변

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 <- glove(tcm = tcm, 
      word_vectors_size = 50, 
      x_max = 10, learning_rate = 0.2, 
      num_iters = 15) 
+0

답장을 보내 주셔서 감사합니다. 이것은 정확하게 내가 바라는 것입니다. – amitkb3

관련 문제