R-转换新数据中的text2vec?
text2vec in R- Transform new data?
有关于为 text2vec 包创建 DTM(文档术语矩阵)的文档,例如以下内容,其中在构建矩阵后应用了 TFIDF 权重:
data("movie_review")
N <- 1000
it <- itoken(movie_review$review[1:N], preprocess_function = tolower,
tokenizer = word_tokenizer)
v <- create_vocabulary(it)
vectorizer <- vocab_vectorizer(v)
it <- itoken(movie_review$review[1:N], preprocess_function = tolower,
tokenizer = word_tokenizer)
dtm <- create_dtm(it, vectorizer)
# get tf-idf matrix from bag-of-words matrix
dtm_tfidf <- transformer_tfidf(dtm)
通常的做法是基于训练数据集创建 DTM 并将该数据集用作模型的输入。然后,当遇到新数据(测试集)时,需要在新数据上创建相同的 DTM(意味着训练集中使用的所有相同术语)。包中是否有以这种方式转换新数据集的方法(在 scikit 中,我们有针对此类实例的转换方法)。
实际上,当我开始 text2vec
时,我首先保留了该管道。现在我们正在准备更新 documentation.
的新版本
对于 v0.3,以下应该有效:
data("movie_review")
train_rows = 1:1000
prepr = tolower
tok = word_tokenizer
it <- itoken(movie_review$review[train_rows], prepr, tok, ids = movie_review$id[train_rows])
v <- create_vocabulary(it) %>%
prune_vocabulary(term_count_min = 5)
vectorizer <- vocab_vectorizer(v)
it <- itoken(movie_review$review[train_rows], prepr, tok)
dtm_train <- create_dtm(it, vectorizer)
# get idf scaling from train data
idf = get_idf(dtm_train)
# create tf-idf
dtm_train_tfidf <- transform_tfidf(dtm_train, idf)
test_rows = 1001:2000
# create iterator
it <- itoken(movie_review$review[test_rows], prepr, tok, ids = movie_review$id[test_rows])
# create dtm using same vectorizer, but new iterator
dtm_test_tfidf <- create_dtm(it, vectorizer) %>%
# transform tf-idf using idf from train data
transform_tfidf(idf)
有关于为 text2vec 包创建 DTM(文档术语矩阵)的文档,例如以下内容,其中在构建矩阵后应用了 TFIDF 权重:
data("movie_review")
N <- 1000
it <- itoken(movie_review$review[1:N], preprocess_function = tolower,
tokenizer = word_tokenizer)
v <- create_vocabulary(it)
vectorizer <- vocab_vectorizer(v)
it <- itoken(movie_review$review[1:N], preprocess_function = tolower,
tokenizer = word_tokenizer)
dtm <- create_dtm(it, vectorizer)
# get tf-idf matrix from bag-of-words matrix
dtm_tfidf <- transformer_tfidf(dtm)
通常的做法是基于训练数据集创建 DTM 并将该数据集用作模型的输入。然后,当遇到新数据(测试集)时,需要在新数据上创建相同的 DTM(意味着训练集中使用的所有相同术语)。包中是否有以这种方式转换新数据集的方法(在 scikit 中,我们有针对此类实例的转换方法)。
实际上,当我开始 text2vec
时,我首先保留了该管道。现在我们正在准备更新 documentation.
对于 v0.3,以下应该有效:
data("movie_review")
train_rows = 1:1000
prepr = tolower
tok = word_tokenizer
it <- itoken(movie_review$review[train_rows], prepr, tok, ids = movie_review$id[train_rows])
v <- create_vocabulary(it) %>%
prune_vocabulary(term_count_min = 5)
vectorizer <- vocab_vectorizer(v)
it <- itoken(movie_review$review[train_rows], prepr, tok)
dtm_train <- create_dtm(it, vectorizer)
# get idf scaling from train data
idf = get_idf(dtm_train)
# create tf-idf
dtm_train_tfidf <- transform_tfidf(dtm_train, idf)
test_rows = 1001:2000
# create iterator
it <- itoken(movie_review$review[test_rows], prepr, tok, ids = movie_review$id[test_rows])
# create dtm using same vectorizer, but new iterator
dtm_test_tfidf <- create_dtm(it, vectorizer) %>%
# transform tf-idf using idf from train data
transform_tfidf(idf)