intuit / fuzzy-matcher

A Java library to determine probability of objects being similar.
Apache License 2.0
228 stars 69 forks source link

Inconsistency in matching results #18

Closed centipod closed 4 years ago

centipod commented 4 years ago

Hi there!

I am running some matching tests with your library on a large dataset of bank transactions. The documents used for matching have a single TEXT field, containing the description of the transaction. On running the matching, I found that some strings that should be an exact match, come back with a probability as low as 0.5. See the below sample:

{[{'Immediate Payment Fee,'}]}
Matching {{[{'Immediate Payment Fee,'}]}, 0.6666666666666666}
Matching {{[{'Immediate Payment Fee,'}]}, 0.6666666666666666}
Matching {{[{'Immediate Payment Fee,'}]}, 0.6666666666666666}
Matching {{[{'Immediate Payment Fee,'}]}, 0.6666666666666666}
Matching {{[{'Immediate Payment Fee,'}]}, 0.6666666666666666}
Matching {{[{'Immediate Payment Fee,'}]}, 0.6666666666666666}
Matching {{[{'Immediate Payment Fee,'}]}, 1.0}
Matching {{[{'Immediate Payment Fee,'}]}, 0.6666666666666666}
Matching {{[{'Immediate Payment Fee,'}]}, 0.6666666666666666}
Matching {{[{'Immediate Payment Fee,'}]}, 0.6666666666666666}
Matching {{[{'Immediate Payment Fee,'}]}, 0.6666666666666666}
Matching {{[{'Immediate Payment Fee,'}]}, 0.6666666666666666}
Matching {{[{'Immediate Payment Fee,'}]}, 0.6666666666666666}

The top line is the document that is matched and the other lines are the matching results. The implementation of my test is as straightforward as can be, I believe:

            // Build document input
            List<Document> documents = new ArrayList<>();
            transactions.stream().forEach(t -> {

                documents.add(new Document.Builder(String.valueOf(index.incrementAndGet()))
                    .addElement(new Element.Builder().setType(ElementType.TEXT).setValue(t.getDescription()).createElement())
                    .createDocument());
            });

            MatchService matchService = new MatchService();
            Map<Document, List<Match<Document>>> matched = matchService.applyMatch(documents);

            for (Iterator<Document> i = matched.keySet().iterator(); i.hasNext(); ) {

                Document d = i.next();
                System.out.println("");
                System.out.println(d.toString());
                matched.get(d).stream().forEach(doc -> {

                    System.out.println("Matching " + doc.toString());
                });
            }

I'd love to use your library for my project and hope to contribute, but I think I need to first understand why not all matches are being returned as 1.0 as all the strings are identical.

Thanks!

manishobhatia commented 4 years ago

Hi Christian, I created a branch with your test in it

https://github.com/intuit/fuzzy-matcher/blob/79f8e0ce3796a7e40632a95239687ca1938497de/src/test/java/com/intuit/fuzzymatcher/component/MatchServiceTest.java#L579

Can you check if this is accurate ? I am unable to see the result you showed.

If you can modify that test with a small set of data you have , I can debug and see where the issue is

centipod commented 4 years ago

Hi Manish,

Thanks for the quick response.

The only difference I can find is that your test uses List and mine List. I’ll replace my code with List and see if I get the same results. End of the day, I only need the String so that would be a plausible solution.

I’ll try now and let you know.

Thanks!


Christian Schuit Centipod

christian.schuit@centipod.nlmailto:christian.schuit@centipod.nl +31 (0)623 386 645 +27 (0)72 946 8830 www.centipod.nlhttp://www.centipod.nl

From: Manish Bhatia notifications@github.com Reply to: intuit/fuzzy-matcher reply@reply.github.com Date: Tuesday, 3 December 2019 at 06:20 To: intuit/fuzzy-matcher fuzzy-matcher@noreply.github.com Cc: ChristianSchuit christian.schuit@gmail.com, Author author@noreply.github.com Subject: Re: [intuit/fuzzy-matcher] Inconsistency in matching results (#18)

Hi Christian, I created a branch with your test in it

https://github.com/intuit/fuzzy-matcher/blob/79f8e0ce3796a7e40632a95239687ca1938497de/src/test/java/com/intuit/fuzzymatcher/component/MatchServiceTest.java#L579

Can you check if this is accurate ? I am unable to see the result you showed.

If you can modify that test with a small set of data you have , I can debug and see where the issue is

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHubhttps://github.com/intuit/fuzzy-matcher/issues/18?email_source=notifications&email_token=ABLIWUMMV32SJEJ6SWKPXK3QWXM7NA5CNFSM4JUEC5A2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEFYAZXY#issuecomment-560991455, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ABLIWUJN6XRZFOAJBSJ5JGDQWXM7NANCNFSM4JUEC5AQ.

centipod commented 4 years ago

Hi Manish,

When I use the list you have on line 582, I get the correct results. I’ll go dig into my data set and find why it is behaving like this. Manual inspection of the data shows me that they are identical but perhaps I am missing something here.

I’ll close the issue.

Thanks!


Christian Schuit Centipod

christian.schuit@centipod.nlmailto:christian.schuit@centipod.nl +31 (0)623 386 645 +27 (0)72 946 8830 www.centipod.nlhttp://www.centipod.nl

From: Manish Bhatia notifications@github.com Reply to: intuit/fuzzy-matcher reply@reply.github.com Date: Tuesday, 3 December 2019 at 06:20 To: intuit/fuzzy-matcher fuzzy-matcher@noreply.github.com Cc: ChristianSchuit christian.schuit@gmail.com, Author author@noreply.github.com Subject: Re: [intuit/fuzzy-matcher] Inconsistency in matching results (#18)

Hi Christian, I created a branch with your test in it

https://github.com/intuit/fuzzy-matcher/blob/79f8e0ce3796a7e40632a95239687ca1938497de/src/test/java/com/intuit/fuzzymatcher/component/MatchServiceTest.java#L579

Can you check if this is accurate ? I am unable to see the result you showed.

If you can modify that test with a small set of data you have , I can debug and see where the issue is

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHubhttps://github.com/intuit/fuzzy-matcher/issues/18?email_source=notifications&email_token=ABLIWUMMV32SJEJ6SWKPXK3QWXM7NA5CNFSM4JUEC5A2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEFYAZXY#issuecomment-560991455, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ABLIWUJN6XRZFOAJBSJ5JGDQWXM7NANCNFSM4JUEC5AQ.

centipod commented 4 years ago

Just to add for completion:

I tested the following three scenarios:

I suspect Spring Data has something to do with this. If I find any more details, I'll drop them here.

Thanks!

centipod commented 4 years ago

One more update: I have a file with data that, when reading straight from the file, still returns the unexpected results. Is there a way I can share this file with you for testing? This is not information I can share publicly on this thread.

Thanks!

manishobhatia commented 4 years ago

if its not too big, can you mail it to manish_bhatia@intuit.com ?

centipod commented 4 years ago

Hello Manish,

Thanks for this. Please find attached the data file (data2.txt) and the results file containing what I would get when running the below code:

        // Document index

        final AtomicInteger index = new AtomicInteger(0);

        // List for strings

        List<String> list = new ArrayList<>();

        // Read from file

        BufferedReader r = new BufferedReader(new FileReader(new File("./data.txt")));

        String line = null;

        while ((line = r.readLine()) != null) {

            list.add(line);

        }

        r.close();

        // Build document input

        List<Document> documents = new ArrayList<>();

        list.stream().forEach(t -> {

            documents.add(new Document.Builder(String.valueOf(index.incrementAndGet()))

                .addElement(new Element.Builder().setType(ElementType.TEXT).setValue(t).createElement())

                .createDocument());

        });

        MatchService matchService = new MatchService();

        Map<Document, List<Match<Document>>> matched = matchService.applyMatch(documents);

        for (Iterator<Document> i = matched.keySet().iterator(); i.hasNext(); ) {

            Document d = i.next();

            System.out.println("");

            System.out.println(d.toString());

            matched.get(d).stream().forEach(doc -> {

                System.out.println("Matching " + doc.toString());

            });

        }

Many thanks for your support!


Christian Schuit Centipod

christian.schuit@centipod.nlmailto:christian.schuit@centipod.nl +31 (0)623 386 645 +27 (0)72 946 8830 www.centipod.nlhttp://www.centipod.nl

From: Manish Bhatia notifications@github.com Reply to: intuit/fuzzy-matcher reply@reply.github.com Date: Wednesday, 4 December 2019 at 02:41 To: intuit/fuzzy-matcher fuzzy-matcher@noreply.github.com Cc: ChristianSchuit christian.schuit@gmail.com, State change state_change@noreply.github.com Subject: Re: [intuit/fuzzy-matcher] Inconsistency in matching results (#18)

if its not too big, can you mail it to manish_bhatia@intuit.commailto:manish_bhatia@intuit.com ?

— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHubhttps://github.com/intuit/fuzzy-matcher/issues/18?email_source=notifications&email_token=ABLIWUPWPLFJMK3DLUVHOT3QW2Y7TA5CNFSM4JUEC5A2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEF2SIJQ#issuecomment-561325094, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ABLIWULUJUDEFOCLPAS66NLQW2Y7TANCNFSM4JUEC5AQ.

Car Wash Empori 85373 Parklands Card 0619 000 CAR WASH EMPORI 85373PARKLANDS WCZA ATM Cash Withdrawal Fnb Ssc Atm Card 0619 FNB SSC ATM Cape Town SAZA Online Purchase Uber Trip Help uber co Help uber com Card 0619 UBER TRIP HELP UBER CO help uber comNLNL Shoe City Western Cape Card 0619 SHOE CITY TABLE VIEW WESTERN CAPE ZAZA Toys R Us Milnerton Card 0619 TOYS R US TABLE BAY MA MILNERTON WCZA Shell Atlantis Card 0619 SHELL ATLANTIS ATLANTIS WCZA Interest Received Payment Fee Ackermans Table View Card 0619 ACKERMANS TABLE VIEW TABLE VIEW ZAZA Gozone Cape Town Card 0619 Gozone Cape Town ZA Moyo Eden Big Bay Card 0619 MOYO EDEN BIG BAY ZAZA Till Cash Withdrawal Fee Banking App Transfer to 1300852338 Cindy Orange CINDY ORANGE Cash Withdrawal Dnr Atlantis City Ls85 Card 0619 DNR Atlantis City LS85 Atlantis 09ZA Cash Withdrawal Fee ATM ATM Cash Withdrawal Aac4 Melkbos Strand Rd Card 0619 AAC4 Melkbos strand rd Melkbos WCZA ATM Cash Withdrawal Aac4 2 Link Rd Card 0619 AAC4 2 Link Rd Tableview WCZA Toys R Us Milnerton Card 0619 TOYS R US TABLE BAY MA MILNERTON WCZA Banking App Prepaid Purchase ELECTRICITY ELECTRICITY SMS Notification Fee SMS Notification Fee SMS Notification Fee Correction Prepaid Purchase Pizza Hut Table View Tableview Card 0619 PIZZA HUT TABLE VIEW TABLEVIEW ZAZA Cash Withdrawal Fee ATM ATM Cash Withdrawal Sparkatm Eat Smile Card 0619 SparkATM Eat Smile Atlantis 09ZA Online Purchase Uber Trip Help uber co Help uber com Card 0619 UBER TRIP HELP UBER CO help uber comNLNL Romans Pizza Parklands Card 0619 ROMANS PIZZA PARKLAN PARKLANDS ZA Masakhane S station Milnerton Card 0619 MASAKHANE S STATION MILNERTON ZA Monthly Account Admin Fee SMS Notification Fee SMS Notification Fee Cash Withdrawal Fee ATM Woolworths Blaauwberg Card 5434 WOOLWORTHS WESTCOALL BLAAUWBERG ZAZA Banking App Payment Received Cindy car Service CINDY CAR SERVICE SMS Notification Fee ATM Cash Withdrawal Sparkatm King Shaka Airport Card 5434 SparkATM King Shaka Airport Durban 04ZA Online Purchase Flysafair Azbapz boran Kempton Park Card 5434 FLYSAFAIR AZBAPZ BORAN KEMPTON PARK GPZA Banking App Immediate Payment Sharna SHARNA Payment Fee Capitec to Capitec Debit Order Fee ATM Cash Withdrawal Fee Game Cape Town Card 5434 GAME BAYSIDE TABLEVIEW CAPE TOWN ZAZA SMS Notification Fee Payment Fee Capitec to Capitec Cash Withdrawal Fee ATM SMS Notification Fee Truworths Sunningdale Card 0619 Truworths 1364 SUNNINGDALE ZAZA SMS Notification Fee Total Cape Town Card 0619 TOTAL RA MELKBOS CAPE TOWN WCZA Masakhane S station Milnerton Card 0619 MASAKHANE S STATION MILNERTON ZA SMS Notification Fee Banking App Prepaid Purchase VODACOM VODACOM Masakhane S station Milnerton Card 0619 MASAKHANE S STATION MILNERTON ZA Oli S Food Cape Town Card 0619 OLI S FOOD CAPE TOWN ZA Banking App Prepaid Purchase VODACOM VODACOM Payment Fee Capitec to Capitec Interest Received Liquorshop Tableview Table View Card 0619 LiquorShop Tableview TABLE VIEW ZA Banking App Payment Received Cindy CINDY Bwh Tableview Parkla Sunningdale Card 0619 BWH TABLEVIEW PARKLA SUNNINGDALE ZAZA Cash Converters Cape Town Card 0619 CASH CONVERTERS TABLEV CAPE TOWN ZA Tomeez Hire Cc Atlantis Card 0619 Tomeez Hire CC ATLANTIS ZAZA ATM Cash Withdrawal 400 Albert Road Card 0619 400 Albert Road Salt River WCZA Tomeez Hire Cc Atlantis Card 0619 Tomeez Hire CC ATLANTIS ZAZA Tekkie Town Cape Town Card 0619 TEKKIE TOWN BAYSIDE MA CAPE TOWN WCZA SMS Notification Fee Banking App Payment Caban Investments Li CABAN INVESTMENTS LI Payment Fee Capitec to Capitec SMS Notification Fee Barristers Newlands Card 0619 BARRISTERS NEWLANDS ZA ATM Cash Withdrawal Fee SMS Notification Fee Payment Received Rtc 05tgb4gtrf Oxbow Accelerate Sal RTC 05TGB4GTRF OXBOW ACCELERATE SAL Banking App Prepaid Purchase VODACOM VODACOM Tyrenet Goodwood Card 5434 TYRENET GOODWOOD ZAZA Liquorshop Sandown Milnerton Card 5434 LiquorShop Sandown MILNERTON ZA Woolworths Cape Town Card 5434 WOOLWORTHS BIRKENMEL CAPE TOWN ZAZA SMS Notification Fee Arizona Mag Repair Sho Cape Town Card 5434 ARIZONA MAG REPAIR SHO CAPE TOWN ZA Banking App Prepaid Purchase VODACOM VODACOM SMS Notification Fee Banking App Payment Caban Investments Li CABAN INVESTMENTS LI Payment Fee Capitec to Capitec Momentum 316076703 4153rptransfer 1565561917 MOMENTUM 316076703 4153RPTRANSFER 1565561917 Checkers Table View Card 5434 Checkers TableView TABLE VIEW ZA Liquorshop Tableview Table View Card 5434 LiquorShop Tableview TABLE VIEW ZA Cash Withdrawal Pnp Fam Circle Centre Card 5434 PNP FAM CIRCLE CENTRE TABLEVIEW ZAZA Payment Fee Pick n Pay Tableview Card 0619 PNP FAM CIRCLE CENTRE TABLEVIEW ZAZA American Swiss Table View Card 0619 ASJ TABLE BAY MALL TABLE VIEW ZAZA KFC Milnerton Card 0619 KFC SANDOWN CROSS67393 MILNERTON WCZA SMS Notification Fee Payment Received Operat Rtc 18bo122712 Oxbow Accelerate operat RTC 18BO122712 OXBOW ACCELERATE Monthly Account Admin Fee ATM Cash Withdrawal Fee Banking App Prepaid Purchase VODACOM VODACOM SMS Notification Fee SMS Notification Fee Masakhane S station Milnerton Card 0619 MASAKHANE S STATION MILNERTON ZA Payment Fee Capitec to Capitec Monthly Account Admin Fee Payment Fee Cash Withdrawal Fee ATM Cash Withdrawal Fee ATM Gozone Cape Town Card 0619 Gozone Cape Town ZA ATM Cash Withdrawal Absa Engen Sunningdale Card 0619 ABSA ENGEN SUNNINGDALE CAPE TOWN ZA ATM Cash Withdrawal Main Road Saltriver Card 0619 Main Road Saltriver Cape Town WCZA Banking App Prepaid Purchase VODACOM VODACOM Bargain Books Tableview Card 0619 Bargain Books Bayside TABLEVIEW ZAZA Banking App Prepaid Purchase VODACOM VODACOM Banking App Payment Received Cindy Shares CINDY SHARES Payment Fee Capitec to Capitec Banking App Payment Mla Ministries MLA MINISTRIES Banking App Prepaid Purchase VODACOM VODACOM ATM Cash Withdrawal Malmesbury De Bron Card 0619 ATM Malmesbury De Bron Malmesbury 09ZA Vasa Table Bay Mall Table View Card 0619 VASA TABLE BAY MALL TABLE VIEW WCZA SMS Notification Fee Branch Card Replacement Fee Banking App Payment Received Loan Shares LOAN SHARES Pick n Pay Sunningdale Card 5434 PNP CRP SUNNINGDALE SUNNINGDALE ZAZA Banking App Payment Caban Investments Li CABAN INVESTMENTS LI ATM Cash Withdrawal Milnerton 3 Card 5434 MILNERTON 3 CAPE TOWN WCZA Banking App Prepaid Purchase VODACOM VODACOM Banking App Prepaid Purchase VODACOM VODACOM Debit Order Insufficient Funds Fee VIRGIN ACT4007510547 16830002000C REPAY 1561913030 Banking App Payment Mla Ministries MLA MINISTRIES Payment Fee SMS Notification Fee SMS Notification Fee ATM Cash Withdrawal Aac4 Melkbos Strand Rd Card 5434 AAC4 Melkbos strand rd MELKBOS WCZA Kauai Gardens Card 5434 KAUAI GARDENS ZAZA Payment Received Stansal 75wasalary wage Salary 1411634328 STANSAL 75WASALARY WAGE SALARY 1411634328 SMS Notification Fee Banking App Transfer to 1300852338 Cindy Orange CINDY ORANGE SMS Notification Fee ATM Cash Withdrawal Fee SMS Notification Fee Banking App Transfer to 1300852338 Cindy Orange CINDY ORANGE ATM Cash Withdrawal Table Bay Mall 1 Card 0619 Table Bay Mall 1 Cape Town WCZA SMS Notification Fee ATM Cash Withdrawal Absa Caltex Ravensview Card 0619 ABSA CALTEX RAVENSVIEW CAPE TOWN ZA Steers Milnerton Card 0619 STEERS WEST COAST VILL MILNERTON ZAZA Checkers Century City Card 0619 Checkers Century City CENTURY CITY ZA Payment Received Operat Rtc 18bo298009 Oxbow Accelerate operat RTC 18BO298009 OXBOW ACCELERATE SMS Notification Fee Payment Fee SMS Notification Fee Jet Stores Johannesburg Card 0619 JET SA TABLEVIEW JOHANNESBURG ZAZA SMS Notification Fee Cash Withdrawal Fee ATM Banking App Payment Darling College DARLING COLLEGE SMS Notification Fee ATM Cash Withdrawal Claremont P1 Card 0619 CLAREMONT P1 CAPE TOWN WCZA Banking App Prepaid Purchase VODACOM VODACOM Payment Fee Payment Received Operat Rtc 18bo547080 Oxbow Accelerate operat RTC 18BO547080 OXBOW ACCELERATE Interest Received Spar Cape Town Card 0619 Spar Milnerton Kwk Spa CAPE TOWN ZA Banking App Prepaid Purchase VODACOM VODACOM Masakhane S station Milnerton Card 0619 MASAKHANE S STATION MILNERTON ZA SMS Notification Fee SMS Notification Fee Banking App Prepaid Purchase VODACOM VODACOM PNA Parklands Card 5434 PNA PARKLANDS PARKLANDS ZAZA Banking App Payment Received Cindy CINDY Cash Withdrawal Fee ATM Banking App Payment Received Cindy ticket Loan CINDY TICKET LOAN Payment Received Rtc 160461773d Sharnie RTC 160461773D Sharnie Interest Received Banking App Prepaid Purchase VODACOM VODACOM Payment Fee Virgin Act4007510547 168487 Acc Repay 1565412831 VIRGIN ACT4007510547 168487 ACC REPAY 1565412831 Gozone Cape Town Card 5434 Gozone Cape Town ZA Cash Withdrawal Fee ATM Till Cash Withdrawal Fee SMS Notification Fee 15 On Orange Hotel Cape Town Card 0619 15 ON ORANGE HOTEL CAPE TOWN WCZA Foschini Table View Card 0619 FOSCHINI TABLE BAY MAL TABLE VIEW ZAZA Adidas Milnerton Card 0619 ADIDAS CANAL WALK MILNERTON ZA ATM Cash Withdrawal Parklands Emporium Card 0619 ATM Parklands Emporium Parkslands 09ZA ATM Cash Withdrawal Fee McDonalds Sandown Card 0619 MCD Sandown 419 SANDOWN ZA ATM Cash Withdrawal Tableviewbaysidemal Card 0619 ATM TableviewBaysideMALCape Town 09ZA Ster Kinekor Cape Town Card 0619 STER KINEKOR BAYS42800 CAPE TOWN WCZA Banking App Prepaid Purchase VODACOM VODACOM Banking App Payment Received Cindy CINDY Online Purchase Uber Trip Help uber co Help uber com Card 0619 UBER TRIP HELP UBER CO help uber comNLNL SMS Notification Fee ATM Cash Withdrawal Absa Caltex Marconi Be Card 0619 ABSA CALTEX MARCONI BE CAPE TOWN ZA Payment Fee 3 1 Tableview Card 0619 3 1 TABLEVIEW TABLEVIEW ZAZA Real Pizza Table View Card 0619 REAL PIZZA TABLE VIEW WCZA Banking App Prepaid Purchase VODACOM VODACOM SMS Notification Fee Cash Withdrawal Fee ATM ATM Cash Withdrawal Fee Banking App Prepaid Purchase CELLC CELLC Engen Kaapstad Card 0619 ENGEN SUNNINGDALE KAAPSTAD WCZA SMS Notification Fee SMS Notification Fee Monthly Account Admin Fee Banking App Prepaid Purchase VODACOM VODACOM SMS Notification Fee Total Cape Town Card 0619 TOTAL RA MELKBOS CAPE TOWN WCZA Banking App Payment Mla Ministries MLA MINISTRIES Banking App Prepaid Purchase VODACOM VODACOM SMS Notification Fee SMS Notification Fee Payment Fee J r auto Centre Athlone Card 5434 J R AUTO CENTRE ATHLONE ZA SMS Notification Fee SMS Notification Fee Monthly Account Admin Fee Banking App Transfer to 1300852338 Cindy Orange CINDY ORANGE Payment Received Rtc 057h8bbxtf Oxbow Accelerate Sal RTC 057H8BBXTF OXBOW ACCELERATE SAL ATM Cash Withdrawal Aa04 Cnr Charl Uys B Card 5434 AA04 Cnr Charl Uys B ATLANTIS WCZA SMS Notification Fee Pick n Pay Sunningdale Card 5434 PNP CRP SUNNINGDALE SUNNINGDALE ZAZA Banking App Prepaid Purchase VODACOM VODACOM Banking App Payment Mla Ministries MLA MINISTRIES SMS Notification Fee 15 On Orange Hotel Cape Town Card 0619 15 ON ORANGE HOTEL CAPE TOWN WCZA H M Table Bay Mall Cape Town Card 0619 H M TABLE BAY MALL CAPE TOWN ZAZA Bugz Kraaifontein Card 0619 BUGZ KRAAIFONTEIN ZA Build It Western Cape Card 0619 TABLEVIEW BUILD IT WESTERN CAPE ZA ATM Cash Withdrawal Parklands Emporium Card 0619 ATM Parklands Emporium Parkslands 09ZA Payment Fee Capitec to Capitec Cash Withdrawal Fee ATM Clicks Tableview Card 0619 Clicks Table View TABLEVIEW ZA Cash Withdrawal Fee ATM Pick n Pay Cape Town Card 0619 PNP FAMILY ATLANTIS CAPE TOWN ZAZA Debonairs Melkbosstrand Card 0619 DEBONAIRS MELKBOS MELKBOSSTRANDZAZA ATM Cash Withdrawal Fee Banking App Payment Mla Ministries MLA MINISTRIES SMS Notification Fee Shyloks Cape Town Card 0619 SHYLOKS CAPE TOWN ZA SMS Notification Fee Markham Cape Town Card 0619 MARKHAM VANGATE CITY 0 CAPE TOWN ZAZA ATM Cash Withdrawal Absa Pnp Circle Center Card 0619 ABSA PNP CIRCLE CENTER TABLE VIEW ZA Cash Withdrawal Fee ATM ATM Cash Withdrawal Parklands Emporium Card 0619 ATM Parklands Emporium Parkslands 09ZA Bwh Tableview Parkla Sunningdale Card 0619 BWH TABLEVIEW PARKLA SUNNINGDALE ZAZA Rush Extreme Sports Cape Town Card 0619 RUSH EXTREME SPORTS CAPE TOWN ZA ATM Cash Withdrawal Bp Airport Card 0619 BP AIRPORT CAPE TOWN WCZA SMS Notification Fee Payment Fee Mr Video Parklands Card 0619 MR VIDEO JUNCTION PARKLANDS ZA ATM Cash Withdrawal Aa04 Cnr Charl Uys B Card 0619 AA04 Cnr Charl Uys B Atlantis WCZA Banking App Immediate Payment Delicia Orange DELICIA ORANGE Banking App Transfer to 1300852338 Cindy Orange CINDY ORANGE SMS Notification Fee ATM Cash Withdrawal Aa04 88 Voortrekker Rd Card 5434 AA04 88 Voortrekker Rd Goodwood WCZA Quest Atlantis Dassenberg Card 5434 QUEST ATLANTIS DASSENBERG WCZA SMS Notification Fee ATM Cash Withdrawal Absa 7 s Atlantis Card 5434 ABSA 7 S ATLANTIS ATLANTIS ZA ATM Cash Withdrawal Fee ATM Cash Withdrawal Absa Ct Domestic Depar Card 5434 ABSA CT DOMESTIC DEPAR CAPE TOWN ZA Debit Order Insufficient Funds Fee MOMENTUM 316076703 50007453S PREM 1563098749 Banking App Transfer to 1300852338 Cindy Orange CINDY ORANGE SMS Notification Fee Cash Withdrawal Fee ATM Spar Athlone Card 5434 SPAR VANGATE SUPR SPAR ATHLONE WCZA SMS Notification Fee Banking App Prepaid Purchase VODACOM VODACOM Banking App Prepaid Purchase VODACOM VODACOM Total Cape Town Card 0619 TOTAL RA MELKBOS CAPE TOWN WCZA Checkers Milnerton Card 0619 CheckersHyper Sandown MILNERTON ZA Payment Fee Capitec to Capitec Clicks Sunningdale Card 0619 Clicks Table Bay Mall SUNNINGDALE ZA Interest Received Banking App Prepaid Purchase VODACOM VODACOM SMS Notification Fee SMS Notification Fee Dis Chem Western Cape Card 0619 DIS CHEM BAYSIDE WESTERN CAPE ZAZA SMS Notification Fee SMS Notification Fee KFC Melkbosstrand Card 0619 KFC MELKBOSSTRAND MELKBOSSTRANDZAZA Banking App Prepaid Purchase VODACOM VODACOM Banking App Payment Mla Ministries MLA MINISTRIES Steers Table View Card 0619 STEERS TABLE VIEW WCZA SMS Notification Fee Ster Kinekor Cape Town Card 0619 STER KINEKOR BAYS42800 CAPE TOWN WCZA Poole 36274 Cape Town Card 0619 000 POOLE 36274CAPE TOWN WCZA Banking App Prepaid Purchase VODACOM VODACOM Ocean Basket Westbeach Card 0619 OCEAN BASKET TABLEBAY WESTBEACH ZA Banking App Prepaid Purchase CELLC CELLC Bwh Tableview Parkla Sunningdale Card 0619 BWH TABLEVIEW PARKLA SUNNINGDALE ZAZA Rush Extreme Sports Cape Town Card 0619 RUSH EXTREME SPORTS CAPE TOWN ZA Banking App Transfer to 1300852338 Cindy Orange CINDY ORANGE ATM Cash Withdrawal Adjustment SparkATM Eat Smile Atlantis 09ZA SMS Notification Fee Real Pizza Table View Card 0619 REAL PIZZA TABLE VIEW WCZA Cash Withdrawal Fee ATM Immediate Payment Fee Payment Fee Capitec to Capitec Banking App Payment Received Cindy CINDY ATM Cash Withdrawal Dnr Tableviewbaysidemal Card 5434 DNR TableviewBaysideMALCape Town 09ZA The Urban Store Atla Belair Card 5434 THE URBAN STORE ATLA BELAIR ZAZA Vans Office Supplies Montague Gard Card 5434 VANS OFFICE SUPPLIES MONTAGUE GARDZAZA Banking App Payment Received Cindy CINDY ATM Cash Withdrawal Fee Cash Withdrawal Fee ATM Debit Order Insufficient Funds Fee VIRGIN ACT4007510547 16820005500C REPAY 1563204840 Cash Withdrawal Fee ATM SMS Notification Fee SMS Notification Fee SMS Notification Fee Mr Price Tableview Card 5434 MR PRICE BAYSIDE TA TABLEVIEW ZAZA Banking App Transfer to 1575490259 Grandpa GRANDPA 15 On Orange Hotel Cape Town Card 0619 15 ON ORANGE HOTEL CAPE TOWN WCZA Engen Kaapstad Card 0619 ENGEN SUNNINGDALE CONV KAAPSTAD WCZA SMS Notification Fee Pick n Pay Sunningdale Card 0619 PNP SUNNINGDALE SUNNINGDALE ZAZA Monthly Account Admin Fee SMS Notification Fee Banking App Payment Mla Ministries MLA MINISTRIES 3 1 Tableview Card 0619 3 1 TABLEVIEW TABLEVIEW ZAZA Pick n Pay Sunningdale Card 0619 PNP CRP SUNNINGDALE SUNNINGDALE ZAZA Catch 22 Tableview Card 0619 CATCH 22 TABLEVIEW ZAZA Cash Withdrawal Pnp Fam Circle Centre Card 0619 PNP FAM CIRCLE CENTRE TABLEVIEW ZAZA Banking App Transfer to 1300852338 Cindy Orange CINDY ORANGE Cash Crusaders Parow Card 0619 CASH CRUSADERS PAROW WCZA Banking App Payment Mla Ministries MLA MINISTRIES SMS Notification Fee Woolworths Tableview Card 0619 WOOLWORTHS BAYSIDTRE TABLEVIEW ZAZA Total Cape Town Card 0619 TOTAL RA MELKBOS CAPE TOWN WCZA SMS Notification Fee Cash Withdrawal Fee ATM Payment Fee Correction Prepaid Purchase Cash Withdrawal Fee ATM Total Milnerton Card 0619 TOTAL PARKLANDS MILNERTON WCZA Banking App Transfer to 1377210829 Chrisharna CHRISHARNA ATM Cash Withdrawal Fee Online Purchase Uber Trip Help uber co Help uber com Card 0619 UBER TRIP HELP UBER CO help uber comNLNL SMS Notification Fee Engen Atlantis Card 0619 ENGEN SWARTLAND 1 STOP ATLANTIS WCZA Interest Received Payment Fee Flm Sandown Parklands Card 5434 FLM SANDOWN PARKLANDS ZAZA ATM Cash Withdrawal Fee Vans Office Supplies Montague Gard Card 5434 VANS OFFICE SUPPLIES MONTAGUE GARDZAZA Vans Office Supplies Montague Gard Card 5434 VANS OFFICE SUPPLIES MONTAGUE GARDZAZA Cash Withdrawal Fee ATM ATM Cash Withdrawal Sparkatm King Shaka Airport Card 5434 SparkATM King Shaka Airport Durban 04ZA Checkers Milnerton Card 5434 CheckersHyper Sandown MILNERTON ZA ATM Cash Withdrawal Milnerton 2 Card 5434 MILNERTON 2 CAPE TOWN WCZA Immediate Payment Fee Debit Order Fee ATM Cash Withdrawal Athlone Vangate M Card 5434 ATM Athlone Vangate M Athlone 09ZA Flm Sandown Parklands Card 5434 FLM SANDOWN PARKLANDS ZAZA OK MiniMark Melkbosstrand Card 5434 OK MINI MARK MELKBOSSTRANDZAZA

12:42:56.701 [main] DEBUG org.springframework.test.context.junit4.SpringJUnit4ClassRunner - SpringJUnit4ClassRunner constructor called with [class za.co.truid.collect.categorize.FuzzyCategorization] 12:42:56.712 [main] DEBUG org.springframework.test.context.BootstrapUtils - Instantiating CacheAwareContextLoaderDelegate from class [org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate] 12:42:56.719 [main] DEBUG org.springframework.test.context.BootstrapUtils - Instantiating BootstrapContext using constructor [public org.springframework.test.context.support.DefaultBootstrapContext(java.lang.Class,org.springframework.test.context.CacheAwareContextLoaderDelegate)] 12:42:56.738 [main] DEBUG org.springframework.test.context.BootstrapUtils - Instantiating TestContextBootstrapper for test class [za.co.truid.collect.categorize.FuzzyCategorization] from class [org.springframework.boot.test.context.SpringBootTestContextBootstrapper] 12:42:56.765 [main] DEBUG org.springframework.test.context.support.AbstractContextLoader - Did not detect default resource location for test class [za.co.truid.collect.categorize.FuzzyCategorization]: class path resource [za/co/truid/collect/categorize/FuzzyCategorization-context.xml] does not exist 12:42:56.765 [main] DEBUG org.springframework.test.context.support.AbstractContextLoader - Did not detect default resource location for test class [za.co.truid.collect.categorize.FuzzyCategorization]: class path resource [za/co/truid/collect/categorize/FuzzyCategorizationContext.groovy] does not exist 12:42:56.765 [main] INFO org.springframework.test.context.support.AbstractContextLoader - Could not detect default resource locations for test class [za.co.truid.collect.categorize.FuzzyCategorization]: no resource found for suffixes {-context.xml, Context.groovy}. 12:42:56.806 [main] DEBUG org.springframework.test.context.support.ActiveProfilesUtils - Could not find an 'annotation declaring class' for annotation type [org.springframework.test.context.ActiveProfiles] and class [za.co.truid.collect.categorize.FuzzyCategorization] 12:42:56.906 [main] DEBUG org.springframework.boot.test.context.SpringBootTestContextBootstrapper - @TestExecutionListeners is not present for class [za.co.truid.collect.categorize.FuzzyCategorization]: using defaults. 12:42:56.906 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Loaded default TestExecutionListener class names from location [META-INF/spring.factories]: [org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener, org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener, org.springframework.boot.test.autoconfigure.restdocs.RestDocsTestExecutionListener, org.springframework.boot.test.autoconfigure.web.client.MockRestServiceServerResetTestExecutionListener, org.springframework.boot.test.autoconfigure.web.servlet.MockMvcPrintOnlyOnFailureTestExecutionListener, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverTestExecutionListener, org.springframework.test.context.web.ServletTestExecutionListener, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener, org.springframework.test.context.support.DependencyInjectionTestExecutionListener, org.springframework.test.context.support.DirtiesContextTestExecutionListener, org.springframework.test.context.transaction.TransactionalTestExecutionListener, org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener] 12:42:56.924 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Using TestExecutionListeners: [org.springframework.test.context.web.ServletTestExecutionListener@14d3bc22, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener@12d4bf7e, org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener@4c1d9d4b, org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener@7b227d8d, org.springframework.test.context.support.DirtiesContextTestExecutionListener@7219ec67, org.springframework.test.context.transaction.TransactionalTestExecutionListener@45018215, org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener@65d6b83b, org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener@d706f19, org.springframework.boot.test.autoconfigure.restdocs.RestDocsTestExecutionListener@30b7c004, org.springframework.boot.test.autoconfigure.web.client.MockRestServiceServerResetTestExecutionListener@79efed2d, org.springframework.boot.test.autoconfigure.web.servlet.MockMvcPrintOnlyOnFailureTestExecutionListener@2928854b, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverTestExecutionListener@27ae2fd0] 12:42:56.926 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved @ProfileValueSourceConfiguration [null] for test class [za.co.truid.collect.categorize.FuzzyCategorization] 12:42:56.926 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved ProfileValueSource type [class org.springframework.test.annotation.SystemProfileValueSource] for class [za.co.truid.collect.categorize.FuzzyCategorization] 12:42:56.935 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved @ProfileValueSourceConfiguration [null] for test class [za.co.truid.collect.categorize.FuzzyCategorization] 12:42:56.935 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved ProfileValueSource type [class org.springframework.test.annotation.SystemProfileValueSource] for class [za.co.truid.collect.categorize.FuzzyCategorization] 12:42:56.936 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved @ProfileValueSourceConfiguration [null] for test class [za.co.truid.collect.categorize.FuzzyCategorization] 12:42:56.936 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved ProfileValueSource type [class org.springframework.test.annotation.SystemProfileValueSource] for class [za.co.truid.collect.categorize.FuzzyCategorization] 12:42:56.941 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved @ProfileValueSourceConfiguration [null] for test class [za.co.truid.collect.categorize.FuzzyCategorization] 12:42:56.942 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved ProfileValueSource type [class org.springframework.test.annotation.SystemProfileValueSource] for class [za.co.truid.collect.categorize.FuzzyCategorization] 12:42:56.945 [main] DEBUG org.springframework.test.context.support.AbstractDirtiesContextTestExecutionListener - Before test class: context [DefaultTestContext@5e316c74 testClass = FuzzyCategorization, testInstance = [null], testMethod = [null], testException = [null], mergedContextConfiguration = [WebMergedContextConfiguration@6d2a209c testClass = FuzzyCategorization, locations = '{}', classes = '{class za.co.truid.collect.categorize.support.CategorizeApp}', contextInitializerClasses = '[]', activeProfiles = '{}', propertySourceLocations = '{}', propertySourceProperties = '{org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true}', contextCustomizers = set[org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@2b2948e2, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@3b0143d3, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@578486a3, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizerFactory$Customizer@4bbfb90a], resourceBasePath = 'src/main/webapp', contextLoader = 'org.springframework.boot.test.context.SpringBootContextLoader', parent = [null]], attributes = map['org.springframework.test.context.web.ServletTestExecutionListener.activateListener' -> true]], class annotated with @DirtiesContext [false] with mode [null]. 12:42:56.945 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved @ProfileValueSourceConfiguration [null] for test class [za.co.truid.collect.categorize.FuzzyCategorization] 12:42:56.945 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved ProfileValueSource type [class org.springframework.test.annotation.SystemProfileValueSource] for class [za.co.truid.collect.categorize.FuzzyCategorization] 12:42:56.971 [main] DEBUG org.springframework.test.context.support.TestPropertySourceUtils - Adding inlined properties to environment: {spring.jmx.enabled=false, org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true, server.port=-1}

. _ _ /\ / '_ () \ \ \ \ ( ( )\ | ' | '| | ' \/ ` | \ \ \ \ \/ _)| |)| | | | | || (| | ) ) ) ) ' |__| .|| ||| |\, | / / / / =========|_|==============|__/=//// :: Spring Boot :: (v2.1.6.RELEASE)

2019-12-03 12:42:57.202 INFO 90875 --- [ main] z.c.t.c.categorize.FuzzyCategorization : Starting FuzzyCategorization on christian-macpro.local with PID 90875 (started by centipod in /Users/centipod/Development/git/repositories/collect/collect/collect-categorize) 2019-12-03 12:42:57.203 DEBUG 90875 --- [ main] z.c.t.c.categorize.FuzzyCategorization : Running with Spring Boot v2.1.6.RELEASE, Spring v5.1.8.RELEASE 2019-12-03 12:42:57.203 INFO 90875 --- [ main] z.c.t.c.categorize.FuzzyCategorization : No active profile set, falling back to default profiles: default 2019-12-03 12:42:57.559 INFO 90875 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data repositories in DEFAULT mode. 2019-12-03 12:42:57.652 INFO 90875 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 87ms. Found 24 repository interfaces. 2019-12-03 12:42:58.110 INFO 90875 --- [ main] z.c.t.c.model.spring.PersistenceConfig : Using database server: root@localhost 2019-12-03 12:42:58.259 INFO 90875 --- [ main] org.hibernate.Version : HHH000412: Hibernate Core {5.2.16.Final} 2019-12-03 12:42:58.260 INFO 90875 --- [ main] org.hibernate.cfg.Environment : HHH000206: hibernate.properties not found 2019-12-03 12:42:58.292 INFO 90875 --- [ main] o.hibernate.annotations.common.Version : HCANN000001: Hibernate Commons Annotations {5.0.1.Final} 2019-12-03 12:42:58.363 INFO 90875 --- [ main] com.zaxxer.hikari.HikariDataSource : Collect_MySQL_Local_Admin - Starting... 2019-12-03 12:42:58.536 INFO 90875 --- [ main] com.zaxxer.hikari.HikariDataSource : Collect_MySQL_Local_Admin - Start completed. 2019-12-03 12:42:58.550 INFO 90875 --- [ main] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.MySQL5Dialect 2019-12-03 12:42:59.824 INFO 90875 --- [ main] o.h.h.i.QueryTranslatorFactoryInitiator : HHH000397: Using ASTQueryTranslatorFactory 2019-12-03 12:43:00.308 INFO 90875 --- [ main] z.c.t.c.categorize.FuzzyCategorization : Started FuzzyCategorization in 3.33 seconds (JVM running for 3.924)

{[{'Cash Withdrawal Fee ATM'}]} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 0.75} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 0.75} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0}

{[{'ATM Cash Withdrawal Parklands Emporium Card 0619 ATM Parklands Emporium Parkslands 09ZA'}]} Matching {{[{'ATM Cash Withdrawal Parklands Emporium Card 0619 ATM Parklands Emporium Parkslands 09ZA'}]}, 0.5555555555555556} Matching {{[{'ATM Cash Withdrawal Parklands Emporium Card 0619 ATM Parklands Emporium Parkslands 09ZA'}]}, 0.6666666666666666} Matching {{[{'ATM Cash Withdrawal Parklands Emporium Card 0619 ATM Parklands Emporium Parkslands 09ZA'}]}, 0.5555555555555556} Matching {{[{'ATM Cash Withdrawal Parklands Emporium Card 0619 ATM Parklands Emporium Parkslands 09ZA'}]}, 0.6} Matching {{[{'ATM Cash Withdrawal Parklands Emporium Card 0619 ATM Parklands Emporium Parkslands 09ZA'}]}, 1.0} Matching {{[{'ATM Cash Withdrawal Parklands Emporium Card 0619 ATM Parklands Emporium Parkslands 09ZA'}]}, 0.6666666666666666} Matching {{[{'ATM Cash Withdrawal Parklands Emporium Card 0619 ATM Parklands Emporium Parkslands 09ZA'}]}, 1.0}

{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 1.0} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 1.0} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 1.0} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 1.0} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 0.8} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 1.0} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 1.0} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 1.0} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 1.0} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 1.0} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 1.0} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 1.0} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 1.0} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 1.0} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 0.8} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 1.0} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 1.0} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 1.0} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 0.8} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 1.0} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 1.0} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 1.0} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 1.0} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 1.0} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 1.0} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 1.0}

{[{'ATM Cash Withdrawal Malmesbury De Bron Card 0619 ATM Malmesbury De Bron Malmesbury 09ZA'}]} Matching {{[{'ATM Cash Withdrawal Malmesbury De Bron Card 0619 ATM Malmesbury De Bron Malmesbury 09ZA'}]}, 0.6666666666666666} Matching {{[{'ATM Cash Withdrawal Malmesbury De Bron Card 0619 ATM Malmesbury De Bron Malmesbury 09ZA'}]}, 0.6666666666666666} Matching {{[{'ATM Cash Withdrawal Malmesbury De Bron Card 0619 ATM Malmesbury De Bron Malmesbury 09ZA'}]}, 0.6666666666666666} Matching {{[{'ATM Cash Withdrawal Malmesbury De Bron Card 0619 ATM Malmesbury De Bron Malmesbury 09ZA'}]}, 0.5555555555555556} Matching {{[{'ATM Cash Withdrawal Malmesbury De Bron Card 0619 ATM Malmesbury De Bron Malmesbury 09ZA'}]}, 0.6666666666666666} Matching {{[{'ATM Cash Withdrawal Malmesbury De Bron Card 0619 ATM Malmesbury De Bron Malmesbury 09ZA'}]}, 0.5555555555555556} Matching {{[{'ATM Cash Withdrawal Malmesbury De Bron Card 0619 ATM Malmesbury De Bron Malmesbury 09ZA'}]}, 0.6}

{[{'Bwh Tableview Parkla Sunningdale Card 0619 BWH TABLEVIEW PARKLA SUNNINGDALE ZAZA'}]} Matching {{[{'Bwh Tableview Parkla Sunningdale Card 0619 BWH TABLEVIEW PARKLA SUNNINGDALE ZAZA'}]}, 1.0} Matching {{[{'Bwh Tableview Parkla Sunningdale Card 0619 BWH TABLEVIEW PARKLA SUNNINGDALE ZAZA'}]}, 0.5714285714285714} Matching {{[{'Bwh Tableview Parkla Sunningdale Card 0619 BWH TABLEVIEW PARKLA SUNNINGDALE ZAZA'}]}, 0.5714285714285714} Matching {{[{'Bwh Tableview Parkla Sunningdale Card 0619 BWH TABLEVIEW PARKLA SUNNINGDALE ZAZA'}]}, 0.5714285714285714} Matching {{[{'Bwh Tableview Parkla Sunningdale Card 0619 BWH TABLEVIEW PARKLA SUNNINGDALE ZAZA'}]}, 0.5714285714285714} Matching {{[{'Bwh Tableview Parkla Sunningdale Card 0619 BWH TABLEVIEW PARKLA SUNNINGDALE ZAZA'}]}, 0.5714285714285714} Matching {{[{'Bwh Tableview Parkla Sunningdale Card 0619 BWH TABLEVIEW PARKLA SUNNINGDALE ZAZA'}]}, 1.0} Matching {{[{'Bwh Tableview Parkla Sunningdale Card 0619 BWH TABLEVIEW PARKLA SUNNINGDALE ZAZA'}]}, 0.5714285714285714} Matching {{[{'Bwh Tableview Parkla Sunningdale Card 0619 BWH TABLEVIEW PARKLA SUNNINGDALE ZAZA'}]}, 0.5714285714285714}

{[{'Vasa Table Bay Mall Table View Card 0619 VASA TABLE BAY MALL TABLE VIEW WCZA'}]} Matching {{[{'Vasa Table Bay Mall Table View Card 0619 VASA TABLE BAY MALL TABLE VIEW WCZA'}]}, 0.75} Matching {{[{'Vasa Table Bay Mall Table View Card 0619 VASA TABLE BAY MALL TABLE VIEW WCZA'}]}, 0.625} Matching {{[{'Vasa Table Bay Mall Table View Card 0619 VASA TABLE BAY MALL TABLE VIEW WCZA'}]}, 0.625} Matching {{[{'Vasa Table Bay Mall Table View Card 0619 VASA TABLE BAY MALL TABLE VIEW WCZA'}]}, 0.625} Matching {{[{'Vasa Table Bay Mall Table View Card 0619 VASA TABLE BAY MALL TABLE VIEW WCZA'}]}, 0.625} Matching {{[{'Vasa Table Bay Mall Table View Card 0619 VASA TABLE BAY MALL TABLE VIEW WCZA'}]}, 0.6}

{[{'Rush Extreme Sports Cape Town Card 0619 RUSH EXTREME SPORTS CAPE TOWN ZA'}]} Matching {{[{'Rush Extreme Sports Cape Town Card 0619 RUSH EXTREME SPORTS CAPE TOWN ZA'}]}, 1.0} Matching {{[{'Rush Extreme Sports Cape Town Card 0619 RUSH EXTREME SPORTS CAPE TOWN ZA'}]}, 0.625} Matching {{[{'Rush Extreme Sports Cape Town Card 0619 RUSH EXTREME SPORTS CAPE TOWN ZA'}]}, 0.5555555555555556} Matching {{[{'Rush Extreme Sports Cape Town Card 0619 RUSH EXTREME SPORTS CAPE TOWN ZA'}]}, 0.625} Matching {{[{'Rush Extreme Sports Cape Town Card 0619 RUSH EXTREME SPORTS CAPE TOWN ZA'}]}, 0.625} Matching {{[{'Rush Extreme Sports Cape Town Card 0619 RUSH EXTREME SPORTS CAPE TOWN ZA'}]}, 0.625} Matching {{[{'Rush Extreme Sports Cape Town Card 0619 RUSH EXTREME SPORTS CAPE TOWN ZA'}]}, 0.625}

{[{'SMS Notification Fee'}]} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0}

{[{'ATM Cash Withdrawal Bp Airport Card 0619 BP AIRPORT CAPE TOWN WCZA'}]} Matching {{[{'ATM Cash Withdrawal Bp Airport Card 0619 BP AIRPORT CAPE TOWN WCZA'}]}, 0.7} Matching {{[{'ATM Cash Withdrawal Bp Airport Card 0619 BP AIRPORT CAPE TOWN WCZA'}]}, 0.7} Matching {{[{'ATM Cash Withdrawal Bp Airport Card 0619 BP AIRPORT CAPE TOWN WCZA'}]}, 0.6} Matching {{[{'ATM Cash Withdrawal Bp Airport Card 0619 BP AIRPORT CAPE TOWN WCZA'}]}, 0.5454545454545454} Matching {{[{'ATM Cash Withdrawal Bp Airport Card 0619 BP AIRPORT CAPE TOWN WCZA'}]}, 0.7} Matching {{[{'ATM Cash Withdrawal Bp Airport Card 0619 BP AIRPORT CAPE TOWN WCZA'}]}, 0.6666666666666666} Matching {{[{'ATM Cash Withdrawal Bp Airport Card 0619 BP AIRPORT CAPE TOWN WCZA'}]}, 0.6363636363636364} Matching {{[{'ATM Cash Withdrawal Bp Airport Card 0619 BP AIRPORT CAPE TOWN WCZA'}]}, 0.8} Matching {{[{'ATM Cash Withdrawal Bp Airport Card 0619 BP AIRPORT CAPE TOWN WCZA'}]}, 0.5454545454545454} Matching {{[{'ATM Cash Withdrawal Bp Airport Card 0619 BP AIRPORT CAPE TOWN WCZA'}]}, 0.6} Matching {{[{'ATM Cash Withdrawal Bp Airport Card 0619 BP AIRPORT CAPE TOWN WCZA'}]}, 0.5833333333333334} Matching {{[{'ATM Cash Withdrawal Bp Airport Card 0619 BP AIRPORT CAPE TOWN WCZA'}]}, 0.6363636363636364} Matching {{[{'ATM Cash Withdrawal Bp Airport Card 0619 BP AIRPORT CAPE TOWN WCZA'}]}, 0.7272727272727273}

{[{'SMS Notification Fee'}]} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0}

{[{'Payment Fee'}]} Matching {{[{'Payment Fee'}]}, 0.6666666666666666} Matching {{[{'Payment Fee'}]}, 0.6666666666666666} Matching {{[{'Payment Fee'}]}, 1.0} Matching {{[{'Payment Fee'}]}, 1.0} Matching {{[{'Payment Fee'}]}, 1.0} Matching {{[{'Payment Fee'}]}, 1.0} Matching {{[{'Payment Fee'}]}, 1.0} Matching {{[{'Payment Fee'}]}, 1.0} Matching {{[{'Payment Fee'}]}, 1.0} Matching {{[{'Payment Fee'}]}, 1.0} Matching {{[{'Payment Fee'}]}, 1.0} Matching {{[{'Payment Fee'}]}, 1.0} Matching {{[{'Payment Fee'}]}, 1.0}

{[{'Banking App Payment Received Loan Shares LOAN SHARES'}]} Matching {{[{'Banking App Payment Received Loan Shares LOAN SHARES'}]}, 0.6666666666666666} Matching {{[{'Banking App Payment Received Loan Shares LOAN SHARES'}]}, 0.7142857142857143} Matching {{[{'Banking App Payment Received Loan Shares LOAN SHARES'}]}, 0.6666666666666666} Matching {{[{'Banking App Payment Received Loan Shares LOAN SHARES'}]}, 0.6666666666666666} Matching {{[{'Banking App Payment Received Loan Shares LOAN SHARES'}]}, 0.8333333333333334}

{[{'Mr Video Parklands Card 0619 MR VIDEO JUNCTION PARKLANDS ZA'}]} Matching {{[{'Mr Video Parklands Card 0619 MR VIDEO JUNCTION PARKLANDS ZA'}]}, 0.7142857142857143}

{[{'Pick n Pay Sunningdale Card 5434 PNP CRP SUNNINGDALE SUNNINGDALE ZAZA'}]} Matching {{[{'Pick n Pay Sunningdale Card 5434 PNP CRP SUNNINGDALE SUNNINGDALE ZAZA'}]}, 0.5454545454545454} Matching {{[{'Pick n Pay Sunningdale Card 5434 PNP CRP SUNNINGDALE SUNNINGDALE ZAZA'}]}, 0.7777777777777778} Matching {{[{'Pick n Pay Sunningdale Card 5434 PNP CRP SUNNINGDALE SUNNINGDALE ZAZA'}]}, 0.8888888888888888} Matching {{[{'Pick n Pay Sunningdale Card 5434 PNP CRP SUNNINGDALE SUNNINGDALE ZAZA'}]}, 1.0} Matching {{[{'Pick n Pay Sunningdale Card 5434 PNP CRP SUNNINGDALE SUNNINGDALE ZAZA'}]}, 0.5454545454545454}

{[{'ATM Cash Withdrawal Aa04 Cnr Charl Uys B Card 0619 AA04 Cnr Charl Uys B Atlantis WCZA'}]} Matching {{[{'ATM Cash Withdrawal Aa04 Cnr Charl Uys B Card 0619 AA04 Cnr Charl Uys B Atlantis WCZA'}]}, 0.9166666666666666}

{[{'Banking App Payment Caban Investments Li CABAN INVESTMENTS LI'}]} Matching {{[{'Banking App Payment Caban Investments Li CABAN INVESTMENTS LI'}]}, 1.0} Matching {{[{'Banking App Payment Caban Investments Li CABAN INVESTMENTS LI'}]}, 1.0}

{[{'ATM Cash Withdrawal Milnerton 3 Card 5434 MILNERTON 3 CAPE TOWN WCZA'}]} Matching {{[{'ATM Cash Withdrawal Milnerton 3 Card 5434 MILNERTON 3 CAPE TOWN WCZA'}]}, 0.5833333333333334} Matching {{[{'ATM Cash Withdrawal Milnerton 3 Card 5434 MILNERTON 3 CAPE TOWN WCZA'}]}, 0.5454545454545454} Matching {{[{'ATM Cash Withdrawal Milnerton 3 Card 5434 MILNERTON 3 CAPE TOWN WCZA'}]}, 0.9} Matching {{[{'ATM Cash Withdrawal Milnerton 3 Card 5434 MILNERTON 3 CAPE TOWN WCZA'}]}, 0.7} Matching {{[{'ATM Cash Withdrawal Milnerton 3 Card 5434 MILNERTON 3 CAPE TOWN WCZA'}]}, 0.6} Matching {{[{'ATM Cash Withdrawal Milnerton 3 Card 5434 MILNERTON 3 CAPE TOWN WCZA'}]}, 0.5454545454545454} Matching {{[{'ATM Cash Withdrawal Milnerton 3 Card 5434 MILNERTON 3 CAPE TOWN WCZA'}]}, 0.7} Matching {{[{'ATM Cash Withdrawal Milnerton 3 Card 5434 MILNERTON 3 CAPE TOWN WCZA'}]}, 0.6} Matching {{[{'ATM Cash Withdrawal Milnerton 3 Card 5434 MILNERTON 3 CAPE TOWN WCZA'}]}, 0.5833333333333334} Matching {{[{'ATM Cash Withdrawal Milnerton 3 Card 5434 MILNERTON 3 CAPE TOWN WCZA'}]}, 0.6} Matching {{[{'ATM Cash Withdrawal Milnerton 3 Card 5434 MILNERTON 3 CAPE TOWN WCZA'}]}, 0.5454545454545454} Matching {{[{'ATM Cash Withdrawal Milnerton 3 Card 5434 MILNERTON 3 CAPE TOWN WCZA'}]}, 0.6363636363636364}

{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 1.0} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 1.0} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 1.0} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 1.0} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 1.0} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 0.8} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 1.0} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 1.0} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 1.0} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 1.0} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 1.0} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 1.0} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 1.0} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 1.0} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 0.8} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 1.0} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 1.0} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 1.0} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 0.8} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 1.0} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 1.0} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 1.0} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 1.0} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 1.0} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 1.0} Matching {{[{'Banking App Prepaid Purchase VODACOM VODACOM'}]}, 1.0}

{[{'Gozone Cape Town Card 0619 Gozone Cape Town ZA'}]} Matching {{[{'Gozone Cape Town Card 0619 Gozone Cape Town ZA'}]}, 0.5555555555555556} Matching {{[{'Gozone Cape Town Card 0619 Gozone Cape Town ZA'}]}, 0.625} Matching {{[{'Gozone Cape Town Card 0619 Gozone Cape Town ZA'}]}, 0.625} Matching {{[{'Gozone Cape Town Card 0619 Gozone Cape Town ZA'}]}, 0.625} Matching {{[{'Gozone Cape Town Card 0619 Gozone Cape Town ZA'}]}, 0.625} Matching {{[{'Gozone Cape Town Card 0619 Gozone Cape Town ZA'}]}, 0.8333333333333334} Matching {{[{'Gozone Cape Town Card 0619 Gozone Cape Town ZA'}]}, 1.0} Matching {{[{'Gozone Cape Town Card 0619 Gozone Cape Town ZA'}]}, 0.8333333333333334}

{[{'Till Cash Withdrawal Fee'}]} Matching {{[{'Till Cash Withdrawal Fee'}]}, 0.75} Matching {{[{'Till Cash Withdrawal Fee'}]}, 0.75} Matching {{[{'Till Cash Withdrawal Fee'}]}, 0.75} Matching {{[{'Till Cash Withdrawal Fee'}]}, 0.75} Matching {{[{'Till Cash Withdrawal Fee'}]}, 0.75} Matching {{[{'Till Cash Withdrawal Fee'}]}, 0.75} Matching {{[{'Till Cash Withdrawal Fee'}]}, 0.75} Matching {{[{'Till Cash Withdrawal Fee'}]}, 0.75} Matching {{[{'Till Cash Withdrawal Fee'}]}, 0.75} Matching {{[{'Till Cash Withdrawal Fee'}]}, 0.75} Matching {{[{'Till Cash Withdrawal Fee'}]}, 0.75} Matching {{[{'Till Cash Withdrawal Fee'}]}, 0.75} Matching {{[{'Till Cash Withdrawal Fee'}]}, 0.75} Matching {{[{'Till Cash Withdrawal Fee'}]}, 0.75} Matching {{[{'Till Cash Withdrawal Fee'}]}, 0.75} Matching {{[{'Till Cash Withdrawal Fee'}]}, 0.75} Matching {{[{'Till Cash Withdrawal Fee'}]}, 0.75} Matching {{[{'Till Cash Withdrawal Fee'}]}, 0.75} Matching {{[{'Till Cash Withdrawal Fee'}]}, 0.75} Matching {{[{'Till Cash Withdrawal Fee'}]}, 0.75} Matching {{[{'Till Cash Withdrawal Fee'}]}, 0.75} Matching {{[{'Till Cash Withdrawal Fee'}]}, 0.75} Matching {{[{'Till Cash Withdrawal Fee'}]}, 0.75} Matching {{[{'Till Cash Withdrawal Fee'}]}, 0.75} Matching {{[{'Till Cash Withdrawal Fee'}]}, 0.75} Matching {{[{'Till Cash Withdrawal Fee'}]}, 1.0} Matching {{[{'Till Cash Withdrawal Fee'}]}, 0.75} Matching {{[{'Till Cash Withdrawal Fee'}]}, 0.75} Matching {{[{'Till Cash Withdrawal Fee'}]}, 0.75} Matching {{[{'Till Cash Withdrawal Fee'}]}, 0.75} Matching {{[{'Till Cash Withdrawal Fee'}]}, 0.75} Matching {{[{'Till Cash Withdrawal Fee'}]}, 0.75}

{[{'Cash Withdrawal Dnr Atlantis City Ls85 Card 0619 DNR Atlantis City LS85 Atlantis 09ZA'}]} Matching {{[{'Cash Withdrawal Dnr Atlantis City Ls85 Card 0619 DNR Atlantis City LS85 Atlantis 09ZA'}]}, 0.6} Matching {{[{'Cash Withdrawal Dnr Atlantis City Ls85 Card 0619 DNR Atlantis City LS85 Atlantis 09ZA'}]}, 0.5555555555555556} Matching {{[{'Cash Withdrawal Dnr Atlantis City Ls85 Card 0619 DNR Atlantis City LS85 Atlantis 09ZA'}]}, 0.5555555555555556} Matching {{[{'Cash Withdrawal Dnr Atlantis City Ls85 Card 0619 DNR Atlantis City LS85 Atlantis 09ZA'}]}, 0.5555555555555556} Matching {{[{'Cash Withdrawal Dnr Atlantis City Ls85 Card 0619 DNR Atlantis City LS85 Atlantis 09ZA'}]}, 0.5555555555555556} Matching {{[{'Cash Withdrawal Dnr Atlantis City Ls85 Card 0619 DNR Atlantis City LS85 Atlantis 09ZA'}]}, 0.5555555555555556}

{[{'Cash Withdrawal Fee ATM'}]} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 0.75} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 0.75} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0} Matching {{[{'Cash Withdrawal Fee ATM'}]}, 1.0}

{[{'ATM Cash Withdrawal Aac4 Melkbos Strand Rd Card 0619 AAC4 Melkbos strand rd Melkbos WCZA'}]} Matching {{[{'ATM Cash Withdrawal Aac4 Melkbos Strand Rd Card 0619 AAC4 Melkbos strand rd Melkbos WCZA'}]}, 0.6} Matching {{[{'ATM Cash Withdrawal Aac4 Melkbos Strand Rd Card 0619 AAC4 Melkbos strand rd Melkbos WCZA'}]}, 0.7272727272727273} Matching {{[{'ATM Cash Withdrawal Aac4 Melkbos Strand Rd Card 0619 AAC4 Melkbos strand rd Melkbos WCZA'}]}, 0.5454545454545454} Matching {{[{'ATM Cash Withdrawal Aac4 Melkbos Strand Rd Card 0619 AAC4 Melkbos strand rd Melkbos WCZA'}]}, 0.6} Matching {{[{'ATM Cash Withdrawal Aac4 Melkbos Strand Rd Card 0619 AAC4 Melkbos strand rd Melkbos WCZA'}]}, 0.9} Matching {{[{'ATM Cash Withdrawal Aac4 Melkbos Strand Rd Card 0619 AAC4 Melkbos strand rd Melkbos WCZA'}]}, 0.5454545454545454} Matching {{[{'ATM Cash Withdrawal Aac4 Melkbos Strand Rd Card 0619 AAC4 Melkbos strand rd Melkbos WCZA'}]}, 0.5454545454545454}

{[{'ATM Cash Withdrawal Aac4 2 Link Rd Card 0619 AAC4 2 Link Rd Tableview WCZA'}]} Matching {{[{'ATM Cash Withdrawal Aac4 2 Link Rd Card 0619 AAC4 2 Link Rd Tableview WCZA'}]}, 0.7272727272727273} Matching {{[{'ATM Cash Withdrawal Aac4 2 Link Rd Card 0619 AAC4 2 Link Rd Tableview WCZA'}]}, 0.5454545454545454} Matching {{[{'ATM Cash Withdrawal Aac4 2 Link Rd Card 0619 AAC4 2 Link Rd Tableview WCZA'}]}, 0.5454545454545454} Matching {{[{'ATM Cash Withdrawal Aac4 2 Link Rd Card 0619 AAC4 2 Link Rd Tableview WCZA'}]}, 0.5454545454545454} Matching {{[{'ATM Cash Withdrawal Aac4 2 Link Rd Card 0619 AAC4 2 Link Rd Tableview WCZA'}]}, 0.5454545454545454} Matching {{[{'ATM Cash Withdrawal Aac4 2 Link Rd Card 0619 AAC4 2 Link Rd Tableview WCZA'}]}, 0.5454545454545454} Matching {{[{'ATM Cash Withdrawal Aac4 2 Link Rd Card 0619 AAC4 2 Link Rd Tableview WCZA'}]}, 0.6363636363636364} Matching {{[{'ATM Cash Withdrawal Aac4 2 Link Rd Card 0619 AAC4 2 Link Rd Tableview WCZA'}]}, 0.5454545454545454} Matching {{[{'ATM Cash Withdrawal Aac4 2 Link Rd Card 0619 AAC4 2 Link Rd Tableview WCZA'}]}, 0.5454545454545454}

{[{'Toys R Us Milnerton Card 0619 TOYS R US TABLE BAY MA MILNERTON WCZA'}]} Matching {{[{'Toys R Us Milnerton Card 0619 TOYS R US TABLE BAY MA MILNERTON WCZA'}]}, 1.0}

{[{'Banking App Prepaid Purchase ELECTRICITY ELECTRICITY'}]} Matching {{[{'Banking App Prepaid Purchase ELECTRICITY ELECTRICITY'}]}, 0.8} Matching {{[{'Banking App Prepaid Purchase ELECTRICITY ELECTRICITY'}]}, 0.8} Matching {{[{'Banking App Prepaid Purchase ELECTRICITY ELECTRICITY'}]}, 0.8} Matching {{[{'Banking App Prepaid Purchase ELECTRICITY ELECTRICITY'}]}, 0.8} Matching {{[{'Banking App Prepaid Purchase ELECTRICITY ELECTRICITY'}]}, 0.8} Matching {{[{'Banking App Prepaid Purchase ELECTRICITY ELECTRICITY'}]}, 0.8} Matching {{[{'Banking App Prepaid Purchase ELECTRICITY ELECTRICITY'}]}, 0.8} Matching {{[{'Banking App Prepaid Purchase ELECTRICITY ELECTRICITY'}]}, 0.8} Matching {{[{'Banking App Prepaid Purchase ELECTRICITY ELECTRICITY'}]}, 0.8} Matching {{[{'Banking App Prepaid Purchase ELECTRICITY ELECTRICITY'}]}, 0.8} Matching {{[{'Banking App Prepaid Purchase ELECTRICITY ELECTRICITY'}]}, 0.8} Matching {{[{'Banking App Prepaid Purchase ELECTRICITY ELECTRICITY'}]}, 0.8} Matching {{[{'Banking App Prepaid Purchase ELECTRICITY ELECTRICITY'}]}, 0.8} Matching {{[{'Banking App Prepaid Purchase ELECTRICITY ELECTRICITY'}]}, 0.8} Matching {{[{'Banking App Prepaid Purchase ELECTRICITY ELECTRICITY'}]}, 0.8} Matching {{[{'Banking App Prepaid Purchase ELECTRICITY ELECTRICITY'}]}, 0.8} Matching {{[{'Banking App Prepaid Purchase ELECTRICITY ELECTRICITY'}]}, 0.8} Matching {{[{'Banking App Prepaid Purchase ELECTRICITY ELECTRICITY'}]}, 0.8} Matching {{[{'Banking App Prepaid Purchase ELECTRICITY ELECTRICITY'}]}, 0.8} Matching {{[{'Banking App Prepaid Purchase ELECTRICITY ELECTRICITY'}]}, 0.8} Matching {{[{'Banking App Prepaid Purchase ELECTRICITY ELECTRICITY'}]}, 0.8} Matching {{[{'Banking App Prepaid Purchase ELECTRICITY ELECTRICITY'}]}, 0.8} Matching {{[{'Banking App Prepaid Purchase ELECTRICITY ELECTRICITY'}]}, 0.8} Matching {{[{'Banking App Prepaid Purchase ELECTRICITY ELECTRICITY'}]}, 0.8} Matching {{[{'Banking App Prepaid Purchase ELECTRICITY ELECTRICITY'}]}, 0.8} Matching {{[{'Banking App Prepaid Purchase ELECTRICITY ELECTRICITY'}]}, 0.8}

{[{'SMS Notification Fee'}]} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0}

{[{'SMS Notification Fee'}]} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} Matching {{[{'SMS Notification Fee'}]}, 1.0} M

manishobhatia commented 4 years ago

Hi Christian,

The code you shared is fine. I think the issue is with visualization of the result in print statement.

If you can replace the last println with this, you should see correct results

System.out.println("Matching " + doc.getMatchedWith().toString() + " Score : " + doc.getScore().getResult());

We were printing the "Match" object instead of the Document it matched with. Hope this helps

centipod commented 4 years ago

Good morning, Manish

Thank you for checking. But if we were printing the Match object, where does the odd score come from?

Thanks!

Sent while on the road. Excuse occasional typos.

On 7 Dec 2019, at 03:09, Manish Bhatia notifications@github.com wrote:

 Hi Christian,

The code you shared is fine. I think the issue is with visualization of the result in print statement.

If you can replace the last println with this, you should see correct results

System.out.println("Matching " + doc.getMatchedWith().toString() + " Score : " + doc.getScore().getResult());

We were printing the "Match" object instead of the Document it matched with. Hope this helps

— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub, or unsubscribe.

centipod commented 4 years ago

Hi Manish,

Many thanks for your support in this. I have run some more tests and results are great!

Would you be interested in further testing results? We have a very large dataset to play with and I am going to run all of that through the fuzzy matcher.

Christian


Christian Schuit Centipod

christian.schuit@centipod.nlmailto:christian.schuit@centipod.nl +31 (0)623 386 645 +27 (0)72 946 8830 www.centipod.nlhttp://www.centipod.nl

From: Manish Bhatia notifications@github.com Reply to: intuit/fuzzy-matcher reply@reply.github.com Date: Saturday, 7 December 2019 at 03:09 To: intuit/fuzzy-matcher fuzzy-matcher@noreply.github.com Cc: ChristianSchuit christian.schuit@gmail.com, State change state_change@noreply.github.com Subject: Re: [intuit/fuzzy-matcher] Inconsistency in matching results (#18)

Hi Christian,

The code you shared is fine. I think the issue is with visualization of the result in print statement.

If you can replace the last println with this, you should see correct results

System.out.println("Matching " + doc.getMatchedWith().toString() + " Score : " + doc.getScore().getResult());

We were printing the "Match" object instead of the Document it matched with. Hope this helps

— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHubhttps://github.com/intuit/fuzzy-matcher/issues/18?email_source=notifications&email_token=ABLIWUKW6OKBD34MYSTUZYDQXKWOHA5CNFSM4JUEC5A2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEGFG25I#issuecomment-562720117, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ABLIWUPBZH263D3XPSWAO4DQXKWOHANCNFSM4JUEC5AQ.

centipod commented 4 years ago

Great support from this team. Many thanks!