开始使用免费开始使用

分而治之:用极性构建对比词云

既然您已经看到如何用极性来划分语料库,那就动手试试吧!下面的代码将带您根据情感将语料库分组,这样您就能分别查看各子集中的信息,而不是只看整体。

您的 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 
  ___()
编辑并运行代码