计算字符串相似度(编辑距离)

By matresnan at 2020-12-27 • 1人收藏 • 1671人看过
// 根据字符串编辑距离来实现功能
// 相关资料:
// https://www.cnblogs.com/lishanyang/p/6016737.html
// https://blog.csdn.net/xcxy2015/article/details/77164126

import console;

function str_similarity(astr, bstr) begin
	var alen = string.len(astr)
	var blen = string.len(bstr)
	console.log('A字符串长度' + alen)
	console.log('B字符串长度' + blen)
	// 初始化二维数组
	var dif = {}
	for(i = 0;alen;1){
		var ydif = {}
		for(j = 0;blen;1){
			if(j == 0){
				table.insert(ydif, i, j)	
			}elseif(i == 0){
				table.insert(ydif, j, j)
			}else{
				table.insert(ydif, -1, j)
			}
		}
	table.insert(dif, ydif, i)	
	}
	// 判断距离
	var temp, a, b, c
	for(i = 1;alen;1){
		for(j = 1;blen;1){
			if(string.charAt(astr,i) == string.charAt(bstr, j) ){
				a = dif[i-1][j-1]
				b = dif[i-1][j] + 1
				c = dif[i][j-1] + 1
			}else {
				a = dif[i-1][j-1] + 1
				b = dif[i-1][j] + 1
				c = dif[i][j-1] + 1
			}
			if(a > b){
				if(b > c){
					temp = c
				}else {
					temp = b
				}
			}elseif(a > c){
				temp = c
			}else {
				temp = a
			}
			dif[i][j] = temp
		}
	}
	console.dumpTable(dif)
	// 计算字符串相似度
	var similarity
	if(alen >= blen){
		similarity = 1 - (dif[alen][blen] / alen)
	}else {
		similarity = 1 - (dif[alen][blen] / blen)
	}
	return similarity;
end;

var g = str_similarity("你好", "你好,aardio")

console.log('两个字符串相似度为:' + g)

console.pause()


登录后方可回帖

登 录
信息栏
 私人小站

本站域名

ChengXu.XYZ

投诉联系:  popdes@126.com



快速上位机开发学习,本站主要记录了学习过程中遇到的问题和解决办法及上位机代码分享

这里主要专注于学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.
如果侵权,联系 Popdes@126.com

友情链接
Aardio官方
Aardio资源网


才仁机械


网站地图SiteMap

Loading...