En modell för att bedöma textkvalitet

Den hälsosamme ekonomisten, Sunday 25 August, 2019
Bild: 2017-09/dsc01062.jpg

Har ägnat helgen åt att försöka lösa ett problem som antagligen är ganska vanligt när man programmerar. Frågan är hur man kan låta användare sätta betyg på något - i detta fall blogginlägg - och samtidigt låta datorn sätta betyg på hur bra användarna är på att sätta betyg?

Man kan tycka att detta borde vara Moment 22, men faktum är att sådana algoritmer ligger bakom kvalitetsuppföljning i många andra sammanhang. Ett exempel är den vetenskapliga världen, där peer-review innebär att de som har visat sig bra på att bedöma kvalitet tidigare upphöjs till domare för sina kollegor.

Även om processen fungerar riskerar den att leda till likriktning, eftersom normen blir genomsnittet av domarnas bedömningar. Man sållar fram en liten grupp som får en central roll för att avgöra vad som är kvalitet eller inte.

Började i lördags med att försöka hantera saken med matrisalgebra, men gav upp efter ett tag då det blir svårt och beräkningsintensivt att invertera matriser med väldigt många nollor. Fastnade i stället för en betydligt enklare algoritm (bifogar koden nedan).

Domarna får i det här fallet möjlighet att välja mellan godkänt och underkänt när de bedömer kvaliteten för olika blogginlägg. Rösterna registreras i en databas, där även alla användare och blogginlägg finns registrerade. Poängen för ett enskilt blogginlägg blir summan av alla domare som röstat för att godkänna inläggen multiplicerat med domarnas kvalitet. Poängen beräknas i den första funktionen blogscore nedan.

Nästa steg är att bedöma hur väl domarna har lyckats med att bedöma varje blogginlägg. För att ha en referens beräknas genomsnittspoängen för alla blogginlägg och en korrekt bedömning definieras som att domaren antingen godkänt ett inlägg som har högre poäng än genomsnittet eller att domaren har underkänt ett inlägg som har lägre poäng än genomsnittet. Jag använder det aritmetiska medelvärdet som referens här - man kanske egentligen borde använda medianen.

Som brukligt använder jag Ruby och Sinatra med databashanteraren Sequel. Det verkar som om algoritmen är stabil, jag har låtit den loopa 1000 gånger. Koden nedan är f ö bara en del av ett större projekt.

Nästa steg blir att koppla in AI. Som jag tidigare nämnt planerar jag att vektorisera alla blogginlägg med Doc2Vec hos Algorithmia för att se om inlägg som bedöms som "bra" ligger nära varandra i rummet när man mäter skalärprodukten. Genom att vektorisera texten kan man jämföra nya inlägg med befintliga bedömda inlägg. Det är ungefär samma algoritm som man använder för att upptäcka plagiat i skoluppsatser. Tanken är alltså att riktiga bedömare ska kunna lära datorn hur bra blogginlägg ser ut så att datorn själv ska kunna göra en preliminär bedömning.

Ytterst är tanken att göra det möjligt att samla text från många olika källor - via bloggars RSS-flöden - för att sätta ihop en högkvalitativ medieprodukt. Man skapar alltså en tidning, utan att behöva teckna avtal med alla tänkbara skribenter. Man kan likna det vid processen bakom en vetenskaplig tidskrift - men helt utan någon mänsklig redaktör. Algoritmer samlar ihop skribenter och via peer review upprättthålls en tillräcklig hög kvalitet i materialet. Samtidigt kan skribenterna få betalt för att bedöma andra skribenters texter genom att få företräde att publicera sina egna alster (ett slags annonser).

Det är förstås en bit kvar innan jag har hela strukturen klar. Men när jag är klar kommer jag säkert behöva hjälp med att testa programmet. Och om inte jag uppfinner det så lär någon annan göra det - tidningarna i dagens form lever på lånad tid.


# Beräkna poäng för blogginlägg (score är mellan 0 och 1)
def blogscore
  poster = DB[:blogposts]
  users = DB[:users]
  roster = DB[:votes]
  poster.each do | post |
    poang = 0.0
    raknare = 0
    roster.each do | rost |
      user = users.first(uid: rost[:uid])
      if rost[:slug] == post[:slug] then
        poang += user[:score] if rost[:vote]
        raknare += 1
      end
    end 
    score = (raknare == 0) ? 0 : poang/raknare
    poster.where(slug: post[:slug]).update(:score => score)
  end
end

# Beräkna poäng för en användare (score är mellan -1 och 1)
def userscore
  poster = DB[:blogposts]
  users = DB[:users]
  roster = DB[:votes]
  snittpoang = poster.avg(:score)
  puts snittpoang
  users.each do | user |
    # Nollställ poäng och räknare.
    poang = 0.0
    raknare = 0
    poster.each do | post |
      # Se hur användaren *user* röstat på blogginlägget *post*. Kan bli true, false eller nil.
      rost = roster.where(uid: user[:uid], slug: post[:slug]).first
      rost = rost[:vote] if !rost.nil?
      # Variabeln flag_korrekt ska vara true om användaren röstat godkänna när poäng är över snittet.
      if !rost.nil? then
        flag_korrekt = false # Default false
        flag_korrekt = true if (rost == true) && (post[:score] > snittpoang)
        flag_korrekt = true if (rost == false) && (post[:score] < snittpoang)
        poang += 1 if flag_korrekt
        raknare += 1
      end
    end 
    userscore = (raknare == 0) ? 0 : 2 * poang / raknare - 1
    users.where(uid: user[:uid]).update(:score => userscore)
  end
end  

Hur bör en miljövän fördela sin konsumtion?

Den hälsosamme ekonomisten
Bild: 2017-09/dsc01062.jpg

Läser Konsumtionsrapporten från Centrum för konsumtionsvetenskap och hittar en intressant tabell som illusterar hur vår konsumtion påverkar miljön i förhållande till antalet spenderade kronor. Ser att jag går från klarhet till klarhet i mitt miljöengagemang - utan att riktigt veta om det i och för sig. Ta bara en sådan sak som att jag drog in el i sommarstugan. I stället för att laga mat på gasolköket - något som ger upphov till 451 gram koldioxid per krona gasol - lagar jag numera …

Läs mer!

Qatar bygger solenergianläggning på 800 MW

Den hälsosamme ekonomisten
Bild: 2017-09/dsc01062.jpg

Läser att Qatar bygger en solenergianläggning på hela 800 MW. Det är lika mycket som den installerade kapaciteten i Sverige.  Som läsarna av den här bloggen vet tror jag att solenergin kommer att bli det dominerande energislaget i framtiden. Större än kolkraft , kärnkraft och vattenkraft . Skälet är skalbarheten och den tekniska utvecklingen. Solen ger oss energi i överflöd, det handlar bara om att hitta ett sätt att plocka ner energin i elledningarna. Solenergi kommer att …

Läs mer!

Telia har inte längre kontantkort

Den hälsosamme ekonomisten

Har ni noterat att Telia från och med i år drar en månadskostnad på 15 kronor oavsett om man ringer med sitt kontantkort eller inte? I praktiken innebär det att man inte längre har kontantkort, utan ett slags miniabonnemang. Alternativt kan man kanske se det som att Telia även tar betalt för inkommande samtal. Har faktiskt haft Telia på min … Läs mer!

Datteln 4 - Tysklands svar på Greta Thunberg

Den hälsosamme ekonomisten

Drygt en Gigawatt ska Tysklands nya moderna kolkraftverk Datteln 4 producera. Det visar hur seriöst EU tar klimatfrågan - egentligen. I övrigt är väl energin i Tyskland tänkt att komma från ryska gasledningar - inte heller det ett helt fossilfritt energislag. Glappet mellan verklighet och retorik har nog aldrig varit större än i dag. … Läs mer!

Openvidu - ett enkelt sätt att sätta upp videokommunikation

Den hälsosamme ekonomisten

Tur att man jobbar 75%. Annars hade jag inte kunnat ägna 12 timmar varje dag de senaste tre dagarna åt att sätta upp en medieserver för videokommunikation.  Hittade Openvidu efter att ha sökt ganska mycket och prövat en tjänst som heter TokBox , men som kostar en del om man använder den efter prövoperioden. Vill man ha en server som … Läs mer!

Koldioxid är en global fråga

Den hälsosamme ekonomisten

SNS konstaterar i sin rapport "Svensk politik för ett globalt klimat" att koldioxiden är en global fråga. Ett självklart påstående, kanske - men klimatpolitiken har så här långt bedrivits som om det spelar roll om koldioxiden släpps ut i Sverige eller någon annanstans. "Att släppa ut i Sverige ska vara dyrt, men om koldioxiden släpps ut i Kina … Läs mer!

Internpris på koldioxid kan ge ökade utsläpp

Den hälsosamme ekonomisten

Finansinspektionen (FI) kommer att utreda möjligheterna att på både nationell och internationell nivå verka för att företag i ökad utsträckning "... redovisar ett internpris för koldioxidutsläpp". Frågan är bara vad en sådan internprissättning syftar till? Ta exemplet med ett svenskt företag som säljer kläder som tillverkas i Mönsterås. Företaget … Läs mer!

Vad har man en bank till?

Den hälsosamme ekonomisten

Underhållande beskrivning av  Hanne Kjöller  på ledarplats i DN om hur hon försöker överföra pengar för att stödja arbetet med bergsgorillor i Uganda . Hon har nog fått missuppfattningen att banker hjälper kunder att föra över pengar. Inget kan vara mer fel. Banker spekulerar i bostäder med låntagarna som säkerhet, underlättar skatteplanering och … Läs mer!

Kan man ha monopol på avläsning av ögonrörelser?

Den hälsosamme ekonomisten

Läser att det svenska ögonspårningsföretaget Tobii har problem med den brittiska konkurrensmyndigheten. Själv funderar jag över hur det är möjligt att företagets  ställning på marknaden för mätning av ögonrörelser betraktas som ett problem? Att EU:s konkurrensmyndigheter utreder Google eller Microsoft är en sak. Att Konkurrensverket har … Läs mer!

Om bloggen

Den hälsosamme ekonomisten är en blogg som handlar om sjukvårdens organisation, incitament och klassisk liberalism - allt skrivet ur ett ekonomistiskt perspektiv. Webbplatsen använder tredjepartskakor (cookies) från Disqus, Piwik, Facebook, Google och Twitter för att anpassa innehållet och annonserna till användarna, tillhandahålla funktioner för sociala medier och analysera vår trafik. Vi vidarebefordrar information om din användning av vår webbplats till de sociala medier och annons- och analysföretag som vi samarbetar med. Du kan läsa mer om webbplatsens kakpolicy här. Denna sida drivs med webbverktyget Bolt. Av Mattias Lundbäck.

VR och Vårdvalssidan

Den hälsosamme ekonomisten finns även tillgänglig i VR. Har man HTC Vive eller Occulus Rift når man hifi://ekonomism genom att först installera appen High Fidelity som ger tillgång till en stor mängd olika virtuella världar. Sedan skriver man bara "ekonomism" i Goto-fältet i HiFi. Fältet motsvarar adressraden i en vanlig webbläsare.

Besök gärna www.vårdval.se - det enklaste sättet att hitta och jämföra vårdgivare.

Läs bloggkollegor

Anybodys Place Carl-Johan Westholm Cornucopia Danne Nordling Eskil Ullberg Fnordspottning Fredrik Malm Fredrik Segerfeldt Gustav Nipe Henrik Alexandersson Janerik Larsson Jonas Grafström Lennart Grundel Maria Abrahamsson Markus Uvell Mina Moderata Karameller Mattias Svensson Niclas Berggren Opassande Per Gudmundson Sjätte Mannen Tanja Bergkvist The Market Monetarist


Creative Commons-licens
Den hälsosamme ekonomisten av Mattias Lundbäck är licensierad under en Creative Commons Erkännande 4.0 Internationell licens.
Based on a work at https://www.ekonomism.us.

Sociala medier

Den hälsosamme ekonomisten är en blogg för dig som är intresserad av ekonomi, politik och teknik. Följ mig på Twitter för regelbundna uppdateringar. Läs mer om Den hälsosamme ekonomisten och Mattias Lundbäck här.


Linkonomism
Googelkonomism
Feedkonomism