分而治之:用极性构建对比词云
既然您已经看到如何用极性来划分语料库,那就动手试试吧!下面的代码将带您根据情感将语料库分组,这样您就能分别查看各子集中的信息,而不是只看整体。
您的 R 会话中已有 oz_pol,它是将 polarity() 应用于 "The Wonderful Wizard of Oz" 得到的结果。
为便于操作,我们准备了一个简单的自定义函数 pol_subsections(),用于按极性得分划分语料库。首先,该函数接收一个数据框,其中每一行代表语料库中的一句话或一个文档。接着,它根据极性值是否大于或小于 0 来筛选数据框。最后,将正向和负向句子(非零极性)用参数 collapse 连接起来,使这些词项各自汇总为一个语料。最后,这两个文档被合并为一个包含两个不同文档的向量。
pol_subsections <- function(df) {
x.pos <- subset(df$text, df$polarity > 0)
x.neg <- subset(df$text, df$polarity < 0)
x.pos <- paste(x.pos, collapse = " ")
x.neg <- paste(x.neg, collapse = " ")
all.terms <- c(x.pos, x.neg)
return(all.terms)
}
此时,您已剔除中性句子,接下来要专注于整理剩余文本。本练习中我们再次使用 %>% 运算符将对象传递给函数。经过一些简单清洗后,使用 comparison.cloud() 生成可视化。
本练习是课程的一部分
R 中的情感分析
交互式实操练习
通过完成这段示例代码来试试这个练习。
oz_df <- oz_pol$all %>%
# Select text.var as text and polarity
___(text = ___, polarity = ___)
# Apply custom function pol_subsections()
all_terms <- ___(___)
all_corpus <- all_terms %>%
# Source from a vector
___() %>%
# Make a volatile corpus
___()