天软金融分析.NET函数大全 > TSL函数 > 基础函数 > 字符串 > 常用字符串函数

FuzzyCompareEx    

简述
根据指定算法,计算两字符串的相似性
对于包含中文串的相似性计算,建议使用unicode字符串,可以用widestring(s)从标准字符串类型进行转换,常量则可以用L"unicode字符串"。
定义
FuzzyCompareEx(type:Integer,s1,s2:String,n,var nret:Integer):Real
参数
名称类型说明
typeinteger模糊匹配算法类型,支持如下几种算法:
算法类型 对应值 对应说明
FzEditDistance() 0 Edit Distance(编辑距离)算法
FzHammingDistance() 1 Hamming Distance(汉明距离)算法
FzLongestSubstring() 2 Longest Substring(最长公共子串)算法
FzLongestSequnce() 3 Longest Sequnce(最长公共子序列)算法
FzJaccard() 4 Jaccard相似度算法
FzCosine() 5 Cosine(余弦相似度)算法
FzJaroWinkler() 6 Jaro-Winkler距离算法
FzSimHash() 7 SimHash(局部敏感哈希)算法
更多支持算法,参考:模糊匹配算法类型函数
s1String字符串1
s2String字符串2
ninteger仅指定算法为FzJaccardFzCosineFzSimHash时,该参数有效;其对应含义和默认值如下:
算法类型 含义 默认值
FzJaccard() 将字符串切分成字符集合时,集合中每个元素包含的连续字符数量 2
FzCosine() 将字符串切分成字符集合时,集合中每个元素包含的连续字符数量 2
FzSimHash() 选取的特征词数量(Top-N关键词),选取权重最高的n个关键词来生成哈希指纹 3
nretinteger输出值;指定不同的算法时,其对应含义如下:
算法类型 含义
FzEditDistance() 将字符串s1转换为字符串s2所需的最小编辑次数(插入、删除、替换)
FzHammingDistance() 两字符串对应位置上不同字符的数量
FzLongestSubstring() 两字符串中连续出现的最长相同子串长度
FzLongestSequnce() 两字符串中按顺序出现但不必连续的最长相同子序列长度
FzJaccard() 两字符串分词后所得集合的交集元素个数
FzSimHash() 两字符串分词后加权生成的哈希指纹对应位置上不同字符的数量
注:指定算法为FzCosineFzJaroWinkler时,该值无意义
返回值real两字符串间的相似性,范围:[0,1]
  • 范例

    //使用Jaccard相似度算法,指定切分字符长度为1,计算字符串"kitten"和"sitting"的相似性
    t:=FuzzyCompareEx(FzJaccard(),"kitten","sitting",1,nret);
    return array(t,nret);
    //t值为相似性,nret值为两字符串切分后交集中元素个数,返回值为array(0.428571428571429,3)
    参考
    FuzzyCompare
    模糊匹配算法类型函数
相关