|
发表于 2020-12-11 21:04:52
|
显示全部楼层
江西省南昌市
- .版本 2
- .子程序 编辑距离相似度2, 双精度小数型, , 由于中文字符占2个位,特此改进算法
- .参数 待对比文本, 文本型
- .参数 对比文本, 文本型
- .局部变量 point, 整数型, , "1,1"
- .局部变量 long, 整数型
- .局部变量 long2, 整数型
- .局部变量 x, 整数型
- .局部变量 y, 整数型
- .局部变量 z, 整数型
- .局部变量 i, 整数型
- .局部变量 j, 整数型
- .局部变量 a, 正则表达式类
- .局部变量 aa, 正则表达式类
- a.创建 (“\S”, 待对比文本, , , , )
- aa.创建 (“\S”, 对比文本, , , , )
- long = a.取匹配数量 ()
- long2 = aa.取匹配数量 ()
- 重定义数组 (point, 假, long + 1, long2 + 1)
- .计次循环首 (long + 1, x)
- point [x] [1] = x - 1
- .计次循环尾 ()
- .计次循环首 (long2 + 1, y)
- point [1] [y] = y - 1
- .计次循环尾 ()
- .计次循环首 (long, i)
- .计次循环首 (long2, j)
- x = point [i] [j + 1] + 1
- y = point [i + 1] [j] + 1
- .如果 (a.取匹配文本 (i, ) = aa.取匹配文本 (j, ))
- z = 0 + point [i] [j]
- .否则
- z = 1 + point [i] [j]
- .如果结束
- .如果真 (x ≤ y 且 x ≤ z)
- point [i + 1] [j + 1] = x
- .如果真结束
- .如果真 (y ≤ x 且 y ≤ z)
- point [i + 1] [j + 1] = y
- .如果真结束
- .如果真 (z ≤ x 且 z ≤ y)
- point [i + 1] [j + 1] = z
- .如果真结束
- .计次循环尾 ()
- .计次循环尾 ()
- 返回 (选择 (long > long2, 1 - point [long + 1] [long2 + 1] ÷ long, 1 - point [long + 1] [long2 + 1] ÷ long2))
复制代码
由于中文字符占2个位,特此改进算法
调用正则表达式(精易模块)
返回一个相似度 |
|