文本相似度
函数名:wb_文本相似度 / str_Similarity
功能描述
计算两段文本之间的相似度,返回 0 到 1 之间的数值(越接近 1 表示越相似)。采用余弦相似度算法,基于字符级分词实现,支持中英文混合文本。
会员等级:🟢 免费版(Free)
语法
excel
=str_Similarity(文本1, 文本2, 精度)参数
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| 文本1 | String | 是 | 无 | 第一个文本 |
| 文本2 | String | 是 | 无 | 第二个文本 |
| 精度 | Int | 否 | 8 | 返回结果的小数位数,默认 8 位小数 |
返回值
String - 相似度数值字符串,范围 0 到 1,保留指定精度的小数位。
使用示例
完全相同文本
公式:
excel
=str_Similarity("你好世界", "你好世界")结果:
1.00000000部分相似文本
公式:
excel
=str_Similarity("你好世界", "你好地球")结果:
0.50000000指定精度
公式:
excel
=str_Similarity("Hello", "Hallo", 2)结果:
0.80技术说明
- 算法:采用余弦相似度(Cosine Similarity)算法,计算公式为
dot(A,B) / (|A| * |B|),其中 A、B 为文本的字符频率向量 - 预处理:计算前使用正则表达式
\p{P}\s+移除标点符号和空白字符,保留数字和中文字符 - 分词方式:采用字符级分词(Char-Level Tokenize),将每个字符(含中文字符)作为一个独立词项
- 向量构建:合并两段文本的字符集合构建词频字典,分别统计两段文本中每个字符的出现次数形成频率向量
- 结果格式化:使用
ToString($"F{precision}")格式化为指定小数位数的字符串 - 任一文本为空时返回
0.0
错误处理
| 错误场景 | 返回值 |
|---|---|
| 文本1 或文本2 为空/null | 0(补零至指定精度,如 0.00000000) |
| 预处理后文本为空 | 0(补零至指定精度) |
| 向量模长为 0 | 0(补零至指定精度) |