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

如何在quanteda的kwic函数正则模式中定义可选元素匹配含/不含中间名的人名

核心原因

quanteda的kwic基于分词后的独立token进行匹配,phrase()中每个空格分隔的片段对应单个token的匹配规则,和stringr匹配整串连续字符的逻辑完全不同:

  • 你写的Jane .* Mayer要求匹配3个连续token,因此只能命中带中间名的情况
  • 你写的Jane.* Mayer要求匹配2个连续token,因此只能命中不带中间名的情况

解决方案

方案1:同时传入两种匹配规则

直接把带/不带中间名的规则都传入即可,写法简单易读:

my_pattern <- c(phrase("Jane Mayer"), phrase("Jane .* Mayer"))
kwic(txt_token, pattern = my_pattern, valuetype = "regex")

运行后会返回3条匹配结果,同时覆盖Jane Mayer、Jane Alexandra Mayer、Jane Eli Mayer三个目标实例,排除Jane Burger的误匹配。

方案2:用token量词控制中间名数量

如果需要兼容0个到多个中间名的场景,可以用{m,n}量词指定中间token的数量范围,比如中间最多允许2个中间名的写法如下:

# {0,2}表示中间的任意token可以出现0次、1次或2次
kwic(txt_token, pattern = phrase("Jane (.*){0,2} Mayer"), valuetype = "regex")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 22:06:02