gpt4 book ai didi

r - 创建词组而不是R中的单个词的 "word"云

转载 作者:行者123 更新时间:2023-12-04 05:49:23 28 4
gpt4 key购买 nike

我正在尝试从一系列短语中使一个单词云成为一个词云,而不是从单个单词中重复很多短语。我的数据看起来像这样,数据框的一列是短语列表。

df$names <- c("John", "John", "Joseph A", "Mary A", "Mary A", "Paul H C", "Paul H C")

我想将所有这些名称视为显示频率的单个短语而不是组成它们的单词,作一个词云。我一直在使用的代码如下所示:
df.corpus <- Corpus(DataframeSource(data.frame(df$names)))
df.corpus <- tm_map(client.corpus, function(x) removeWords(x, stopwords("english")))
#turning that corpus into a tDM
tdm <- TermDocumentMatrix(df.corpus)
m <- as.matrix(tdm)
v <- sort(rowSums(m),decreasing=TRUE)
d <- data.frame(word = names(v),freq=v)
pal <- brewer.pal(9, "BuGn")
pal <- pal[-(1:2)]
#making a worcloud
png("wordcloud.png", width=1280,height=800)
wordcloud(d$word,d$freq, scale=c(8,.3),min.freq=2,max.words=100, random.order=T, rot.per=.15, colors="black", vfont=c("sans serif","plain"))
dev.off()

这会创建一个词云,但它是每个组成词的词库,而不是短语的词库。因此,我看到了“A”的相对频率。我想要的是“H”,“John”等而不是“Joseph A”,“Mary A”等的相对频率。

我敢肯定这修复起来并不复杂,但是我无法弄清楚!我将不胜感激任何帮助。

最佳答案

您的困难在于df$names的功能将tm的每个元素都视为“文档”。例如,文档John A包含单词JohnA。听起来您想保持名称不变,只计算它们的出现-您可以使用table

library(wordcloud)
df<-data.frame(theNames=c("John", "John", "Joseph A", "Mary A", "Mary A", "Paul H C", "Paul H C"))
tb<-table(df$theNames)
wordcloud(names(tb),as.numeric(tb), scale=c(8,.3),min.freq=1,max.words=100, random.order=T, rot.per=.15, colors="black", vfont=c("sans serif","plain"))

关于r - 创建词组而不是R中的单个词的 "word"云,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26937960/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com