【发布时间】:2019-09-23 19:25:26
【问题描述】:
我正在用英语和法语查看 Oliver Twist。我发现这个网站 (https://cran.r-project.org/web/packages/tidytext/vignettes/tidytext.html) 提供了代码来应用每行文本的章节号。当我将它应用于英文文本时,它工作得很好:
library(gutenbergr)
library(dplyr)
library(tidytext)
library(stringr)
twistEN <- gutenberg_download(730)
twistEN <- twistEN[118:nrow(twistEN),]
chaptersEN <- twistEN %>%
mutate(line = row_number(), chapter = cumsum(str_detect(text, regex("^chapter [\\divxlc]", ignore_case = TRUE)))) %>%
ungroup()
当我查看 chaptersEN 时,我可以看到它在每一行上适当地应用了章节编号。我遇到麻烦的地方是法语文本。这是我的代码:
twistFR <- gutenberg_download(16023)
twistFR <- twistFR[123:nrow(twistFR),]
twistFR$text <- iconv(twistFR$text, "latin1", "UTF-8")
chaptersFR <- twistFR %>%
mutate(line = row_number(), chapter = cumsum(str_detect(text, regex("^chaptitre [\\divxlc]", ignore_case = TRUE)))) %>%
ungroup()
这里的问题是这些章节没有命名为第 1 章和第 2 章,它们被命名为 Chapitre Premier、Chapitre Deuxieme。我相信正则表达式是通过查看单词 chapter 后面的数字来找到章节编号(如果我错了,请纠正我),所以当那个数字被写成一个单词时,它不知道该怎么做。关于如何应用章节编号的任何想法?
【问题讨论】:
-
是的,这很难。除了枚举数字单词并将其映射到实际数字之外,您有点不走运。但是,您可以仅根据递增索引假设章节编号,基本上完全避开 该 条信息的正则表达式。
标签: r regex tidytext project-gutenberg