• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

lib/Text/Levenshtein/H15-Jun-2013-446137

t/H15-Jun-2013-13397

xt/H15-Jun-2013-1412

ChangesH A D15-Jun-20133.5 KiB12892

LICENSEH A D28-Oct-201218 KiB380292

MANIFESTH A D15-Jun-2013449 1918

MANIFEST.SKIPH A D11-Jan-2013107 1514

META.jsonH A D15-Jun-20131.4 KiB6160

META.ymlH A D15-Jun-2013872 3433

Makefile.PLH A D15-Jun-20131.1 KiB4238

READMEH A D10-Jan-20135.9 KiB171119

README

1NAME
2    Text::Levenshtein::Damerau - Damerau Levenshtein edit distance.
3
4SYNOPSIS
5            use Text::Levenshtein::Damerau;
6
7            my @targets = ('fuor','xr','fourrrr','fo');
8
9            # Initialize Text::Levenshtein::Damerau object with text to compare against
10            my $tld = Text::Levenshtein::Damerau->new('four');
11
12            print $tld->dld($targets[0]);
13            # prints 1
14
15            my $tld = $tld->dld({ list => \@targets });
16            print $tld->{'fuor'};
17            # prints 1
18
19            print $tld->dld_best_match({ list => \@targets });
20            # prints fuor
21
22            print $tld->dld_best_distance({ list => \@targets });
23            # prints 1
24
25
26            # or even more simply
27            use Text::Levenshtein::Damerau qw/edistance/;
28
29            print edistance('Neil','Niel');
30            # prints 1
31
32DESCRIPTION
33    Returns the true Damerau Levenshtein edit distance of strings with
34    adjacent transpositions. Useful for fuzzy matching, DNA variation
35    metrics, and fraud detection.
36
37    Defaults to using Pure Perl Text::Levenshtein::Damerau::PP, but has an
38    XS addon Text::Levenshtein::Damerau::XS for massive speed imrovements.
39    Works correctly with utf8 if backend supports it; known to work with
40    "Text::Levenshtein::Damerau::PP" and "Text::Levenshtein::Damerau::XS".
41
42            use Text::Levenshtein::Damerau;
43            use utf8;
44
45            my $tld = Text::Levenshtein::Damerau->new('ⓕⓞⓤⓡ');
46            print $tld->dld('ⓕⓤⓞⓡ');
47            # prints 1
48
49CONSTRUCTOR
50  new
51    Creates and returns a "Text::Levenshtein::Damerau" object. Takes a
52    scalar with the text (source) you want to compare against.
53
54            my $tld = Text::Levenshtein::Damerau->new('Neil');
55            # Creates a new Text::Levenshtein::Damerau object $tld
56
57METHODS
58  $tld->dld
59    Scalar Argument: Takes a string to compare with.
60
61    Returns: an integer representing the edit distance between the source
62    and the passed argument.
63
64    Hashref Argument: Takes a hashref containing:
65
66    *   list => \@array (array ref of strings to compare with)
67
68    *   *OPTIONAL* max_distance => $int (only return results with $int
69        distance or less).
70
71    *   *OPTIONAL* backend => 'Some::Module::its_function' Any module that
72        will take 2 arguments and returns an int. If the module fails to
73        load, the function doesn't exist, or the function doesn't return a
74        number when passed 2 strings, then "backend" remains unchanged.
75
76                # Override defaults and use Text::Levenshtein::Damerau::PP's pp_edistance()
77                $tld->dld({ list=> \@list, backend => 'Text::Levenshtein::Damerau::PP::pp_edistance');
78
79                # Override defaults and use Text::Levenshtein::Damerau::XS's xs_edistance()
80                use Text::Levenshtein::Damerau;
81                requires Text::Levenshtein::Damerau::XS;
82                ...
83                $tld->dld({ list=> \@list, backend => 'Text::Levenshtein::Damerau::XS::xs_edistance');
84
85    Returns: hashref with each word from the passed list as keys, and their
86    edit distance (if less than max_distance, which is unlimited by
87    default).
88
89            my $tld = Text::Levenshtein::Damerau->new('Neil');
90            print $tld->dld( 'Niel' );
91            # prints 1
92
93            #or if you want to check the distance of various items in a list
94
95            my @names_list = ('Niel','Jack');
96            my $tld = Text::Levenshtein::Damerau->new('Neil');
97            my $d_ref = $tld->dld({ list=> \@names_list }); # pass a list, returns a hash ref
98            print $d_ref->{'Niel'}; #prints 1
99            print $d_ref->{'Jack'}; #prints 4
100
101  $tld->dld_best_match
102    Argument: an array reference of strings.
103
104    Returns: the string with the smallest edit distance between the source
105    and the array of strings passed.
106
107    Takes distance of $tld source against every item in @targets, then
108    returns the string of the best match.
109
110            my $tld = Text::Levenshtein::Damerau->new('Neil');
111            my @name_spellings = ('Niel','Neell','KNiel');
112            print $tld->dld_best_match({ list=> \@name_spellings });
113            # prints Niel
114
115  $tld->dld_best_distance
116    Arguments: an array reference of strings.
117
118    Returns: the smallest edit distance between the source and the array
119    reference of strings passed.
120
121    Takes distance of $tld source against every item in the passed array,
122    then returns the smallest edit distance.
123
124            my $tld = Text::Levenshtein::Damerau->new('Neil');
125            my @name_spellings = ('Niel','Neell','KNiel');
126            print $tld->dld_best_distance({ list => \@name_spellings });
127            # prints 1
128
129EXPORTABLE METHODS
130  edistance
131    Arguments: source string and target string.
132
133    *   *OPTIONAL 3rd argument* int (max distance; only return results with
134        $int distance or less). 0 = unlimited. Default = 0.
135
136    Returns: int that represents the edit distance between the two argument.
137    -1 if max distance is set and reached.
138
139    Wrapper function to take the edit distance between a source and target
140    string. It will attempt to use, in order:
141
142    *   Text::Levenshtein::Damerau::XS xs_edistance
143
144    *   Text::Levenshtein::Damerau::PP pp_edistance
145
146            use Text::Levenshtein::Damerau qw/edistance/;
147            print edistance('Neil','Niel');
148            # prints 1
149
150SEE ALSO
151    *   <https://github.com/ugexe/Text--Levenshtein--Damerau> *repository*
152
153    *   <http://en.wikipedia.org/wiki/Damerau%E2%80%93Levenshtein_distance>
154        *damerau levenshtein explaination*
155
156    *   Text::Fuzzy *regular levenshtein distance*
157
158BUGS
159    Please report bugs to:
160
161    <https://rt.cpan.org/Public/Dist/Display.html?Name=Text-Levenshtein-Dame
162    rau>
163
164AUTHOR
165    Nick Logan <ug@skunkds.com>
166
167LICENSE AND COPYRIGHT
168    This library is free software; you can redistribute it and/or modify it
169    under the same terms as Perl itself.
170
171