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

如何用正则识别瑞士联邦法院裁决引用并生成关系数据框?

生成瑞士联邦法院裁决引用关系表格

需求说明

我们有一个存储瑞士联邦法院裁决的data.frame,其中:

  • from列存储裁决案号(格式如"146 IV 23")
  • text列存储裁决文本,文本中会通过案号引用其他裁决

需要生成一个包含原裁决案号(from)和被引用裁决案号(to)的关系数据框,无引用的裁决条目需排除。

示例输入数据

df <- data.frame(from = c("19 IV 291",
                          "19 IV 10",
                          "23 IV 1",
                          "10 IV 12",
                          "10 IV 13"),
                 text = c("some long text containing patterns such as 61 IV 281 or 67 IV 291",
                          "random text 61 IV 281 and moral ahserlek gwhjsk bahsek 69 IV 90",
                          "ahkse hauselire 64 IV 13 hasjer gazsekr vgwkjehj 74 IV 14",
                          "ahejbhajl uztfvbn ghsjke 67 IV 291 halser kjgkhweka 69 IV 90",
                          "there's no reference here"))

解决方案

可以借助tidyverse工具集里的stringr和tidyr包实现,步骤如下:

  1. 用正则表达式提取每条文本中所有匹配的案号
  2. 将提取出的列表型数据展开为多行
  3. 过滤掉没有引用的条目

完整代码如下:

library(tidyverse)

# 定义识别案号的正则表达式
pattern <- "[0-9]{1,3} (I|II|III|IV) [0-9]{1,3}"

# 生成引用关系表格
reference_df <- df %>%
  # 提取text中的所有匹配案号,存储为列表列
  mutate(to = str_extract_all(text, pattern)) %>%
  # 将列表列展开为多行,每个引用对应一行
  unnest(to) %>%
  # 移除没有引用的条目
  filter(!is.na(to)) %>%
  # 保留需要的列
  select(from, to)

# 查看结果
print(reference_df)

示例输出

from         to
1 19 IV 291 61 IV 281
2 19 IV 291 67 IV 291
3  19 IV 10 61 IV 281
4  19 IV 10  69 IV 90
5   23 IV 1  64 IV 13
6   23 IV 1  74 IV 14
7  10 IV 12 67 IV 291
8  10 IV 12  69 IV 90

内容的提问来源于stack exchange,提问作者D. Studer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 22:32:38