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

如何在OpenRefine中用布尔运算统计含单字母变体的特定词频

用OpenRefine实现古瑞典语变体词频率统计

完全可以用OpenRefine实现你要的需求,以下是具体操作步骤:

1. 统一文本大小写

先处理大小写混合的问题:

  • 选中「Text of document」列,点击「编辑列」→「添加基于此列的列」,命名为「标准化文本」
  • 在表达式框输入:value.toLowerCase(),生成全小写的文本列,消除大小写差异

2. 识别单个字母差异的变体词

要匹配与目标词(比如word)仅单个字母不同的变体,最通用的方式是通过编辑距离判断(允许单个字母的替换、插入或删除)。添加一个新列提取所有符合条件的词:

  • 点击「编辑列」→「添加基于此列的列」,命名为「匹配的变体词」
  • 输入以下自定义表达式(把target变量值换成你的目标词):
var target = "word";
// 按非字母字符分割成单词数组,适配古瑞典语字符
var words = value.split(/[^\p{L}]+/);
// 过滤出与目标词编辑距离为1的单词
words.filter(function(w) {
  var d = 0;
  var lenDiff = Math.abs(w.length - target.length);
  // 长度差超过1直接排除
  if (lenDiff > 1) return false;
  var i = 0, j = 0;
  while (i < w.length && j < target.length) {
    if (w.charAt(i) !== target.charAt(j)) {
      d++;
      if (d > 1) return false;
      // 长度不同时,跳过较长单词的一个字符
      if (lenDiff === 1) {
        w.length > target.length ? i++ : j++;
      } else {
        i++;
        j++;
      }
    } else {
      i++;
      j++;
    }
  }
  // 加上剩余未匹配的字符数
  d += (w.length - i) + (target.length - j);
  return d === 1;
}).join("; ")

3. 统计变体词频率

统计各变体的出现行数

  • 选中「匹配的变体词」列,点击「分面」→「列表分面」,面板中会显示每个变体词对应的出现行数(即包含该词的文档数量)

统计变体词的总出现次数(含同一行多次出现的情况)

  • 再添加一个新列「变体词数量」,表达式输入:value.split("; ").length
  • 点击「行」→「统计」→「求和」,即可得到所有符合条件的变体词的总出现次数

如果已知特定的变体模式(比如固定位置的字母重复或替换),也可以直接用正则表达式匹配,比如匹配woord/worrd这类变体的正则:/\bwo?r?d\b/(需结合大小写标准化),但编辑距离的方法更灵活,能覆盖所有单个字母差异的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 17:43:10