Pseudohemsida för Carl Nettelblad

Hejsan!

Om du vill se min gamla hemsida här, som är lite sjuk och skrevs för att få godkänt på en introduktionskurs i datoranvändning, kan du göra det. På egen risk. Jag är i alla fall student på STP03 och civilingenjörsprogrammet i molekylär bioteknik, men nyligen antagen som doktorand i beräkningsvetenskap. Jag har bara lite examensarbetesformaliteter att avsluta först. På ett personligare plan vimsar jag vidare på egen hand, i brist på alternativ.

Om du skulle vara av slaget att undra om jag är tillgänglig för arbete eller annat är det bara att höra av dig. Visserligen är jag som sagt delvis uppbunden, men i rätt sammanhang kan man alltid hitta lösningar.

Över till något potentiellt intressantare: diverse projekt som jag fått för mig att lägga upp här.

CNtag

CNtag, Complex N-gram Tagger, är det första riktiga språkteknologiska som jag har gjort. Det är en statistisk ordklasstagger. Den slukar minne, har relativt lång körtid, gör kort sagt väldigt lite rätt. Men den är inte så mycket sämre än TnT (ingen länk då Thorsten Brants hemsida verkar vara på väg att byta adress) i rena slutresultat. Den skrevs som ett slutarbete i 5-poängskursen Korpuslingvistik. Jag har vissa hopp om att förbättra den när jag orkar. Förslag eller frågor mottages gärna.

  • Min artikel, slutrapporten i kursen
  • Dåvarande källkod, som PDF
  • Senare källkod (2005-04-12), med rättade buggar, vissa förändringar i själva algoritmen (ett extra viktningssteg), hastighetsoptimeringar, med mera.

    Man kan även kanske få mina slides för den muntliga presentationen av projektet, även om de nog inte tillför så mycket om man har läst artikeln och tittat på den kommenterade källkoden.

    Koden är i sin nuvarande form fritt tillgänglig, men om koden i sig används skulle jag uppskatta om jag anges som källa i alla fall i källkoden. Något motsvarande krav rörande binärfiler ställer jag inte, men om något arbete görs med detta som grund uppskattar jag givetvis ett eventuellt omnämnande av mig som inspirationskälla. Det vore också roligt att få höra av vem som nu har glädje av detta. (Särskilt med tanke på att jag bara har skrivit sidan på svenska...)

    CNlemma

    CNlemma är en statistisk lemmatiserare som jag skrev inom ramen för en kurs i datorlingvistisk lexikografi. Den bygger i första hand på suffixinformation, med linjär interpolering (för okända ordformer). Denna enkla konstruktion kompenseras av det faktum att den som indata tar en taggad version av texten, med exempelvis TnT. Om man har kompilerat programmet på en STP-dator kan användande se ut så här:

    cat /corpora/SUC/CORPUS/PAROLE/*.dge2 | ./CNlemma test.txt
    

    test.txt är här då en TnT-resultatfil. Mer specifikt krävs en fil med ett token och dess tagg per rad, förutom vissa rader, som kan inledas med % och vara kommentarer. Utdata blir en lista med lemman i stället. På stdin förväntas en PAROLE-taggad korpus i dge2-XML-notationen. Observera att källkoden gör vissa antaganden om nyrader i indata, vilket naturligtvis inte en seriös XML-parser skulle göra. Den är kort sagt skriven endast för att kunna hantera SUC i PAROLE och inget annat.

    Min ursprungliga avsikt var att försöka använda minimum-entropy eller liknande metoder för att optimera mina interpolationskoefficienter, men det har inte realiserats i någon användbar form. De koefficienter som används är i stället helt, tråkigt, homogena.

    Denna kod (i C++, har verifierats fungera med både g++ och Visual C++ av färskt datum) är naturligtvis också helt fritt tillgänglig. Skriv ut den, bränn den (utskrift eller på CD), läs den som godnattsaga. Tala dock gärna om ifall den gör nytta eller du har några frågor.

    CNröj

    På språkteknologiprogrammet gör man en massa i Prolog, vare sig man vill det eller inte. Ibland kan jag verka tillhöra den senare kategorin. Dock har man fyra dagar ledigt i rad Kristi himmelsfärd, så jag ägnade några månader åt att tänka att jag borde göra klart någon av mina "gjorde-aldrig-sista-labben-på-kursen"-kurser, och det fick bli LPII. Sedan ägnade jag torsdagen åt att våndas, fredagen åt att våndas lite till och låtsas arbeta och så, natten till lördag och under lördagen, kom CNröj till.

    Vad är CNröj?

    CNröj är ett minröjspel med väldigt lite socker. Det visar vad som händer när en ALGOL-derivatnörd plötsligt skall skriva något logikprogrammerat som omväxling igen. Då programmet har GUI är det bundet till en specifik Prolog-värd, den fria SWI-Prolog.

    Hur är CNröj licensierat och varför är det så bra?

    Jag utgick från ett av exempelprogrammen för att få ett kodskelett på hur GUI-biblioteket skulle användas. Den slutliga koden har ytterst få spår av det, förutom att licensen är GPL. Detta tycker somliga säkert är bra i sig. Dessutom kan du publicera dina bästa resultat på en blogg (manuellt...) och på det viset är CNröj en verklig killer app för Web 2.0.

    Hur hämtar jag CNröj?

    Här.

    OscPotPong

    Oscilloskop + potentiometrar = pong. När jag läste mätteknik skulle man göra ett projekt som ett kortare avslutande moment, på temat "datorbaserad mätteknik". Jag och min labbkamrat byggde ihop ett pongspel, med ett oscilloskop som "skärm" (uppvisande "paddlar" och "boll"), två potentiometrar som spelkontroller och alltihop kontrollerat via LPT-porten på labbdatorn. Alltihop genomfördes på en vecka. Då detta är långt mer komplicerat än något annan elektronik jag själv har byggt i övrigt var jag i alla fall mäkta stolt. Någon gång kommer kanske någon bild upp.

    Exjobb

    Pågår...

    DSBIIproj

    Mitt interna kodnamn på projektarbetet i den här kursen.

    Säg till om du vill ha ett ex av rapporten (har för avsikt att lägga upp den när den har blivit rättad, men kan glömma bort det), eller om länken till kurssidan efter stigande ålder slutar fungera.

    Disclaimer

    Mitt namn är Carl Nettelblad och detta material personligt, utan direkt koppling till någon institution eller Uppsala universitet, förutom där saker direkt anges vara kursarbeten. Ej heller utfästs några garantier, explicita eller andra, för att innehållet på denna sida i allt skall vara korrekt.