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

R语言移除换行符失败求助:残留'n'与相邻单词拼接

解决R文本预处理中的换行残留与单词拼接问题

问题分析

  1. 换行符未移除:从PDF提取的文本中常包含\n或\r\n换行符,str_squish()仅压缩连续空白,若换行符与连字符等字符结合,无法彻底清理。
  2. 单词拼接(如hilln):多因PDF中存在换行连字符(单词被拆分到两行,末尾以-加换行结尾),tm::removePunctuation()直接移除标点后,会错误将拆分的单词拼接;也可能是撇号处理不当导致残留字符拼接。

修正后的代码

library(tm)
library(stringr)
library(pdftools)

# 读取PDF并预处理单文件文本
All_Files <- list.files(pattern = "pdf$")
All_opinions <- lapply(All_Files, function(file) {
  text <- pdf_text(file)
  # 处理PDF换行连字符:移除单词末尾的"-"加换行,合并拆分单词
  text <- str_replace_all(text, "-\\n", "")
  # 将所有换行符替换为空格
  text <- str_replace_all(text, "\\n|\\r\\n", " ")
  return(text)
})

# 语料库构建与后续预处理
document <- Corpus(VectorSource(All_opinions))

social_sentences <- document %>%
  tm_map(content_transformer(tolower)) %>%
  tm_map(content_transformer(str_squish)) %>%
  tm_map(content_transformer(function(x) paste(x, collapse = " "))) %>%
  as.character() %>%
  str_split(fixed(".")) %>%
  unlist() %>%
  tm::removePunctuation(preserve_intra_word_dashes = FALSE) %>%
  str_squish() %>%
  Filter(function(x) x != "", .)

关键调整说明

  • 提前处理PDF文本:在读取每个PDF后立即处理换行连字符和换行符,从源头避免字符拼接问题。str_replace_all(text, "-\\n", "")专门修复PDF中常见的单词拆分换行,比如把hill-\nside还原为hillside。
  • 优化预处理顺序:先统一转小写、压缩空白,再合并文本分割句子,逻辑更清晰,减少中间步骤的干扰。
  • 过滤空字符串:分割句子后易产生空元素,用Filter过滤掉,避免影响后续分析。

额外优化建议

若仍有特殊字符残留,可添加自定义替换规则:

# 移除所有非字母、数字和空格的字符(按需调整规则)
social_sentences <- str_replace_all(social_sentences, "[^a-zA-Z0-9 ]", "")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 13:35:01