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

在R语言中如何按指定列分组比较行文本并生成相似度评分?

你可以用stringdist包的文本相似度计算函数配合dplyr的分组操作实现需求,具体实现步骤如下:

1. 安装并加载依赖包

# 首次使用先安装
install.packages(c("dplyr", "stringdist"))
# 加载包
library(dplyr)
library(stringdist)

2. 完整实现代码

# 示例数据(补全了原代码的语法缺失)
df <- data.frame(
  "TITLE" = c("GOOGLE", "GOOGLE INC.", "GOOGLE LLC"), 
  "ADDRESS" = c("123 ABC DR", "123 ABC DR", "123 ABC DR")
)

# 按ADDRESS分组计算相似度得分
df_result <- df %>%
  group_by(ADDRESS) %>%
  mutate(
    # 计算当前行TITLE与组内其他所有TITLE的平均相似度,得分范围0-1
    SIMILARITY_SCORE = mean(
      stringsim(
        a = TITLE, 
        b = cur_data()$TITLE[cur_data()$TITLE != TITLE], # 排除自身和自身的对比
        method = "jw" # 可根据需求更换匹配算法
      )
    )
  ) %>%
  ungroup()

3. 规则调整说明

stringsim函数默认返回0-1的相似度值,1代表完全匹配,0代表完全不匹配,符合你的要求。如果需要调整匹配逻辑,可以修改method参数:

  • method = "jw":贾罗-温克勒距离,适合公司名、人名等短文本匹配,对前缀重合的文本得分更高
  • method = "cosine":余弦相似度,适合按n元字符拆分计算的场景
  • method = "jaccard":杰卡德相似度,基于字符集合的重合度计算

你给出的示例数据运行后,三个条目对应的SIMILARITY_SCORE都会接近1,符合三个TITLE属于同一家公司的特征。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 02:06:08