FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
stringdist/examples/stringdist.R at master · linearregression/stringdist · GitHub
linearregression
stringdist
Repository navigation
Code
Pull requests
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
stringdist
/
examples
/
stringdist.R
Copy path
More file actions
More file actions
Latest commit
History
History
History
80 lines (57 loc) · 2.81 KB
Breadcrumbs
stringdist
/
examples
/
stringdist.R
Copy path
File metadata and controls
80 lines (57 loc) · 2.81 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#
Simple example using optimal string alignment
stringdist(
"
ca
"
,
"
abc
"
)
#
computing a 'dist' object
d
<-
stringdistmatrix(c(
'
foo
'
,
'
bar
'
,
'
boo
'
,
'
baz
'
))
#
try plot(hclust(d))
#
The following gives a matrix
stringdistmatrix(c(
"
foo
"
,
"
bar
"
,
"
boo
"
),c(
"
baz
"
,
"
buz
"
))
#
An example using Damerau-Levenshtein distance (multiple editing of substrings allowed)
stringdist(
"
ca
"
,
"
abc
"
,
method
=
"
dl
"
)
#
string distance matching is case sensitive:
stringdist(
"
ABC
"
,
"
abc
"
)
#
so you may want to normalize a bit:
stringdist(tolower(
"
ABC
"
),
"
abc
"
)
#
stringdist recycles the shortest argument:
stringdist(c(
'
a
'
,
'
b
'
,
'
c
'
),c(
'
a
'
,
'
c
'
))
#
stringdistmatrix gives the distance matrix (by default for optimal string alignment):
stringdist(c(
'
a
'
,
'
b
'
,
'
c
'
),c(
'
a
'
,
'
c
'
))
#
different edit operations may be weighted; e.g. weighted substitution:
stringdist(
'
ab
'
,
'
ba
'
,
weight
=
c(
1
,
1
,
1
,
0.5
))
#
Non-unit weights for insertion and deletion makes the distance metric asymetric
stringdist(
'
ca
'
,
'
abc
'
)
stringdist(
'
abc
'
,
'
ca
'
)
stringdist(
'
ca
'
,
'
abc
'
,
weight
=
c(
0.5
,
1
,
1
,
1
))
stringdist(
'
abc
'
,
'
ca
'
,
weight
=
c(
0.5
,
1
,
1
,
1
))
#
Hamming distance is undefined for
#
strings of unequal lengths so stringdist returns Inf
stringdist(
"
ab
"
,
"
abc
"
,
method
=
"
h
"
)
#
For strings of eqal length it counts the number of unequal characters as they occur
#
in the strings from beginning to end
stringdist(
"
hello
"
,
"
HeLl0
"
,
method
=
"
h
"
)
#
The lcs (longest common substring) distance returns the number of
#
characters that are not part of the lcs.
#
#
Here, the lcs is either 'a' or 'b' and one character cannot be paired:
stringdist(
'
ab
'
,
'
ba
'
,
method
=
"
lcs
"
)
#
Here the lcs is 'surey' and 'v', 'g' and one 'r' of 'surgery' are not paired
stringdist(
'
survey
'
,
'
surgery
'
,
method
=
"
lcs
"
)
#
q-grams are based on the difference between occurrences of q consecutive characters
#
in string a and string b.
#
Since each character abc occurs in 'abc' and 'cba', the q=1 distance equals 0:
stringdist(
'
abc
'
,
'
cba
'
,
method
=
'
qgram
'
,
q
=
1
)
#
since the first string consists of 'ab','bc' and the second
#
of 'cb' and 'ba', the q=2 distance equals 4 (they have no q=2 grams in common):
stringdist(
'
abc
'
,
'
cba
'
,
method
=
'
qgram
'
,
q
=
2
)
#
Wikipedia has the following example of the Jaro-distance.
stringdist(
'
MARTHA
'
,
'
MATHRA
'
,
method
=
'
jw
'
)
#
Note that stringdist gives a _distance_ where wikipedia gives the corresponding
#
_similarity measure_. To get the wikipedia result:
1
-
stringdist(
'
MARTHA
'
,
'
MATHRA
'
,
method
=
'
jw
'
)
#
The corresponding Jaro-Winkler distance can be computed by setting p=0.1
stringdist(
'
MARTHA
'
,
'
MATHRA
'
,
method
=
'
jw
'
,
p
=
0.1
)
#
or, as a similarity measure
1
-
stringdist(
'
MARTHA
'
,
'
MATHRA
'
,
method
=
'
jw
'
,
p
=
0.1
)
#
This gives distance 1 since Euler and Gauss translate to different soundex codes.
stringdist(
'
Euler
'
,
'
Gauss
'
,
method
=
'
soundex
'
)
#
Euler and Ellery translate to the same code and have distance 0
stringdist(
'
Euler
'
,
'
Ellery
'
,
method
=
'
soundex
'
)
Back
|
FazBrowse Home
|
New Git URL