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

如何在quanteda的corpus_reshape中排除特定词后的句号作为分句标记?

解决quanteda中corpus_reshape误拆分带点缩写的问题

要让corpus_reshape()识别Dr.这类医药领域的带点缩写,不把它们当作分句标记,不需要换其他分句函数,只需自定义分句规则即可:

  • 借助tokenizers包的sentence_tokenize()函数,自定义缩写词列表,告诉程序哪些带点的词是缩写而非分句结尾
  • 将自定义的分句函数传给corpus_reshape()的tokenizer参数

具体代码示例:

library(quanteda)
library(tokenizers)

# 定义医药领域常用的带点缩写,按需补充
custom_abbrevs <- c("Dr.", "U.S.", "MD.", "PhD.", "Prof.", "Mr.", "Ms.")

# 自定义分句函数,指定缩写列表
custom_sent_tokenizer <- function(x) {
  tokenizers::sentence_tokenize(x, abbreviations = custom_abbrevs)
}

# 测试文本
txt <- c(
  d1 = "With us we have Dr. Smith. We are not sure... where we stand.",
  d2 = "The U.S. is south of Canada."
)

# 使用自定义分句器进行分句
corpus(txt) %>%
  corpus_reshape(to = "sentences", tokenizer = custom_sent_tokenizer)

运行后,Dr. Smith和U.S.不会被误拆分成单独句子,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 00:55:19