rules <- list(
"人の死" = c("死後", "死病", "死期", "死因", "死骸", "生死", "自殺", "殉死", "頓死", "変死", "亡", "死ぬ", "亡くなる", "殺す", "亡くす", "死"),
"恋愛" = c("愛", "恋", "愛す", "愛情", "恋人", "愛人", "恋愛", "失恋", "恋しい"),
"友情" = c("友達", "友人", "旧友", "親友", "朋友", "友", "級友"),
"信用・不信" = c("信用", "信じる", "信ずる", "不信", "疑い", "疑惑", "疑念", "猜疑", "狐疑", "疑問", "疑い深い", "疑う", "疑る", "警戒"),
"病気" = c("医者", "病人", "病室", "病院", "病症", "病状", "持病", "死病", "主治医", "精神病", "仮病", "病気", "看病", "大病", "病む", "病")
)
rules_chr <- purrr::flatten_chr(rules)
codes <-
dplyr::tbl(con, "tokens") |>
dplyr::filter(original %in% rules_chr) |>
dplyr::collect() |>
dplyr::mutate(
codings = purrr::map(
original,
~ purrr::imap(rules, \(.x, .y) tibble::tibble(code = .y, flag = . %in% .x)) |>
purrr::list_rbind() |>
dplyr::filter(flag == TRUE) |>
dplyr::select(!flag)
)
) |>
tidyr::unnest(codings)
codes
#> # A tibble: 537 × 8
#> doc_id section label token_id token pos original code
#> <int> <chr> <chr> <int> <chr> <chr> <chr> <chr>
#> 1 2 [1]上_先生と私 上・一 36 友達 名詞 友達 友情
#> 2 2 [1]上_先生と私 上・一 96 友達 名詞 友達 友情
#> 3 2 [1]上_先生と私 上・一 115 病気 サ変名詞 病気 病気
#> 4 2 [1]上_先生と私 上・一 124 友達 名詞 友達 友情
#> 5 2 [1]上_先生と私 上・一 128 信じ 動詞 信じる 信用・不信
#> 6 2 [1]上_先生と私 上・一 132 友達 名詞 友達 友情
#> 7 2 [1]上_先生と私 上・一 240 病気 サ変名詞 病気 病気
#> 8 3 [1]上_先生と私 上・一 44 友達 名詞 友達 友情
#> 9 19 [1]上_先生と私 上・三 207 疑っ 動詞 疑う 信用・不信
#> 10 21 [1]上_先生と私 上・四 161 亡くなっ 動詞 亡くなる 人の死
#> # ℹ 527 more rows