首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R变换新数据中的text2vec?

R变换新数据中的text2vec?
EN

Stack Overflow用户
提问于 2016-08-26 20:45:17
回答 1查看 1.3K关注 0票数 1

有关于为text2vec包创建DTM (文档术语矩阵)的文档,例如,在构建矩阵之后应用TFIDF权重的文档如下:

代码语言:javascript
复制
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中,我们只有这种类型的实例的转换方法)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-28 11:44:40

实际上,当我启动text2vec时,我一开始就保留了这条管道。现在,我们正在用更新的文档准备新的发行版。

对于0.3版,以下内容应该有效:

代码语言:javascript
复制
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)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39174394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档