Naughty Program Manipulator

    string-similarity
    DefinitelyTyped icon, indicating that this package has TypeScript declarations provided by the separate @types/string-similarity package

    4.0.4 • Public • Published

    string-similarity

    Finds degree of similarity between two strings, based on Dice's Coefficient, which is mostly better than Levenshtein distance.

    Table of Contents

    Usage

    For Node.js

    Install using:

    npm install string-similarity --save

    In your code:

    var stringSimilarity = require("string-similarity");
    
    var similarity = stringSimilarity.compareTwoStrings("healed", "sealed");
    
    var matches = stringSimilarity.findBestMatch("healed", [
      "edward",
      "sealed",
      "theatre",
    ]);

    For browser apps

    Include <script src="//unpkg.com/string-similarity/umd/string-similarity.min.js"></script> to get the latest version.

    Or <script src="//unpkg.com/string-similarity@4.0.1/umd/string-similarity.min.js"></script> to get a specific version (4.0.1) in this case.

    This exposes a global variable called stringSimilarity which you can start using.

    <script>
      stringSimilarity.compareTwoStrings('what!', 'who?');
    </script>
    

    (The package is exposed as UMD, so you can consume it as such)

    API

    The package contains two methods:

    compareTwoStrings(string1, string2)

    Returns a fraction between 0 and 1, which indicates the degree of similarity between the two strings. 0 indicates completely different strings, 1 indicates identical strings. The comparison is case-sensitive.

    Arguments
    1. string1 (string): The first string
    2. string2 (string): The second string

    Order does not make a difference.

    Returns

    (number): A fraction from 0 to 1, both inclusive. Higher number indicates more similarity.

    Examples
    stringSimilarity.compareTwoStrings("healed", "sealed");
    // → 0.8
    
    stringSimilarity.compareTwoStrings(
      "Olive-green table for sale, in extremely good condition.",
      "For sale: table in very good  condition, olive green in colour."
    );
    // → 0.6060606060606061
    
    stringSimilarity.compareTwoStrings(
      "Olive-green table for sale, in extremely good condition.",
      "For sale: green Subaru Impreza, 210,000 miles"
    );
    // → 0.2558139534883721
    
    stringSimilarity.compareTwoStrings(
      "Olive-green table for sale, in extremely good condition.",
      "Wanted: mountain bike with at least 21 gears."
    );
    // → 0.1411764705882353

    findBestMatch(mainString, targetStrings)

    Compares mainString against each string in targetStrings.

    Arguments
    1. mainString (string): The string to match each target string against.
    2. targetStrings (Array): Each string in this array will be matched against the main string.
    Returns

    (Object): An object with a ratings property, which gives a similarity rating for each target string, a bestMatch property, which specifies which target string was most similar to the main string, and a bestMatchIndex property, which specifies the index of the bestMatch in the targetStrings array.

    Examples
    stringSimilarity.findBestMatch('Olive-green table for sale, in extremely good condition.', [
      'For sale: green Subaru Impreza, 210,000 miles',
      'For sale: table in very good condition, olive green in colour.',
      'Wanted: mountain bike with at least 21 gears.'
    ]);
    // →
    { ratings:
       [ { target: 'For sale: green Subaru Impreza, 210,000 miles',
           rating: 0.2558139534883721 },
         { target: 'For sale: table in very good condition, olive green in colour.',
           rating: 0.6060606060606061 },
         { target: 'Wanted: mountain bike with at least 21 gears.',
           rating: 0.1411764705882353 } ],
      bestMatch:
       { target: 'For sale: table in very good condition, olive green in colour.',
         rating: 0.6060606060606061 },
      bestMatchIndex: 1
    }

    Release Notes

    2.0.0

    • Removed production dependencies
    • Updated to ES6 (this breaks backward-compatibility for pre-ES6 apps)

    3.0.0

    • Performance improvement for compareTwoStrings(..): now O(n) instead of O(n^2)
    • The algorithm has been tweaked slightly to disregard spaces and word boundaries. This will change the rating values slightly but not enough to make a significant difference
    • Adding a bestMatchIndex to the results for findBestMatch(..) to point to the best match in the supplied targetStrings array

    3.0.1

    • Refactoring: removed unused functions; used substring instead of substr
    • Updated dependencies

    4.0.1

    • Distributing as an UMD build to be used in browsers.

    4.0.2

    • Update dependencies to latest versions.

    4.0.3

    • Make compatible with IE and ES5. Also, update deps. (see PR56)

    4.0.4

    • Simplify some conditional statements. Also, update deps. (see PR50)

    Build status Known Vulnerabilities

    Install

    npm i string-similarity

    DownloadsWeekly Downloads

    1,460,976

    Version

    4.0.4

    License

    ISC

    Unpacked Size

    11 kB

    Total Files

    5

    Last publish

    Collaborators

    • aceakash