Zoekfunctie vindt niet de beste resultaten

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • MarcoC
  • Registratie: September 2003
  • Laatst online: 11:51
Heel vaak erger ik me aan de search op GoT. Een simpel voorbeeld: ik zoek op "Galaxy S4".

Naar mijn mening zou dit topic het eerste zoekresultaat moeten zijn: [Samsung Galaxy S4]: Ervaringen & Discussie. Echter is dit topic pas het 45e zoekresultaat.

Hoe verklaren jullie dit? Wat is de gedachte achter sorteren op relevantie?

Acties:
  • 0 Henk 'm!

  • Frozen
  • Registratie: Oktober 2010
  • Laatst online: 00:12

Frozen

2e Reviewer van het Jaar

Ik merk dit zelf ook. Als ik zoek op OnePlus one, zouden als eerste de "grootste" topics voorbij moeten komen.
Denk dan aan:

[OnePlus One] Ervaringen & Discussie
[OnePlus One] Levertijden & Prijzen
[OnePlus One] Rooten & Custom ROM's
[OnePlus One] Accessoires
Het grote & tijdelijke OnePlus One invites topic

Afbeeldingslocatie: http://i.snag.gy/KmEZZ.jpg

Misschien ervoor zorgen dat automatisch de grootste en meest bekende (open, dus niet gesloten) topics bovenaan komen te staan?

Voeg me gewoon toe op LinkedIn, iedereen is welkom!


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

MarcoC schreef op zondag 11 januari 2015 @ 13:40:
Hoe verklaren jullie dit? Wat is de gedachte achter sorteren op relevantie?
Relevantie wordt doorgaans (en ook bij ons) bepaald door de relatieve frequentie van de gezochte termen (in jouw geval galaxy en s4) af te zetten tegen alle termen in ieder document en tegen hoe gebruikelijk de termen als geheel zijn.

Bij ons zien we de losse reacties als 'document' en worden van de gevonden reacties de beste drie per topic getoond. De best matchende reactie komt bovenaan (en dus het daarbij horende topic).

Woorden in de titel wegen iets zwaarder dan in de lopende teksten, maar we rekenen de titel weer alleen aan de eerste reactie (de topicstart) toe.

Verder doen we nog wat moeite om nieuwe reacties hoger te laten komen en hebben de pageviews op een topic ook invloed op de score.

Het is bij ieder 'verkeerd' lopende zoekopdracht wel te verklaren waarom bepaalde resultaten er juist wel of niet tussen zouden kunnen staan, maar die uitleg is helaas niet gelijk te vertalen in een oplossing :(

Bij zulke lange topics is het bijvoorbeeld niet ongebruikelijk dat het product waar het om gaat heel weinig bij name wordt genoemd in de meeste reacties. Of in ieder geval niet vaker dan in korte topics en de lengte van een topic heeft weinig tot geen invloed op de relevantie (hoewel langere topics wel meestal meer pageviews krijgen).
Verder is de topicstart, de plek waarvan ik verwacht dat dergelijke termen het vaakst voorkomen, doorgaans al vrij oud. In jouw specifieke voorbeeld is ie zelfs al bijna 2 jaar oud...

Ik ben overigens met je eens dat het een beter eerste resultaat zou zijn dan de rest, maar het is voor ons technisch verdraaid lastig om dat goed voor elkaar te krijgen.
Althans, als we daarbij niet alle grote topics bovenaan willen krijgen waar toevallig 'galaxy s4' in voorkomt; het komt ook voor in topics als Het Krat- en Kistradio Topic [Deel 19], Centraal aanbiedingen topic. V2.0, Het topic voor (onbekende) Chinese smartphones - Deel 2 en Het grote wielrenervaringtopic - Deel 18.

Ik ga er wel een intern ticket voor maken om dit beter te onderzoeken. Wellicht kunnen we de weging van topics onderling nog aanpassen aan de hand van hoeveel reacties er voldoen (hoewel een topic met 1 reactie die voldoet natuurlijk 100% haalt, dus dat moet niet alleen een percentage zijn) of kunnen we kijken of we voor de topicstart de tijd van de laatste reactie, ipv z'n eigen tijd, kunnen gebruiken voor z'n weging.
Frozen schreef op donderdag 15 januari 2015 @ 18:21:
Misschien ervoor zorgen dat automatisch de grootste en meest bekende (open, dus niet gesloten) topics bovenaan komen te staan?
Het is voor jou en mij als ervaren forumgebruiker triviaal om te herkennen wat het 'grote topic' voor een product is (voor de iphone zijn er trouwens meerdere). Het is voor mij als programmeur helaas bijzonder moeilijk om dat te vertalen naar programmacode die dat goed kan, zonder ook irrelevante grote topics naar boven te halen.
Zie hierboven wat voorbeelden voor 'grote topics' die ook matchen op galaxy s4 :/

De twee puntjes die ik hierboven genoemd heb ga ik intern op de agenda zetten om te onderzoeken :) Ik verwacht vooral wel wat van het belangrijker maken van de topicstart (dus gelijk stellen aan de nieuwste, ipv oudste, reactie qua tijds-weging) tov andere reacties.

Acties:
  • 0 Henk 'm!

  • MarcoC
  • Registratie: September 2003
  • Laatst online: 11:51
Die voorbeelden die jij noemt hebben geen S4 in de titel. Topics met veel reacties en een match in de titel een hogere relevantiescore toedichten zou denk ik wel een positief verschil maken.

Misschien is het een idee om voor dit soort problemen van het mathematische model af te stappen en relevantie te bepalen aan de hand van factoren die een bezoeker op Tweakers relevant vindt. Het volgende proces zou volgens mij wel tot een verbetering moet leiden.
1. Probeer intern te bepalen wat de definitie van "relevant" moet zijn
2. Verifieer of vul dit aan met input van gebruikers
3. Voeg handmatig regels toe zodat de het "relevant"-algoritme de zelfgestelde definitie van "relevant" zo goed mogelijk dekt. Ik denk dat het onmogelijk (of nodeloos ingewikkeld) is om te hopen dat één formule afdoende is. Er zijn ontzettend veel factoren die je mee kunt nemen in je defintie van relevant (pageviews, gemiddelde leestijd in het topic, etc.).

Ook zou je er aan kunnen denken om bij elk zoekresultaat de gebruikers de mogelijkheid te geven welk zoekresultaat ze wel relevant vinden en welk zoekresultaat ze niet relevant vinden, op die manier krijg je een soort zelflerend systeem :). Daarnaast kan je leren van het klikgedrag van gebruikers. Als je ziet dat het 45e zoekresultaat op de 10e plek staat op de ranglijst van topics die geopend worden na een bepaaldzoekresultaat, dan kan je je voorstellen dat gebruikers dat zoekresultaat veel belangrijker vinden dan wat Tweakers denkt.

In ieder geval, er is volgens mij van alles mogelijk :P .

[ Voor 83% gewijzigd door MarcoC op 17-01-2015 12:44 ]


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

MarcoC schreef op zaterdag 17 januari 2015 @ 12:36:
Die voorbeelden die jij noemt hebben geen S4 in de titel. Topics met veel reacties en een match in de titel een hogere relevantiescore toedichten zou denk ik wel een positief verschil maken.
Dat is ook nog een idee, hoewel het technisch waarschijnlijk wat uitdagender wordt en het vooral voor dit soort zoekopdrachten werkt. Er zullen ook zoekopdrachten zijn waar je weinig tot niets aan een groot topic hebt en je vooral de individuele reacties zou willen zien.
Als we dan altijd bepaalde soorten topics enorm pushen... dan gaat dat weer averechts werken voor die zoekopdrachten.
Misschien is het een idee om voor dit soort problemen van het mathematische model af te stappen en relevantie te bepalen aan de hand van factoren die een bezoeker op Tweakers relevant vindt.
Het is bijzonder lastig om vooraf te herkennen of we met 'dit soort problemen' te maken hebben of met een 'gewone' zoekopdracht.
Bovendien hebben alle door lezers/bezoekers/handmatige schifting beinvloedde zoektechnieken die ik gezien ook mathematische algoritmes nodig om te werken. Veelal nog aanzienlijk complexere dan wat wij nu gebruiken (standaard lucene's versie van tf/idf) ;)
Het volgende proces zou volgens mij wel tot een verbetering moet leiden.
1. Probeer intern te bepalen wat de definitie van "relevant" moet zijn
2. Verifieer of vul dit aan met input van gebruikers
Die is helaas in potentie per bezoeker en/of per zoekopdracht verschillend. Vergeet niet dat we te maken hebben met vele duizenden verschillende zoekopdrachten, niet iedereen zoekt op mooie termen als 'galaxy s4'. En we willen op al die zoekopdrachten een bruikbaar antwoord geven.

Het meest relevant is tenslotte datgene dat je zoekt. Maar dat aan de hand van een paar korte woordjes vertalen naar een lijst resultaten is nou net het moeilijk deel.
Dus je moet dan bepalen waarom iets relevant is... en dan krijg je zaken als "het gaat over dat onderwerp".
Waarna je de taak krijgt om te bepalen wat 'dat onderwerp' is dat met die zoekopdracht werd beschreven en "het gaat erover" af te leiden voor alle topics/reacties. Beide zijn niet zo makkelijk als je wellicht denkt.

Vervolgens zit je nog met de vraag welke gaat "er" dan het meeste "over" (want die is het meest relevant) :P
3. Voeg handmatig regels toe zodat de het "relevant"-algoritme de zelfgestelde definitie van "relevant" zo goed mogelijk dekt.
Handmatige regels zijn alleen bij te houden als je voor een "handjevol" zoekopdrachten dit wil doen. En ik zie liever dat we het zoeksysteem toekomstbestendig (nieuwe onderwerpen) en zo onderhoudsvrij (nieuwe topics over een bestaand onderwerp) mogelijk houden... anders blijven we - letterlijk - bezig.
Ik denk dat het onmogelijk (of nodeloos ingewikkeld) is om te hopen dat één formule afdoende is. Er zijn ontzettend veel factoren die je mee kunt nemen in je defintie van relevant (pageviews, gemiddelde leestijd in het topic, etc.).
Ik weet zelfs bijna zeker dat dat ene algoritme voor elk voorbeeld van "goed gedrag" ook een voorbeeld oplevert van "slecht gedrag" :P Hoewel gelukkig niet altijd even erg "slecht".

Desalniettemin denk ik wel dat jij onderschat hoe ingewikkeld een goed werkende zoekmachine die op basis van gebruikersinvoer werkt. Zeker als we dat vervolgens moeten combineren met zoekopdrachten die niet vooraf waren voorzien van relevante resultaten of die iets afwijken van de zoekopdracht die gebruikt werd ten tijde van een gebruiker die ons probeerde te helpen met het markeren van meer of minder relevante resultaten.

Wat doe je bijvoorbeeld als iemand "galaxy s4 hoes" invoert? Ga je dan alle resultaten die we dan voor "galaxy s4" hebben verzameld negeren? Of gaan we ze dan toch op een of andere manier meewegen? En zoja, hoe?
Moet een nieuw topic waar "galaxy s4" in voorkomt direct zichtbaar zijn bij die zoekopdracht? En als dat niet het geval is, hoe kan ie dan uberhaupt ooit beschikbaar komen als relevant topic voor "galaxy s4"?

Dit zijn overigens geen vragen waar jij een antwoord op hoeft te hebben, maar die naar voren komen als je zoiets probeert te bouwen :P
Ook zou je er aan kunnen denken om bij elk zoekresultaat de gebruikers de mogelijkheid te geven welk zoekresultaat ze wel relevant vinden en welk zoekresultaat ze niet relevant vinden, op die manier krijg je een soort zelflerend systeem :). Daarnaast kan je leren van het klikgedrag van gebruikers. Als je ziet dat het 45e zoekresultaat op de 10e plek staat op de ranglijst van topics die geopend worden na een bepaaldzoekresultaat, dan kan je je voorstellen dat gebruikers dat zoekresultaat veel belangrijker vinden dan wat Tweakers denkt.

In ieder geval, er is volgens mij van alles mogelijk :P .
Dit zijn inderdaad dingen die door de grote jongens (zoals Google) worden toegepast. Het is alleen allemaal niet zo simpel om goed uit te werken :/ Besef daarbij dat Google voor dit soort problemen hele teams aan programmeurs en onderzoekers hebben die dat uitwerken. Wij hebben die mankracht niet en zullen dat ook nooit krijgen, de techniek inkopen is niet altijd mogelijk of in die gevallen dat dat wel kan erg duur (dan heb je het al gauw over tonnen en miljoenen).

We roeien met de riemen die we hebben. En daarbij proberen we zeker de resultaten zo goed mogelijk aan te laten sluiten bij zoekopdrachten van gebruikers. Dat gaat af en toe niet goed en dan gaan we kijken of er een oplossing voor is.
Blijf vooral meedenken, maar de heel spectaculaire wijzigingen zullen we niet zo gauw (kunnen) doorvoeren :)