Yuka.js 中的 terms 是一个模糊匹配词汇的工具类。它提供了常用的方法来进行字符串的模糊匹配,例如 jaccard 系数、overlap 系数等。
jaccard(a, b) 方法用于计算两个字符串之间的 Jaccard 系数,其计算公式为:
J(A, B) = |A ∩ B| / |A ∪ B|
其中,A 和 B 分别表示两个字符串,|A ∩ B| 表示两个字符串中共同出现的字符的个数,|A ∪ B| 表示两个字符串中出现的所有字符的个数。
该方法返回值为一个数字,0 <= value <= 1,数值越大表示字符串相似度越高。
参数说明:
a:字符串 A。b:字符串 B。overlap(a, b, n) 方法用于计算两个字符串的重叠系数,其计算公式为:
O(A,B,n) = levenshtein(A,B)/min(n,|A|,|B|)
其中,A 和 B 分别表示两个字符串,n 表示 A 和 B 中需要比较的最大字符数目,levenshtein(A,B) 表示字符串 A 和 B 之间的 Levenshtein 距离(编辑距离),min(n,|A|,|B|) 表示 n 与 A、B 字符串长度中的最小值。
该方法返回值为一个数字,0 <= value <= 1,数值越大表示字符串相似度越高。
参数说明:
a:字符串 A。b:字符串 B。n:最大字符数目。contains(str, substr) 方法用于判断一个字符串是否包含指定的子字符串。
该方法返回值为一个布尔值,true 表示包含,false 表示不包含。
参数说明:
str:需要检查的字符串。substr:需要查找的子字符串。equals(a, b) 方法用于判断两个字符串是否相等。
该方法返回值为一个布尔值,true 表示相等,false 表示不相等。
参数说明:
a:字符串 A。b:字符串 B。import { terms } from 'yuka';
const stringA = 'hello world';
const stringB = 'world hello';
const stringC = 'welcome to yuka.js';
// 计算 Jaccard 系数
const jaccardValue = terms.jaccard(stringA, stringB);
console.log(jaccardValue); // 0.5
// 计算重叠系数
const overlapValue = terms.overlap(stringA, stringB, 100);
console.log(overlapValue); // 0.7
// 包含
const containsResult = terms.contains(stringC, 'to');
console.log(containsResult); // true
// 相等
const equalsResult = terms.equals(stringA, stringB);
console.log(equalsResult); // false