String-Matching

In diesem Notebook verwenden wir die beliebte String-Matching-Bibliothek fuzzywuzzy. Weitere Informationen zu den verschiedenen verfügbaren Methoden und ihren Unterschieden findet ihr im Blogbeitrag FuzzyWuzzy: Fuzzy String Matching in Python.

1. Imort

[1]:
from fuzzywuzzy import fuzz, process

2. Beispiel

[2]:
berlin = ['Berlin, Germany',
          'Berlin, Deutschland',
          'Berlin',
          'Berlin, DE']

String-Ähnlichkeit

Die Übereinstimmung der erstem beiden Strings 'Berlin, Germany' und 'Berlin, Deutschland' scheint gering:

[3]:
fuzz.ratio(berlin[0], berlin[1])
[3]:
65

Partielle String-Ähnlichkeit

Inkonsistente Teilzeichenfolgen sind ein häufiges Problem. Um dies zu umgehen, verwendet fuzzywuzzy eine Heuristik, die als best partial bezeichnet wird.

[4]:
fuzz.partial_ratio(berlin[0], berlin[1])
[4]:
60

Token-Sortierung

Bei der Token-Sortierung wird die betreffende Zeichenfolge mit einem Token versehen, die Token alphabetisch sortiert und anschließend wieder zu einer Zeichenfolge zusammengefügt, beispielsweise:

[5]:
fuzz.ratio(berlin[1], berlin[2])
[5]:
48
[6]:
fuzz.token_set_ratio(berlin[1], berlin[2])
[6]:
100

Weitere Informationen

[7]:
fuzz.ratio?

Extrahieren aus einer Liste

[8]:
choices = ['Germany',
           'Deutschland',
           'France',
           'United Kingdom',
           'Great Britain',
           'United States']
[9]:
process.extract('DE', choices, limit=2)
[9]:
[('Deutschland', 90), ('Germany', 45)]
[10]:
process.extract('Vereinigtes Königreich', choices)
[10]:
[('United Kingdom', 51),
 ('United States', 41),
 ('Germany', 39),
 ('Great Britain', 35),
 ('Deutschland', 31)]
[11]:
process.extractOne('frankreich', choices)
[11]:
('France', 62)
[12]:
process.extractOne('U.S.', choices)
[12]:
('United States', 86)

Bekannte Ports

FuzzyWuzzy wird auch in andere Sprachen portiert! Hier einige bekannte Ports: