【发布时间】:2018-02-20 18:27:13
【问题描述】:
library(NLP)
library(tm)
library(tidytext)
library(tidyverse)
library(topicmodels)
library(dplyr)
library(stringr)
library(purrr)
library(tidyr)
#sample dataset
tags <- c("product, productdesign, electronicdevice")
web <- c("hardware, sunglasses, eyeware")
tags2 <- data_frame(tags, web, stringsAsFactors = FALSE)
#tokenize the words
toke <- tags2 %>%
unnest_tokens(word, tags)
toke
#create a dummy variable
toke2 <- toke%>% mutate(
product = ifelse(str_detect(word, "^product$"), "1", "0"))
#unnest the toke
nested_toke <- toke2 %>%
nest(word) %>%
mutate(text = map(data, unlist),
text = map_chr(text, paste, collapse = " "))
nested_toke %>%
select(text)
当我在基于字符串“product”创建虚拟变量后嵌套标记词列时,它似乎将“product”插入到“product”所在的原始行下方的新行中。
【问题讨论】:
-
我将开始一个新会话并再次尝试该代码。这对我来说很好。
-
嘿@JakeKaupp 抱歉,我不小心将这些单词作为单独的值包含在它们应该全部包含在同一行中时。我编辑了语法以复制问题。对不起,我应该以前检查过。感谢您的回复!
-
你不需要
nest然后mutate和purrr,你可以group_by和summarize(text = paste(words, collapse = " "))代替。这可能会摆脱您的额外组。 -
嘿@JakeKaupp 再次感谢您的回复。我尝试了以下语法nested_toke % group_by(word) %>% summarise(text = paste(words, collapse = " ")) 但它似乎已经删除了虚拟变量列“product”
-
如果您想使用
summarize保留产品,您必须将产品包含在组中