producten aan elkaar linken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

PHP er

PHP er

15/04/2024 14:20:09
Quote Anchor link
hoi,

ik heb een vraag. wij zijn studenten van het windesheim, en zijn bezig met een schoolopdracht waarbij we een excel/csv (of: een lijst, niet per se een excel / csv) met daarin de producten van gamma, praxis, hornbach.

we willen nu de producten aan elkaar linken, zodat de producten allemaal een groep hebben en op die manier we de 'goedkoopste' eruit kunnen filteren. maar, wij lopen vast.

we hebben ons verdiept in de fuzzy search methode en Levenshtein methode, maar dat is niet betrouwbaar genoeg.

Twee regels uit ons bestand:

- Sencys universele schroef RK TX zwart 4x16mm 30st. - 2.19 euro (PRAXIS)
- universele schroef RK TX zwart 4x16mm 30 stuks Sencys - 2.40 euro (GAMMA)

We hebben onder meer het merk en de prijs er al uitgefilterd, maar alsnog - geen betrouwbaar resultaat.

weet iemand hoe wij het best te werk kunnen gaan? want, we lopen er in vast, een hoofdpijndossier lijkt het wel.

we hebben vooral gekeken maar methodes via PHP, maar misschien moeten we wel in de python-richting zoeken? geen idee.
 
PHP hulp

PHP hulp

29/04/2024 19:30:26
 
Ad Fundum

Ad Fundum

15/04/2024 15:43:44
Quote Anchor link
Daar heb je toch niet zoveel fantasie voor nodig?
Je koppelt automatisch op basis van waarschijnlijkheid. Maar wat je wilt is zoveel mogelijk zekerheid.

- eerst ga je per productregel de kenmerken af (explode -functie)
- je telt hoe vaak ze met andere regels overeenkomen
- onderzoek de kenmerken die niet matchen, mogelijk hebben ze andere schrijfwijzen ("30st." vs "30 stuks")
- maak een koppeling tussen deze kenmerken en vergelijk de regels opnieuw

Op deze manier heb je snel koppelingen tussen alles wat te koppelen valt.
De taal waarin je het doet maakt niet uit. Kan PHP zijn, Python, JavaScript, Rust, ... waar je maar gelukkig van wordt.
 
Ward van der Put
Moderator

Ward van der Put

16/04/2024 07:56:08
Quote Anchor link
Een algoritme van Ian Oliver berekent recursief de overeenkomst tussen twee strings door substrings te vergelijken:

The number of matching characters is calculated by finding the longest first common substring, and then doing this for the prefixes and the suffixes, recursively. The lengths of all found common substrings are added.

In PHP heeft dit algoritme de logische naam similar_text() gekregen.
 
Ad Fundum

Ad Fundum

16/04/2024 14:57:53
Quote Anchor link
Da's een goeie, Ward. Er zijn van die functies waar ik categorisch overheen heb gelezen, en dit is er eentje van.

Als ik in de documentatie en reacties kijk, valt wel gelijk iets op: als je de eerste var met de twee vergelijkt krijg je andere gelijkheidspercentages dan wanneer je de tweede met de eerste vergelijkt.
Iemand heeft daar zijn eigen similarity functie gepubliceerd, en er is ook nog zoiets als levenshtein() wat ook genoemd wordt.

Maar als je 10000-en producten moet vergelijken met nog eens 10000-en producten, is een waarschijnlijkheid dat ze hetzelfde zijn dan wel genoeg?
Ik denk dat je met beide methoden er niet aan ontkomt om alles nog een keer handmatig reviewen in een rekenblad.

Update: op rosettacode.org staan ook veel algoritmen, met source code in bijna elke taal.
Bijvoorbeeld de Jaro-similarity (nog geen PHP inplementatie): https://rosettacode.org/wiki/Jaro_similarity#C
Gewijzigd op 16/04/2024 15:17:32 door Ad Fundum
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.