You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于R语言tidytext挖掘构建评论文本Bigram网络图技术问询

解决CSV评论文本的Bigram网络图构建问题

我已经按照你参考的tidytext教程,成功搞定了CSV评论文本的Bigram网络图构建,下面是完整的可运行方案:

完整实现代码

# 加载所需的R包
library(dplyr)
library(tidyr)
library(tidytext)
library(ggplot2)
library(igraph)
library(ggraph)
library(stringr)

# 读取CSV数据集(会弹出文件选择窗口,直接选中你的评论文件即可)
kjv <- read.csv(file.choose())

# 定义用于统计Bigram的函数
count_bigrams <- function(dataset, text_col) {
  dataset %>%
    # 将文本拆分为双词组合(Bigram)
    unnest_tokens(bigram, {{text_col}}, token = "ngrams", n = 2) %>%
    # 拆分Bigram为两个独立词汇
    separate(bigram, c("word1", "word2"), sep = " ") %>%
    # 过滤掉停用词(比如无意义的虚词)
    filter(!word1 %in% stop_words$word,
           !word2 %in% stop_words$word) %>%
    # 统计每个Bigram的出现次数并按频次排序
    count(word1, word2, sort = TRUE)
}

# 统计评论文本中的Bigram(这里假设你的评论文本列名为`comment`,记得根据实际列名修改)
bigram_counts <- count_bigrams(kjv, comment)

# 构建网络图对象,过滤掉出现次数过少的Bigram(示例保留≥5次的,可按需调整阈值)
bigram_graph <- bigram_counts %>%
  filter(n >= 5) %>%
  graph_from_data_frame()

# 绘制Bigram网络图
set.seed(2024) # 设置随机种子,保证每次生成的图布局一致
ggraph(bigram_graph, layout = "fr") +
  geom_edge_link(aes(edge_alpha = n, edge_width = n), edge_colour = "darkred") +
  geom_node_point(size = 5, colour = "steelblue") +
  geom_node_text(aes(label = name), repel = TRUE, size = 4, colour = "black") +
  theme_void()

关键步骤说明

  • 包加载:确保所有依赖包都已安装(如果没装,用install.packages(c("dplyr", "tidytext", "igraph", "ggraph"))安装)
  • 数据读取:用file.choose()交互式选文件更灵活,也可以直接写死文件路径(比如read.csv("你的评论文件路径.csv"))
  • Bigram处理:自定义函数自动完成分词、停用词过滤和频次统计,省去重复代码
  • 网络图构建:通过频次过滤可以避免图太杂乱,阈值根据你的数据集大小调整就行
  • 可视化优化:用透明度和宽度区分Bigram的频次,节点文本自动防重叠,让图更易读

内容的提问来源于stack exchange,提问作者user709413

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:23:07