2016-09-15 6 views
2

text2vecパッケージのビネットに基づいて、単語埋め込みを作成する例を提供します.Wikiデータをトークン化し、単語を作成するために使用される用語共起行列(TCM)を作成しますパッケージに含まれている手袋機能を使用して埋め込む。 パッケージで提供されているムービーレビューデータのワード埋め込みを作成したいと考えています。私の質問は次のとおりです。text2vec Rパッケージに単語埋め込みを準備する

  1. すべてのムービーレビューを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

関連する問題