Festlig fredag: Her er Version2’s længste ord gennem tiderne

Illustration: Version2
Forretningsstandardiseringsprogram, nummerpladegenkendelseskameraer, incidenthåndteringsapplikationer, virtualiseringssoftwareleverandører, fuldtidslægesekretærstillinger. Se de længste ord i Version2's artikler.

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.

Læs også: Nem og gratis skygge-it: Vi putter emneord i skyen

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.

Læs også: Java-algoritme gætter Version2's emneord med en træfsikkerhed på 98 pct.

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.

Illustration: Version2

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.

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Følg forløbet
Kommentarer (7)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Jørgen Elgaard Larsen

Yderligere reduktion kunne opnås ved at normalisere bøjninger.

For eksempel dækker ordene menneskerettighedsorganisation, menneskerettighedsorganisationen og menneskerettighedsorganisationer
over samme begreb.

De bør alligevel regnes for ét emneord, så man kan med fordel nøjes med at gemme roden af ordet.

En for simpel algoritme vil naturligvis tro, at f.x. mest og mester er samme ord, men det er muligvis acceptabelt i praksis

  • 3
  • 0
Tania Andersen Editor

Hej Jørgen,

Ordene for oven er ikke emneord, men artiklernes tekster.

Men i mange NLP-algoritmer laver man grammatisk normalisering af korpus, som du nævner, eller stemming, som det kaldes i jargonen, men i Naive Bayes, som er den vi anvender, benyttes det som regel ikke, og fagkunskaben mener ligefrem, at det kan give ringere resultater end ved stemming. Og så krævede det også noget mere kode i sin tid - jeg sprang over, hvor gærdet var lavest, om man så må sige.

Mvh Tania/V2

  • 0
  • 0
Christian W. Moesgaard

Dansk er normalt betragtet som et isolerende sprog, ligesom Engelsk og Kinesisk, men det er ikke nær så isolerende som Engelsk, og slet ikke ligeså isolerende som Kinesisk.

Særligt danske navneord kan udvides nærmest uendeligt, og det er sådan set det vi gør, når vi opfinder de her latterligt lange navneord, som artiklen hentyder til.

Og man kan faktisk blive ved:
Skrivemaskinefarvebåndsudskiftningsekspertaspirant
Programmeringsparadigmeekspertuddannelseslærermesterrekrutteringskonsulent.

Osv.

Mange af dem er naturligvis nonsens, men det er faktisk en integral del af det danske sprog, og det er tilsyneladende ikke noget som version2's programmører har tænkt over, da de designede siden; siden kan faktisk gå helt i stykker hvis du skriver et tilstrækkeligt langt dansk ord i kommentarinputfeltet. :p

  • 3
  • 0
Louise Klint

Det er sjovt.
Må man finde på nogle selv? Helt uden server i skyen?

Jeg har parafraseret lidt over ugen, der gik.
Nyheder og hvad vi har talt om og sådan.

Tirsdag 1. behandlede folketinget lovforslaget om
bananrepublikutryghedsskaberforsvarsværnet, som CFCS/FE vil til at stå for.
Loven pålægger civilsamfundet at tilslutte sig statslige, militære
cyberusikkerhedsovervågningsforpligtelser, som ingen bakker op om.
CFCS/FE vil ligeledes tilbyde virksomheder og myndigheder frivillig
efterretningstjenesteserviceydelsesforebyggelse, vi gør klogt i at afslå,
udtaler formand for Cyberetisk Råd.
https://www.version2.dk/artikel/ny-cfcs-lov-nu-lagt-frem-virksomheder-ka...
https://www.version2.dk/artikel/cfcs-svarer-paa-lov-bekymringer-intet-pa...

Vi har talt, og taler, meget om sundhedsdata
https://www.version2.dk/artikel/forsker-vi-har-meget-liberal-adgang-borg...
Også om, hvorvidt myndighederne manipulerer eller misinformerer,
når det gælder adgangen til vores sundhedsdata. Anvender en
stråmandsordvalgsargumentationsstrategi imod hvilken, der anbefales
profylaktisk behandling med
sundhedsministeriummyteskabervaccinen.
https://www.version2.dk/artikel/forskere-sundhedsminister-afsporer-debat...
https://sum.dk/Aktuelt/Nyheder/Medicin/2017/December/Myter-og-sandheder-...

Familieopsporingsalgoritmeforvaltningsmyndigheden i Gladsaxe er atter aktuel
https://www.version2.dk/artikel/kommunalpolitikere-efterspoerger-etiske-...

Og mange har i går, lørdag, deltaget i de landsdækkende demonstrationer
imod lave normeringer i
børnetrivselsuegnethedsunderbemandingstilbuddene i landets daginstitutioner
https://www.dr.dk/nyheder/indland/demonstrerer-flere-paedagoger-det-give...
https://politiken.dk/indland/art7128667/%C2%BBHvis-p%C3%A6dagoger-bare-s...

En enkelt nyhed fra petitjournalistikken også, da den er IT-relateret, omhandler en af de mest succesfulde e-handels-startups nogensinde og fordi det er en
rekordsumsægteskabsbrudsverdenssensation
https://politiken.dk/kultur/medier/art7127052/Hun-f%C3%A5r-239-milliarde...

Samt et dødsfald:
Nodeskriversprintersømandskomponistjazzdirigentvirtuosen blev 84 år.
https://www.dr.dk/nyheder/kultur/komponist-og-kapelmester-ib-glindemann-...

Og – til slut – ugens mest omtalte allevegne:
De sort-hvide, super nuttede pelsdyr, også kendt som Zoos nye
udlejningsbambusgnaskerdiplomatattraktion.
https://www.dr.dk/tv/se/pandaerne-5/pandaerne-6/pandaerne-kommer-diploma...
https://www.dr.dk/nyheder/tema/pandaer-til-danmark

Det var ugerevyen. Bemærk bogstavrimene :)

  • 3
  • 0
Torben Mogensen Blogger

En metode til hurtigt at finde tekster, der ligner hinanden er minhashalgoritmen. Den går groft sagt ud på, at man hasher alle ord i en tekst med f.eks. 20 forskellige hashmetoder (eller bare forskellige parametre til en metode), og for hver metode gemmer man den mindste hashkode i teksten. Når man skal sammenligne forskellige tekster, tæller man hvor mange af de 20 minhashkoder, der er ens. Det giver et overraskende godt mål for lighed mellem tekster.

Er det noget, der kunne bruges til at finde relaterede artikler på V2?

  • 1
  • 0
Log ind eller Opret konto for at kommentere