Version2 har, som visse læsere nok er bekendt med, udviklet en machine learning-algoritme, der kan gætte emneord til nye artikler. I sidste uge tog vi de indledende skridt til at putte vores program på en server i skyen, og helst uden at det skal koste noget.
Man kan nemlig få sig en gratis server i skyen, hvis man kan klare sig for lidt: én gigabyte hukommelse. Det er ikke meget at rutte med. Og jeg er nærig og vil ikke svinge betalingskortet i Amazons sky-butik.
Det centrale punkt i programmet er tabeller over estimater, som er en slags afledte ordhyppigheder. Der skal være ét kommatal for hvert ord, og dem er der mange af - omkring 150.000 unikke stykker i samtlige artikler i Version2’s levetid.
Der er skal laves to tabeller for hvert emneord. Det hele fylder en del, så det ville være godt at skære lidt ned på størrelsen. I første omgang tænker jeg at skabe et indeks over ord, så tabellerne kun skal indeholde nummeret på ordet i et array.
Men det viser sig, at overlappet af ord i de forskellige tabeller er meget mindre, end hvad jeg forestillede mig: Kun omkring 1.000 stykker. Der skal altså andre boller på suppen, hvis luften skal trykkes ud af tabellerne.
Festlig fredag: Masser af hash
Måske kan man bytte hukommelse for cpu-anvendelse? Den nemmeste fremgangsmåde er hashing - altså at erstatte ordet med et slags tilfældigt serienummer, der bare er et almindeligt 32-bit heltal.
Når et ord-estimat skal findes, udregnes tallet ud fra tegnene i ordet, som så benyttes som nøgle i tabellen. Det tager ikke cpu’en lang tid, og der er ikke så mange ord i en artikel, der skal testes, så det går nok an, i forhold til ydelsen.
Men hjælper det på mit problem? Mit program er skrevet til Java 11, og her benyttes én byte pr. tegn, hvis strengen er i Latin-1-tegnsættet, altså Ascii plus det løse, og to bytes, hvis strengen indeholder Unicode-tegn uden for dette område. En 32-bit int fylder altid fire bytes. Vores algoritme har renset artiklerne ved kun at kigge på tegn fra a til å, så det giver altså én byte pr. tegn.
Så hvor lange er vores ord? Hvis der er mange ord på tre tegn eller mindre, giver ideen ikke nødvendigvis bonus. Jeg bliver nødt til at tælle ordlængder, så jeg udregne den præcise besparelse - ellers er det næppe værd at spilde kræfter på.
Men helledusseda, vi kan godt lide lange ord på Version2, skal jeg lige love for:
Jeg opnår en reduktion til 37 procent af udgangspunktet, ved at bruge hashing. Det skulle vel være argument nok for at bruge en times tid eller to på at skrive noget kode, der kan skabe de hashede tabeller.
Der er omkring 60 kollisioner - altså ens hashværdier for to forskellige ord. Det fylder så lidt i forhold til det samlede billede, at jeg snildt kan have dem i en lille tabel ved siden af.
Jeg kunne også gå amok og bruge et 24-bit hash - ved at tage mit 32-bit hash og benytte modulus-operationen
hash32 % 16777213
hvor tallet til højre er det sidste primtal før 2^24, som traditionen foreskriver. Det skulle give en reduktion til 28 procent og kræver lidt bit-fedteri, da Java ikke har nogen 24-bit taltype. Kollisionerne stiger til 250 stykker, men det er stadig kun en dråbe i forhold til besparelsen. Meget godt at have i baghånden, hvis det skulle være.
I skal da også have et histogram, folkens - det kommer her. Alle kan lide histogrammer.
Og endelig, som lovet: Listen over de længste ord, på 30 bogstaver eller mere. Don’t try this at home, som de siger på tv. Og måske kan det bruges som et afskrækkende eksempel for børn og på journalistuddannelserne.
Døm os ikke for hårdt, kære læsere, og god fredag.
Forretningsstandardiseringsprogram, informationssikkerhedsstrategien, billedbehandlingsfunktionalitet, standardiseringsorganisationen, borgerrettighedsorganisationer, borgerrettighedsorganisationen, forretningsservicevirksomheder, kommunikationsrådgivningsfirmaet, patientsikkerhedsmyndighederne, nummerpladegenkenddelseskameraer, softwaredistribueringssystemer, forretningsudviklingskonsulent, sundhedsstandardorganisationen, menneskerettighedskonventionens, informationssikkerhedsstrategi, informationssikerhedsdirektivet, brugertilfredshedsundersøgelse, projektinitieringsdokumentation, sikkerhedsannonceringstjeneste, informationssikkerhedsanalytiker, internetforbindelsesoplysninger, kundetilfredshedsundersøgelser, incidenthåndteringsapplikationer, projektinitieringsdokumentationen, patienttilfredshedsundersøgelser, menneskerettighedsorganisationen, menneskerettighedsorganisationer, systemintegrationsfunktionalitet, menneskerettighedskonventionen, antimisbrugsforskningsafdeling, standardiseringsorganisationerne, ansigtsgenkendelsesteknologien, ansigtsgenkendelsesteknologier, forretningsudviklingsansvarlig, internetrettighedsorganisationen, netværksrådgivningsvirksomheden, informationssikkerhedsniveauet, kommunalbestyrelsesmedlemmerne, menneskerettighedssorganisation, netværksledelsessoftwareprodukter, nummerpladeekspeditionskontorer, verdenssundshedsorganisationen, parrallelprogrammeringsbiblioteker, sikkerhedsinformationsteknologi, informationssikkerhedsreglerne, telekommunikationsprogrammeringsprog, informationssikkerhedsarkitektur, brugertilfredshedsundersøgelser, beslutningsstøttefunktionalitet, datacenteradministrationsapplikationen, virtualiseringssoftwareleverandører, professionsbacheloruddannelser, webstandardiseringsorganisationer, erhvervsidentitetadministration, videostabiliseringsteknologier, applikationsudviklingskonsulenter, transportsikkerhedsadministration, multimediedesigneruddannelserne, teknologiforståelsesfagligheden, databeskyttelsesbekendtgørelse, informationsteknologistuderende, serveradministrationssoftwaren, fuldtidslægesekretærstillinger, personaleadministrationssystemet, organisationsudviklingsprogram, informationssikkerhedsdirektiv, studieadministrationssystemerne, applikationsmonitoreringssoftware, cyberefterefterretningsselskab, virksomhedsressourceplanlægning, strømbesparelsesfunktionalitet, forbrugerinteresseorganisationerne, informationssikkerhedsmedarbejder, menneskerettighedsorganisation, lægesekretærfuldtidsstillinger, gevinstrealiseringsaktiviteter, internetregisterorganisationer, eksamensovervågningsprogrammet, kommunikationsovervågningskommissæren, menneskerettighedserklæringens, systemadministratorrettigheder, indholdsgenkendelsesalgoritmer.

...men det er dyrt at lave god journalistik. Derfor beder vi dig overveje at tegne abonnement på Version2.
Digitaliseringen buldrer derudaf, og it-folkene tegner fremtidens Danmark. Derfor er det vigtigere end nogensinde med et kvalificeret bud på, hvordan it bedst kan være med til at udvikle det danske samfund og erhvervsliv.
Og der har aldrig været mere akut brug for en kritisk vagthund, der råber op, når der tages forkerte it-beslutninger.
Den rolle har Version2 indtaget siden 2006 - og det bliver vi ved med.