Wanneer we de prijs van een hotelkamer op verschillende websites vergelijken, moeten we er zeker van zijn dat we appels met appels vergelijken
In de informatica is fuzzy string matching de techniek van het vinden van strings die bij benadering (in plaats van exact) overeenkomen met een patroon. Met andere woorden, fuzzy string matching is een type zoekmethode waarbij matches worden gevonden, zelfs wanneer gebruikers woorden verkeerd spellen of slechts gedeeltelijke woorden invoeren voor de zoekactie. Het is ook bekend als approximate string matching.
Fuzzy string zoeken kan worden gebruikt in verschillende toepassingen, zoals:
- Een spellingcontrole en spelling-fouten, typefouten corrector. Bijvoorbeeld, een gebruiker typt “Missisaga” in Google, een lijst van treffers wordt geretourneerd samen met “Resultaten tonen voor mississauga”. Dat wil zeggen, zoekopdracht retourneert resultaten, zelfs als de gebruiker input bevat extra of ontbrekende tekens, of andere vormen van spelfouten.
- Een software kan worden gebruikt om te controleren op dubbele records. Bijvoorbeeld, als een klant wordt vermeld meerdere malen met verschillende aankopen in de database als gevolg van verschillende spellingen van hun naam (dat wil zeggen Abigail Martin vs Abigail Martinez) een nieuw adres, of een verkeerd ingevoerde telefoonnummer.
Speaking of dedupe, kan het niet zo eenvoudig als het klinkt, in het bijzonder als je honderdduizenden records. Zelfs Expedia maakt het niet 100% goed:
In dit bericht wordt uitgelegd wat fuzzy string matching is, samen met de gebruikssituaties en worden voorbeelden gegeven met behulp van de Fuzzywuzzy-bibliotheek van Python.
Elk hotel heeft zijn eigen nomenclatuur om zijn kamers te benoemen, hetzelfde scenario geldt voor Online Travel Agency (OTA). Bijvoorbeeld, een kamer in hetzelfde hotel, Expedia noemt “Studio, 1 King Bed met Sofa bed, Corner”, Booking.com kan vinden veilig in het tonen van de kamer gewoon als een “Corner King Studio”.
Er is niets mis hier, maar het kan leiden tot verwarring wanneer we willen kamerprijs vergelijken tussen OTA’s, of een OTA wil ervoor zorgen dat een andere OTA volgt de tarief pariteit overeenkomst. Met andere woorden, om prijs te kunnen vergelijken, moeten we ervoor zorgen dat we appels met appels vergelijken.
Een van de meest consequent frustrerende problemen voor prijsvergelijkingswebsites en apps is het proberen uit te vinden of twee items (of hotelkamers) automatisch voor hetzelfde zijn.
Fuzzywuzzy is een Python-bibliotheek die Levenshtein Distance gebruikt om de verschillen tussen reeksen te berekenen in een eenvoudig te gebruiken pakket.
Om dit te demonstreren, maak ik mijn eigen dataset, dat wil zeggen, voor hetzelfde hotel, neem ik een kamertype van Expedia, laten we zeggen “Suite, 1 King Bed (Parlor)”, dan match ik het met een kamertype in Booking.com dat “King Parlor Suite” is. Met een beetje ervaring, zouden de meeste mensen weten dat dit hetzelfde is. Volg deze methodologie, maak ik een kleine data set met meer dan 100 kamer type paren die kan worden gevonden op Github.
Gebruik makend van deze data set, gaan we testen hoe Fuzzywuzzy denkt. Met andere woorden, we gebruiken Fuzzywuzzy om records te matchen tussen twee gegevensbronnen.
import pandas as pddf = pd.read_csv('room_type.csv')
df.head(10)