DrDoogie Skrevet 6. januar 2004 Del Skrevet 6. januar 2004 (endret) (Denne tråden er ment å behandle den TEKNISKE delen, for brukerspørsmål, gå hit. ) Hepp, godtfolk! Jeg og Torbjørn driver for tiden og utvikler et program / skript som tar sikte på å anbefale CD'er til folk, basert på hva dem allerede har av kjøpt musikk I den forbindelse velger jeg (under tvil, og med sterke reserveringer) å være optimistisk, da skjelettet til databasen (PostgreSQL 7.4.1), samt datastrukturen, så godt som (~40%) er oppe og kjører nu. Vi snakker da om at å legge inn 100 CD'er for 100 brukere (i datastrukturen, 10000 CD'er), samt finne de 10 mest kjøpte (og annet) tar 22 sekunder uten noen form for optimisering. Å legge inn i databasen tar noe lenger tid (*host*), da bulk-overføring og annen optimisering ikke har blitt foretatt enda. Fremover kommer jeg til å drive med optimisering, testing, innlegging av muligheter for debugging / tracing / logging, o.a. Endret 6. januar 2004 av DrDoogie Lenke til kommentar
Torbjørn Skrevet 7. januar 2004 Del Skrevet 7. januar 2004 jepp, dette er ganske interessant Lenke til kommentar
kjetil_b Skrevet 8. januar 2004 Del Skrevet 8. januar 2004 Høres bra ut! Skjønte ikke alt, men dette kan jo kanskje slå an stort?! - Kjetil Lenke til kommentar
DrDoogie Skrevet 12. januar 2004 Forfatter Del Skrevet 12. januar 2004 (endret) Poster en kort oppdatering for eventuelle som lurer på hvordan det går. Har gått igjennom hele freedb sin database (som har har 1.3 Millioner cd'er) for første gang nå, og har forkastet 35% av innholdet med enkel case-insensitive sammenligning av entries + noe "drit i entries som har feil". Står da igjen med over 830K cd'er, som kan være greit nok. Disse cd'ene har da blitt lagt inn i en database (PostgreSQL), hvor jeg i første rekke (versjon 0.1 av programmet) vil begrense meg til enkel sammenligning med brukernes cd'er. Spørring (enkel) mot databasen har blitt kjapt testet, og det ser foreløpig brukbart ut. For å oppsummere, så er jeg da ferdig med de 90% av arbeidet som tar 90% av tiden, og går over til de 10% av arbeidet som også tar 90% - med å knytte ting isammen, teste og debugge. Vi er i rute, med andre ord. Endret 12. januar 2004 av DrDoogie Lenke til kommentar
tvangsgreie Skrevet 25. januar 2004 Del Skrevet 25. januar 2004 Hva om folk synes halvparten av de de har kjøpt er noe dritt? For en stund siden var det en site som het Movie Critic, der man kunne gi forskjellige filmer karakter, og så sammenliknet den med karakterene andre hadde gitt, og anbefalte filmer utfra det. Den ble svært nøyaktig etter hvert, og jeg kjøpte aldri filmer uten å ha sjekket hvordan de slo ut der først. Desverre la de plutselig ned. Uansett, om dette skal ha noen særlig nytte, tror jeg det må måles utfra hvor godt folk liker musikken, ikke om de har kjøpt platen. Lenke til kommentar
Torbjørn Skrevet 26. januar 2004 Del Skrevet 26. januar 2004 godt poeng. lurer på hvordan man skal inkorporere en skala. eventuelt bare be folk laste opp cd'er de liker Lenke til kommentar
DrDoogie Skrevet 26. januar 2004 Forfatter Del Skrevet 26. januar 2004 (endret) Hva om folk synes halvparten av de de har kjøpt er noe dritt? ... Uansett, om dette skal ha noen særlig nytte, tror jeg det må måles utfra hvor godt folk liker musikken, ikke om de har kjøpt platen. Poster litt uforståelig kaudervelsk (er overtrøtt nå, etter å ha endelig begynt å spore opp en bøgg): drdoogie@skrotnisse:/usr/local/apache2/cgi-bin/cddb> cat /temp/perl/cd_recommend/triggers/trigger_create_user_table | sed -e 's/\t/ /' --AFTER create or replace function create_table_on_insert_user () returns trigger as ' declare a_var varchar (200); begin --creates the user\'s table of cds a_var := ''create table "'' || new.username || ''" ( cd varchar unique not null, '' || '' cd_vote smallint default null, '' || '' artistcd_vote smallint default null, '' || '' primary key (cd)''; execute a_var; return new; end; ' language 'plpgsql'; create trigger after_insert_into_users after insert on users for each row execute procedure create_table_on_insert_user (); Dette er da brukerens tabell over hvilke cd'er han har. Som dere ser (eller ikke ser, whatever. *trøtt nå*), så er det der to felter for "vote", hvor man kan rankere et album relativt til samlingen sin, og relativt til cd'ene av samme artist som man har. Eksempelvis ville jeg ha stemt (fra 1-7, tenker jeg) på cden Substrata av Biosphere med stemmene 5, 6. Altså at jeg ville sagt at plata Substrata fortjente stemmen 5 sett i forhold til kvaliteten vurdert opp mot samlinga mi, og 6 vurdert opp mot de andre cd'ene jeg har av Biosphere (som i mitt tilfelle er Patashnik, Cirque, og Microgravity). Sove nå. Endret 26. januar 2004 av DrDoogie Lenke til kommentar
DrDoogie Skrevet 26. januar 2004 Forfatter Del Skrevet 26. januar 2004 Liten oppdatering: Det er et par problemer med Apache, og dette skriptet blir derfor noe forsinket. Problemene ser foreløpig ut til å bestå av følgende: Apache forker hver bruker sin session (eller noe), og har man da 10 MiB med data, blir ytelsen ræva. Multitråding må implementeres (tror jeg). Graphen blir lastet ved hver bruker sin session, istedenfor å deles mellom alle brukerne. Dette må fikses slik at data deles mellom alle sessionene Jobber med saken, er det noen som har tips, så er det bare å komme med dem. Lenke til kommentar
tvangsgreie Skrevet 27. januar 2004 Del Skrevet 27. januar 2004 (endret) Altså at jeg ville sagt at plata Substrata fortjente stemmen 5 sett i forhold til kvaliteten vurdert opp mot samlinga mi, og 6 vurdert opp mot de andre cd'ene jeg har av Biosphere (som i mitt tilfelle er Patashnik, Cirque, og Microgravity). Det høres redundant ut. Hvorfor ikke bare gi alle platene en karakter, som sier hvor godt du liker den? Om du liker en gruppe veldig godt, vil alle få relativt høy karakter, men med plass til litt nyanser. Et viktig poeng Movie Critic hadde fått med seg, var at vi har mange nyanser av bra, men hvis det er dårligere, grupperer vi gjerne bare i f.eks. ok, middelmådig, dritt og sinnsykt dritt. De hadde en skala fra 1 - 13, der bra så vidt jeg husker var 5. Ser man på IMDB, ligger f.eks. omtrent alle karakterer mellom 6 og 8, er de lavere, er filmene som regel veldig dårlige, og er de bedre, er de vanligvis veldig bra. Det gjelder altså å forsøke å få brukeren til å bruke en større del av skalaen, ved å gi hint om hvilken karakter de forskjellige meningene bør få. Endret 27. januar 2004 av tvangsgreie Lenke til kommentar
DrDoogie Skrevet 27. januar 2004 Forfatter Del Skrevet 27. januar 2004 Det høres redundant ut. Hvorfor ikke bare gi alle platene en karakter, som sier hvor godt du liker den? Om du liker en gruppe veldig godt, vil alle få relativt høy karakter, men med plass til litt nyanser. Det kan jeg være enig i. Foreløpig ser jeg det da for meg slik at det med stemming i forhold til gruppe kan være mest aktuellt for avanserte brukere. Og at jeg da deler brukerne opp i flere grupper, hvor eksempelvis de "avanserte" får tilgang til litt mer funksjonalitet med betingelsen av at dem kommer med mer feedback (avstemming). Et viktig poeng Movie Critic hadde fått med seg, var at vi har mange nyanser av bra, men hvis det er dårligere, grupperer vi gjerne bare i f.eks. ok, middelmådig, dritt og sinnsykt dritt. De hadde en skala fra 1 - 13, der bra så vidt jeg husker var 5. ... Det gjelder altså å forsøke å få brukeren til å bruke en større del av skalaen, ved å gi hint om hvilken karakter de forskjellige meningene bør få. Det høres interessant ut. Kan du si mer om dette, altså psykologien i valg av alternativer i en tallskala? Amazon bruker eksempelvis 1-5, men det synes jeg blir for lite. Mener selv 1-7 (eller 0-6, alt ettersom) kan være greit. Blir det for mange valg (1-13 er for mange, etter mitt syn), kan folk "blingse litt", og få problemer med å vurdere om dem skal gi 8 eller 9 på en plate. Ser man på IMDB, ligger f.eks. omtrent alle karakterer mellom 6 og 8, er de lavere, er filmene som regel veldig dårlige, og er de bedre, er de vanligvis veldig bra. Jeg vet ikke hva IMDB er, har du en link? Ellers ønsker jeg tilbakemeldinger på dette. Lenke til kommentar
Kowalski Skrevet 27. januar 2004 Del Skrevet 27. januar 2004 Jeg klipper og limer litt fra PM: Slik jeg ser det hadde det vært uvurdelig å inkludert to parametere til skivene; ett for "terningkast" og ett for "grad av viktighet" På den måten vil man kunne både kunne skille ut de skivene som er knallbra fra de som er middelmådige, og gitt det en kontekst med hvor essensielle de er/var (viktig for kred-horer). Eksempelvis: David Sylvian - Secrets of the Beehive er en klar sekser på terningen - den er utrolig bra. Samtidig er den ikke akkurat grensesprengende for sin sjanger selv om det udiskutabelt er hans viktigste skive. Pop Group - Y er litt annerledes i det at den ikke fortjener mer enn en femmer, samtidig som den (slik jeg ser det) er temmelig essensiell for sin tid. Dette bør kunne reflekteres gjennom to skalaer, på en eller annen måte. Om man bør følge terningkast 1-6, IMDB sitt 1-10-system eller noe helt annet er jeg usikker på. Det vil være naturlig å anta at noen utgivelser blir stemt på kun et fåtall ganger, mens andre vil stemmes frem av flere. Forskjellige karaktersystemer passer til forskjellige databaser, men jeg tror kanskje at jeg ville foretrukket noe i nærheten av 1-6-rangering. Dette av den enkle årsak at det forenkler prosessen noe i forhold til mer avanserte varianter (skal jeg tenke egoistisk hadde 1-5 passet best med tanke på hvordan rating-system i mitt musikkbibliotek er lagt opp..) Musikkbladet MOJO kjører dette regimet: ***** - An out-and-out MOJO classic **** - Splendid! The best of its kind *** - Stands out from the crowd. Well worth checking out ** - A good, solid effort, but breaking no new ground * - Disappointing. For purists and collectors only ( ) - A Titanic letdown. Best avoided Det samme systemet brukes også av Q og flere andre. Et greit system, ulempen er at det ikke tillater særlig store nyanser mellom skiver. Fordelen med dette er at man slipper å mokle veldig mye med å sette skiver opp mot hverandre, man plasserer de heller i en stor kategori (så kan man jo jobbe panegyrisk for de senere). Lenke til kommentar
tvangsgreie Skrevet 27. januar 2004 Del Skrevet 27. januar 2004 (endret) Det høres interessant ut. Kan du si mer om dette, altså psykologien i valg av alternativer i en tallskala? Egentlig ikke, det er bare noe jeg har irritert meg litt over, siden det gjør at det aldri blir mulig å få fram nyanser, med mindre man bruker veldig lang skala. 1-13 var akkurat passe. Selve poengene ble ikke vist til brukeren, bare en skala med nivåer som virkelig dårlig, dårlig, ok, bra, veldig bra, perfekt, og så var det et par mellomting mellom hver av de navngitte nivåene, slik at det var plass til litt ekstra nyanser. Man har også gjerne en oppfatning av at en plate f.eks. er litt bedre enn en plate, men litt dårligere enn en annen, og hvis man viser en av platene for hvert av nivåene som har blitt brukt før, er det ikke noe problem å gjøre nytte av en skala med høy oppløsning. IMDB er International Movie Database, og har den kryptiske adressen www.imdb.com. At noen ikke har hørt om den overrasker meg like mye hver gang. Jeg ser eller kjøper aldri en film uten å se hvordan den ligger ann der først, men jeg må riktignok justere litt for genre.Drama/romance skal ha veldig høy score for at jeg skal gidde å se den, mens jeg er nokså altetende når det gjelder scifi. Endret 27. januar 2004 av tvangsgreie Lenke til kommentar
DrDoogie Skrevet 27. januar 2004 Forfatter Del Skrevet 27. januar 2004 Hm. Ok... Det kan nok argumenteres for å la skalaen for "generell kvalitet" på plata gå fra og med 1 til og med 10 (1-10), til forskjell fra 1-7. Med mindre det er vektige argumenter mot det, blir det implementert. Når det gjelder skalaen for "spesifikk kvalitet", altså målt opp mot noe spesifikt (i mitt eksempel, andre utgaver av samme artist), lurer jeg her på hva som er best. Bare ganske enkelt 1-10? Lenke til kommentar
tvangsgreie Skrevet 27. januar 2004 Del Skrevet 27. januar 2004 Jeg synes du skal glemme tallene, og i stedet finne ut hvilke mentale "graderinger" folk gjør av platene sine. Hvor nøyaktig må den være for at man kan si at en plate er omtrent like god som en annen, men litt bedre enn en annen, uten å egentlig heller ville plassere den "mellom" de to andre. Tallene kan du sette på etterpå utfra hvordan det passer med programmet. Kanskje vil det f.eks. være lettere å gjøre beregningene dersom du lar skalaen gå fra 1 - 100, men bare bruker noen få av tallene mellom (elendig = 1, dårlig = 25, middelmådig = 40, f.eks.) i skjemaet brukeren ser. Dessuten vil det da være veldig lett å øke oppløsningen på graderingen seinere, det er bare å legge til flere alternativer i skjemaet mellom de eksisterende. Evt. kan det være en "ekspert"-modus. Lenke til kommentar
Torbjørn Skrevet 28. januar 2004 Del Skrevet 28. januar 2004 hvis ikke tallene synes, er det et fett hvordan skalaen ser ut. kan bruke desmialtall mellom 1 og 2 for den sags skyld hvis man vil. Lenke til kommentar
tvangsgreie Skrevet 28. januar 2004 Del Skrevet 28. januar 2004 Selvsagt, men jeg liker heltall Lenke til kommentar
DrDoogie Skrevet 28. januar 2004 Forfatter Del Skrevet 28. januar 2004 hvis ikke tallene synes, er det et fett hvordan skalaen ser ut. kan bruke desmialtall mellom 1 og 2 for den sags skyld hvis man vil. Joa. Everyone's got an opinion, ser det ut til. I mangel av opplysninger om hvordan folk rent psykologisk forholder seg til forskjellige tallskalaer, tror jeg da jeg like greit bare kjører på min mening, altså 1-7. EOD. Lenke til kommentar
Torbjørn Skrevet 28. januar 2004 Del Skrevet 28. januar 2004 det var ikke min mening, det var bare et illustrrerende eksempel! Lenke til kommentar
tvangsgreie Skrevet 28. januar 2004 Del Skrevet 28. januar 2004 Det er jo bare å søke på Google: http://www.swisspanel.ch/file/doc/faq/11pointscales.pdf Søkte etter rating scales influence response, og denne lenken ser ut til å ha noen gode poenger i kortfattet form. Lenke til kommentar
Oracel Skrevet 1. februar 2004 Del Skrevet 1. februar 2004 (endret) Liten oppdatering: Det er et par problemer med Apache, og dette skriptet blir derfor noe forsinket. Problemene ser foreløpig ut til å bestå av følgende: Apache forker hver bruker sin session (eller noe), og har man da 10 MiB med data, blir ytelsen ræva. Multitråding må implementeres (tror jeg). Graphen blir lastet ved hver bruker sin session, istedenfor å deles mellom alle brukerne. Dette må fikses slik at data deles mellom alle sessionene Jobber med saken, er det noen som har tips, så er det bare å komme med dem. Apache bruker thread pooling, noe som er den mest skalerbare og effektive måten å utføre slike oppgaver på. Den graf-saken du snakker om vet jeg ikke noe om, men en eller annen form for caching av grafer som matcher et visst dataset hadde kanskje vært en ide. Edit: Forresten så bruker imdb.com og flere andre steder som selger filmer, cd'er & lignende åndsverk slike ekspertsystem som dette. Det er ikke umulig at du kunne klart å selge løsningen din videre når den en gang blir ferdig. Endret 1. februar 2004 av Oracel Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå