Skip to content

文本相似度

函数名:wb_文本相似度 / str_Similarity

功能描述

计算两段文本之间的相似度,返回 0 到 1 之间的数值(越接近 1 表示越相似)。采用余弦相似度算法,基于字符级分词实现,支持中英文混合文本。

会员等级:🟢 免费版(Free)

语法

excel
=str_Similarity(文本1, 文本2, 精度)

参数

参数名类型必填默认值说明
文本1String第一个文本
文本2String第二个文本
精度Int8返回结果的小数位数,默认 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 为空/null0(补零至指定精度,如 0.00000000
预处理后文本为空0(补零至指定精度)
向量模长为 00(补零至指定精度)

基于源代码最新版本文档