包详细信息

string-metric

hellojayjay686MIT0.3.3

Get string similarity in JavaScript or TypeScript

string similarity, similarity, string, strings

自述文件

String Metric

Build Status Coverage Status npm npm

A library implementing different string similarity and distance measures, and Implement by TypeScript. Also, you can use in JavaScript.

Algorithm reference java-string-similarity

Install

npm install string-metric

Progress

Algorithm Complete?
Jaro-Winkler Yes
Levenshtein Yes
Normalized-Levenshtein Yes
Weighted-Levenshtein Yes
Damerau Yes
Optimal-String-Alignment Yes
Longest-Common-Subsequence Yes
Metric-Longest-Common-Subsequence Yes
N-Gram Yes
Q-Gram No
Shingle (n-gram) based algorithms No
Cosine similarity No
Jaccard index No
Sorensen-Dice coefficient No
Ratcliff-Obershelp No

Jaro-Winkler

For more specs, please go to tests/JaroWinkler.spec.ts in the repository.

const instance = new JaroWinkler();

const s1 = 'My string';
const s2 = 'My string';
instance.similarity(s1, s2); // 1

const s1 = 'My string';
const s2 = 'My tsring';
instance.similarity(s1, s2); // 0.974074

const s1 = 'My string';
const s2 = 'My ntrisg';
instance.similarity(s1, s2); // 0.896296

Levenshtein

For more specs, please go to tests/Levenshtein.spec.ts in the repository.

const instance = new Levenshtein();

const s1 = 'My string';
const s2 = 'My string';
instance.distance(s1, s2); // 0

const s1 = 'My string';
const s2 = 'My tring';
instance.distance(s1, s2); // 1

const s1 = 'My string';
const s2 = 'M string2';
instance.distance(s1, s2); // 2

Normalized-Levenshtein

For more specs, please go to tests/NormalizedLevenshtein.spec.ts in the repository.

const instance = new NormalizedLevenshtein();

Weighted-Levenshtein

For more specs, please go to tests/WeightedLevenshtein.spec.ts in the repository.

const instance = new WeightedLevenshtein();

Damerau

For more specs, please go to tests/Damerau.spec.ts in the repository.

const instance = new Damerau();

const s1 = 'ABCDEF';
const s2 = 'ABDCEF';
instance.distance(s1, s2); // 1

const s1 = 'ABCDEF';
const s2 = 'BACDFE';
instance.distance(s1, s2); // 2

const s1 = 'ABCDEF';
const s2 = 'ABCDE';
instance.distance(s1, s2); // 1

Optimal-String-Alignment

For more specs, please go to tests/OptimalStringAlignment.spec.ts in the repository.

const instance = new OptimalStringAlignment();

const s1 = 'ABDCEF';
const s2 = 'ADCEF';
instance.distance(s1, s2); // 1

const s1 = 'BAC';
const s2 = 'CAB';
instance.distance(s1, s2); // 2

const s1 = 'CA';
const s2 = 'ABC';
instance.distance(s1, s2); // 3

Longest-Common-Subsequence

For more specs, please go to tests/LongestCommonSubsequence.spec.ts in the repository.

const instance = new LongestCommonSubsequence();

const s1 = 'AGCAT';
const s2 = 'GAC';
instance.distance(s1, s2); // 4

const s1 = 'AGCAT';
const s2 = 'AGCT';
instance.distance(s1, s2); // 1

Metric-Longest-Common-Subsequence

For more specs, please go to tests/MetricLCS.spec.ts in the repository.

const instance = new MetricLCS();

N-Gram

For more specs, please go to tests/NGram.spec.ts in the repository.

const instance = new NGram();

const s1 = 'SIJK';
const s2 = 'SIJK';
instance.distance(s1, s2); // 0

const s0 = 'ABABABAB';
const s1 = 'ABCABCABCABC';
const s2 = 'POIULKJH';
instance.distance(s0, s1) < instance.distance(s0, s2); // true

更新日志

2022-04-28 (0.3.3)

Bugfix

  • fix export of index.ts

2021-01-19 (0.3.1)

Bugfix

  • fix N-Gram exception throw

2021-01-18 (0.3.0)

Feature

  • add Optimal-String-Alignment algorithm
  • add Longest-Common-Subsequence algorithm
  • add Metric-Longest-Common-Subsequence algorithm
  • add N-Gram algorithm

2021-01-04 (0.2.2)

Feature

  • add damerau-levenstein distance algorithm

2021-01-04 (0.2.1)

Feature

  • add normalized-levenstein distance algorithm
  • add weighted-levenstein distance algorithm

2021-01-04 (0.2.0)

Feature

  • add levenstein distance algorithm

2021-01-04 (0.1.0)

Feature

  • add github repo url

2021-01-04 (0.0.1)

Feature

  • publish jaro-winkler similarity