To install click the Add extension button. That's it.

The source code for the WIKI 2 extension is being checked by specialists of the Mozilla Foundation, Google, and Apple. You could also do it yourself at any point in time.

4,5
Kelly Slayton
Congratulations on this excellent venture… what a great idea!
Alexander Grigorievskiy
I use WIKI 2 every day and almost forgot how the original Wikipedia looks like.
Live Statistics
English Articles
Improved in 24 Hours
Added in 24 Hours
Languages
Recent
Show all languages
What we do. Every page goes through several hundred of perfecting techniques; in live mode. Quite the same Wikipedia. Just better.
.
Leo
Newton
Brights
Milds

Gestalt pattern matching

From Wikipedia, the free encyclopedia

Gestalt pattern matching,[1] also Ratcliff/Obershelp pattern recognition,[2] is a string-matching algorithm for determining the similarity of two strings. It was developed in 1983 by John W. Ratcliff and John A. Obershelp and published in the Dr. Dobb's Journal in July 1988.[2]

Algorithm

The similarity of two strings and is determined by the formula, calculating twice the number of matching characters divided by the total number of characters of both strings. The matching characters are defined as some longest common substring[3] plus recursively the number of matching characters in the non-matching regions on both sides of the longest common substring:[2][4]

where the similarity metric can take a value between zero and one:

The value of 1 stands for the complete match of the two strings, whereas the value of 0 means there is no match and not even one common letter.

Sample

S1 W I K I M E D I A
S2 W I K I M A N I A

The longest common substring is WIKIM (light grey) with 5 characters. There is no further substring on the left. The non-matching substrings on the right side are EDIA and ANIA. They again have a longest common substring IA (dark gray) with length 2. The similarity metric is determined by:

Properties

The Ratcliff/Obershelp matching characters can be substantially different from each longest common subsequence of the given strings. For example and have as their only longest common substring, and no common characters right of its occurrence, and likewise left, leading to . However, the longest common subsequence of and is , with a total length of .

Complexity

The execution time of the algorithm is in a worst case and in an average case. By changing the computing method, the execution time can be improved significantly.[1]

Commutative property

The Python library implementation of the gestalt pattern matching algorithm is not commutative:[5]

Sample

For the two strings

and

the metric result for

is with the substrings GESTALT P, A, T, E and for
the metric is with the substrings GESTALT P, R, A, C, I.[why?]

Applications

The Python difflib library, which was introduced in version 2.1,[1] implements a similar algorithm that predates the Ratcliff-Obershelp algorithm. Due to the unfavourable runtime behaviour of this similarity metric, three methods have been implemented. Two of them return an upper bound in a faster execution time.[1] The fastest variant only compares the length of the two substrings:[6]

,

The second upper bound calculates twice the sum of all used characters which occur in divided by the length of both strings but the sequence is ignored.

[clarification needed]
# Dqr Implementation in Python
def quick_ratio(s1: str, s2: str) -> float:
    """Return an upper bound on ratio() relatively quickly."""
    length = len(s1) + len(s2)

    if not length:
        return 1.0

    intersect = collections.Counter(s1) & collections.Counter(s2)
    matches = sum(intersect.values())
    return 2.0 * matches / length

Trivially the following applies:

and
.

References

  1. ^ a b c d difflib — Helpers for computing deltas inside the Python documentation
  2. ^ a b c National Institute of Standards and Technology Ratcliff/Obershelp pattern recognition
  3. ^ While two strings may have several longest common substrings, Ratcliff (1988) apparently assumes that there is only one.
  4. ^ Ilya Ilyankou: Comparison of Jaro-Winkler and Ratcliff/Obershelp algorithms in spell check, May 2014 (PDF)
  5. ^ How does Pythons SequenceMatcher work? at stackoverflow.com
  6. ^ Borrowed from Python 3.7.0, difflib.py Lines 38–41 and 676–686

Further reading

  • Ratcliff, John W.; Metzener, David (July 1988). "Pattern Matching: The Gestalt Approach". Dr. Dobb's Journal (46).

See also

This page was last edited on 11 April 2023, at 19:21
Basis of this page is in Wikipedia. Text is available under the CC BY-SA 3.0 Unported License. Non-text media are available under their specified licenses. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc. WIKI 2 is an independent company and has no affiliation with Wikimedia Foundation.