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

R文本挖掘:如何绘制关键词10词范围内词关联的图4.4?

实现关键词10词范围内的共现词可视化(类似图4.4)

核心思路

图4.4基于紧邻二元组(bigrams)做可视化,要扩展到10词范围内的共现,需先提取目标关键词前后10个词范围内的所有词,统计它们与关键词的共现频次后,再复刻类似的可视化样式。

步骤分解

  • 步骤1:拆分文本并标记词位置
    先把文本拆分为单个词,同时记录每个词的位置索引,方便后续定位关键词的上下文:

    library(tidytext)
    library(dplyr)
    library(tidyr)
    library(ggplot2)
    
    # 假设你的数据框为text_df,包含text列存储待分析文本
    tokenized_data <- text_df %>%
      mutate(line_id = row_number()) %>%
      unnest_tokens(word, text) %>%
      mutate(word_pos = row_number()) # 全局词位置,若需按句子/段落统计,可改为按行内计数
    
  • 步骤2:定位关键词并提取上下文词
    找到所有“sir”出现的位置,筛选出这些位置±10范围内的词,排除“sir”本身后,标记每个词所属的关键词上下文组:

    # 获取所有"sir"的位置
    sir_locations <- tokenized_data %>%
      filter(word == "sir") %>%
      pull(word_pos)
    
    # 提取每个"sir"周围10词内的词
    sir_context <- tokenized_data %>%
      filter(word_pos %in% unlist(lapply(sir_locations, function(x) (x-10):(x+10)))) %>%
      filter(word != "sir") %>%
      mutate(context_group = findInterval(word_pos, sir_locations)) # 标记属于哪个"sir"的上下文
    
  • 步骤3:统计共现频次
    按上下文组去重(避免同一语境下重复计数),统计每个词与“sir”的共现次数:

    cooccur_counts <- sir_context %>%
      distinct(context_group, word) %>%
      count(word, sort = TRUE)
    
  • 步骤4:绘制可视化图
    参考图4.4的水平条形图风格,展示高频共现词:

    cooccur_counts %>%
      top_n(20) %>% # 取前20个高频词,可按需调整
      mutate(word = reorder(word, n)) %>%
      ggplot(aes(x = n, y = word)) +
      geom_col(fill = "#2c3e50") +
      labs(x = "与'sir'在10词范围内的共现次数", y = NULL) +
      theme_minimal()
    

注意事项

  • 若文本按段落/句子划分,建议按行内位置计算词的索引,避免跨段落的无效共现。
  • 如需区分词出现在“sir”之前还是之后,可在筛选时添加位置判断逻辑,拆分统计后分别可视化。
  • 可通过调整(x-10):(x+10)中的数值,灵活修改共现范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 21:10:30