Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将qdap中的同义词添加到R中预先存在的数据帧_R_Text Mining_Qdap - Fatal编程技术网

将qdap中的同义词添加到R中预先存在的数据帧

将qdap中的同义词添加到R中预先存在的数据帧,r,text-mining,qdap,R,Text Mining,Qdap,我在R中创建了以下数据帧df Sl NO Word 1 get 2 Free 3 Joshi 4 Hello 5 New 我用这段代码得到了一个同义词列表,但相同的同义词是以列表的形式出现的 library(qdap) synonyms(DF$Word) 我得到了一个同义词列表。我想获得数据框中每个单词的同义词作为单独的列按行追加到数据框中 DF<- Sl NO W

我在R中创建了以下数据帧df

Sl NO  Word
1       get
2       Free
3       Joshi
4       Hello
5       New
我用这段代码得到了一个同义词列表,但相同的同义词是以列表的形式出现的

        library(qdap)
        synonyms(DF$Word)
我得到了一个同义词列表。我想获得数据框中每个单词的同义词作为单独的列按行追加到数据框中

  DF<-
          Sl NO   Word    Syn1          Syn2
          1       get     obtain        receive
          2       Free    independent   NA
          3       Joshi   NA            NA
          4       Hello   Greeting      NA
          5       New      Unused       Fresh

DF一种方法可以是使用
mapply
一次将每个单词传递给
qdap::同义词。“同义词”的结果可以使用
paste0
函数和
collapse=“|”
折叠在一列中。现在数据已经准备好了。 使用
tidyr::separate
将列分隔为
Syn1
Syn2

注意:
同义词
用两个参数调用,如
return.list=FALSE,multiwords=FALSE

下面的代码对最大
10
同义词有限制,但可以改进解决方案以动态处理数字

library(tidyverse)
library(qdap)
df %>% 
mutate(Synonyms = 
mapply(function(x)paste0(
head(synonyms(x, return.list = FALSE, multiwords = FALSE),10), collapse = "|"), 
tolower(.$Word))) %>%
separate(Synonyms, paste("Syn",1:10), sep = "\\|", extra = "drop" )
结果:

# SlNO  Word    Syn 1         Syn 2       Syn 3        Syn 4   Syn 5     Syn 6       Syn 7           Syn 8     Syn 9      Syn 10
# 1    1   get  achieve       acquire      attain          bag   bring      earn       fetch            gain     glean     inherit
# 2    2  Free buckshee complimentary      gratis   gratuitous  unpaid footloose independent       liberated     loose uncommitted
# 3    3 Joshi                   <NA>        <NA>         <NA>    <NA>      <NA>        <NA>            <NA>      <NA>        <NA>
# 4    4 Hello                   <NA>        <NA>         <NA>    <NA>      <NA>        <NA>            <NA>      <NA>        <NA>
# 5    5   New advanced   all-singing all-dancing contemporary current different       fresh ground-breaking happening      latest
df <- structure(list(sl_no = 1:5, word = c("get", "Free", "Joshi", 
"Hello", "New")), .Names = c("sl_no", "word"), class = "data.frame", row.names = c(NA, 
-5L))
#无字同步1同步2同步3同步4同步5同步6同步7同步8同步9同步10
#1 1获得获得包带来获得获得获得获得收集继承
#2 2免费巴克什免费免费免费无偿自由自在独立自由自在未承诺
#3.3乔希
#你好
#5 5全新先进全唱全舞当代不同新鲜开创性事件最新
数据

df <- read.table(text = 
"SlNO  Word
1       get
2       Free
3       Joshi
4       Hello
5       New", 
header = TRUE, stringsAsFactors = FALSE)

df这里是另一种使用
splitstackshape::cSplit
的方法

library(tidyverse)
library(qdap)
library(splitstackshape)

DF <- read.table(text = tt, header = T)
DF <- DF %>% mutate_at(vars(Word), tolower)
syns <- synonyms_frame(synonyms(tolower(DF$Word))) %>%
  mutate_at(vars(x), funs(str_remove(x, "\\..*"))) %>%
  mutate_at(vars(y), funs(str_extract(y, '[:alpha:]+'))) %>%
  group_by(x) %>%
  summarise(Syn = toString(y)) %>%
  rename(Word = x) %>% cSplit('Syn')

left_join(DF, syns)
库(tidyverse)
图书馆(qdap)
库(splitstackshape)
DF%
在(变量(y),funs(str_提取(y,[:alpha::+')))%上突变
分组依据(x)%>%
总结(Syn=toString(y))%>%
重命名(Word=x)%%>%cSplit('Syn'))
左联合(DF,syns)

我不确定您希望如何添加一个单词的所有同义词,因为当您运行
同义词(“get”)
时,它给出了75个
get
的定义,我觉得如果您在一行中添加75个定义的所有值,那么所需的布局将不会有多大帮助

所以在下面的解决方案中,我只选择了第一个定义

库(qdap)
图书馆(dplyr)
库(splitstackshape)
df%>%
行()
mutate(同义词(tolower(word))[[1]],collapse=“,”))%>%
cSplit(“单词的同义词“,”,”)
样本数据:

# SlNO  Word    Syn 1         Syn 2       Syn 3        Syn 4   Syn 5     Syn 6       Syn 7           Syn 8     Syn 9      Syn 10
# 1    1   get  achieve       acquire      attain          bag   bring      earn       fetch            gain     glean     inherit
# 2    2  Free buckshee complimentary      gratis   gratuitous  unpaid footloose independent       liberated     loose uncommitted
# 3    3 Joshi                   <NA>        <NA>         <NA>    <NA>      <NA>        <NA>            <NA>      <NA>        <NA>
# 4    4 Hello                   <NA>        <NA>         <NA>    <NA>      <NA>        <NA>            <NA>      <NA>        <NA>
# 5    5   New advanced   all-singing all-dancing contemporary current different       fresh ground-breaking happening      latest
df <- structure(list(sl_no = 1:5, word = c("get", "Free", "Joshi", 
"Hello", "New")), .Names = c("sl_no", "word"), class = "data.frame", row.names = c(NA, 
-5L))

df@marciaakshayaLeo-如果有,请别忘了告诉我们:)