这是我使用的字符串代码,但我不能理解为什么我在以下内容中得到了90分。我只明白,由于截断(字母R),我得到了10分,但我不能理解驱动与前面是如何得到80。不确定它正在做什么操作,以及我如何将这个特定的(驱动器,正面)设置为80?
DATA Compged_score;
CALL COMPCOST('SWAP=', 5, 'P=', 0, 'INS=', 10,'DEL=',10,'APPEND=',5);
COMPGED_SCORE=COMPGED("DRIVER IS GOOD", "FRONT IS GOOD", 'iln');
RUN;
发布于 2019-09-26 02:34:41
COMPGED
文档说明:
广义编辑距离的
定义
广义编辑距离是Levenshtein编辑距离的推广,Levenshtein编辑距离是两个字符串之间相异度的度量。Levenshtein编辑距离是将string-1转换为string-2所需的删除、插入或替换单个字符的次数。
计算广义编辑距离的
COMPGED函数返回string-1和string-2之间的广义编辑距离。广义编辑距离是从string-2构造string-1的操作的最小成本序列。
D R I V E R I S G O O D
F R O N T I S G O O D
这是一个成本为90的操作序列。也许这是COMPGED
从其他最低成本(90)分数中选择的序列。
10 INSERT R after T FRONTR IS GOOD
10 DELETE F RONTR IS GOOD
10 INSERT D DRONTR IS GOOD
10 DELETE O DRNTR IS GOOD
10 INSERT I DRINTR IS GOOD
10 DELETE N DRITR IS GOOD
10 INSERT V DRIVTR IS GOOD
10 DELETE T DRIVR IS GOOD
10 INSERT E DRIVER IS GOOD
---
90 cost of operations
前面的驱动将与没有初始插入的情况相同,因此8个10分操作的得分为80。我不知道是否有任何选项可以强制函数记录分数背后的操作。
https://stackoverflow.com/questions/58108609
复制