58. Sökmotorerna Elasticsearch och Solr

Innan jag började jobba med sökteknologi hade jag aldrig befattat mig med sökmotorerna Elasticsearch och Solr tidigare. Numera vet jag att de används i såväl små som stora, offentliga som privata organisationer och att de är bra att känna till även om man inte primärt jobbar med sök!

Read More

57. Java-meddelandehantering med Apache ActiveMQ

I distribuerade system (system uppdelade på flera applikationer/datorer sammankopplade via internet) behöver olika tjänster och servrar kunna kommunicera med varandra, något som ofta sker med hjälp av en meddelandemellanhand (MOM, message-oriented middleware). Det möjliggör för en klient att göra ett API-anrop till en destination som sköts av mellanhanden. Mellanhanden behåller meddelandet tills det att en mottagare plockat upp det, vilket innebär att kommunikationen kan ske asynkront.

Read More

56. Builder-designmönstret i Java

Builder-designmönstret i Java är ett sätt att bygga oföränderliga objekt (eng. immutable objects) med hjälp av en och samma objektsuppbyggnadsprocess [1]. Oföränderliga objekt kännetecknas av att deras tillstånd (eng. state) inte kan förändras när de en gång skapats, något som ofta är önskvärt av flera anledningar, bl.a. enkelhet i design och användning och möjlighet till multikörning. De har inga set-metoder, bara final eller private-fält, tillåter inte underklassar att override:a metoder och inte innehåller heller inga metoder för att ändra föränderliga objekt eller referenser till dem [2].

Read More

55. HTTP-kommunikation och TSL-certifikat

Datakommunikation över internet regleras under kommunikationdprotokollet HTTP (Hypertext Transfer Protocol) som började utvecklas av Tim Berners Lee vid partikelfysiklaboratoriet CERN i Genève 1989 och introduceras till en bredare allmänhet under början av 90-talet. Med den allra första versionen, som kommit att kallas HTML 0.9. kunde man bara skicka HTML-sidor från webbservrar till webbklienter, och det som returnerades var antingen den önskade webbsidan eller en specialgenererad HTML-sida som beskrev problem i kommunikationen. Status- eller felkoder fanns inte [1].

Read More

54. Systemhantering i Linux

Linux-familjen består av en samling operativsystem (t.ex. Ubuntu, Fedora, Debian, …) som har gemensamt att de använder Linux-operativsystemkärnan. Det är en så kallad FOSS-mjukvara som började utvecklas av finländaren Linus Torvalds 1991. Linux är ett populärt operativsystem för serveradministration eftersom det är 1) säkert, 2) stabilt och 3) flexibelt [1].

Read More

53. Latent semantisk analys

Latent semantisk analys (eng. latent semantic analysis) (LSA) är en oövervakad, statistisk metod för att analysera dolda (“latenta”) relationer mellan dokument utifrån de ord som förekommer i dem. Det används bland annat för att identifiera ämnen i dokumentsamlingar (eng. topic recognition).

Read More

52. Dimensionsreduktion

Dimensionsreduktion (eng. dimensionality reduction) handlar om att reducera hög-dimensionella vektorrum till låg-dimensionella diton så att dolda relationer mellan dimensionerna – eller snarare dolda relationer mellan de lingvistiska egenskaperna/attributen (eng. features) som varje dimension består av – blir mer framträdande.

Read More

51. Markov-kedjor och dolda Markov-modeller

Konceptet Markov-modeller har dykt upp lite då och då under MLT-programmets gång och Jurafsky & Martin ägnar ett helt tilläggskapitel åt det i senaste utkastet av Speech and Language Processing (3:e upplagan 2020) på webben. Dolda Markov-modeller (eng. Hidden Markov Models, HMM) beskrivs där som en probablistisk sekvensmodell som för en given sekvens av en språklig enhet (bokstäver, morfem, ord, meningar, etc) beräknar en sannolikhetsdistribution över motsvarande etikettsekvens (t.ex. POS-taggar för varje ord i en inputmening).

Read More

50. Förlustfunktioner, AKA "när liten förlust är stor vinst"

Förlustfunktioner (eng. loss function) används inom maskin- och djupinlärning för att undersöka hur mycket en modells prediktioner skiljer sig från facit. Man söker att optimera förlustfunktionen, vilket innebär att hitta det globala minimumet i funktionen – där paramterarna (som kan uppgå till miljontals) ger minst förlust – vilket kan göras med stokastisk gradientnedstining. Men hur tar man då fram själva förlustfunktionen?

Read More

49. Vaccinationsboten - ett miniprojekt

Jag har länge velat göra något enklare programmeringsprojekt som inte är kopplat till mina studier. Såg en Twitter-bot som kvittrade ut en förloppsindikator för hur många procent av USA:s befolkning som hunnit vaccineras mot covid-19 och tänkte att det vore nice att göra något liknande för Sveriges vaccinationsstatistik.

Read More

44. Manjavacas et al. (2019)

Jag upptäckte ganska sent i mina uppsatsefterforskningar att lemmatisering (när man mappar en äldre stavningsvariant till en standardiserad ordboksform utan böjningar) behandlades lite separat från “vanlig” normalisering (när man går från en äldre stavningsvariant till en modern form med bibehållen böjning) inom forskningen. Idag detaljläser jag därför en artikel på temat lemmatisering och historiska språk som verkar utgöra SOTA på det här området: Improving lemmatization of non-standard languages with joint learning av Manjavacas et al. (2019).

Read More

43. Moores lag

Moores lag (eng. Moore’s law) handlar om transistorer. Transistorer är små halvledarkomponenter (eng. semiconductors) av material som kisel och silikon vars strömledningsförmåga ligger någonstans mellan fullt strömförande material som koppar och icke-strömförande isolatorer som porslin och plast. Dessa halvledarkomponenter kan manipuleras (“dopas”) för att styra när de ska släppa igenom ström, vilket motsvarar datorernas binära system med 1:or (ström) och 0:or (ingen ström).

Read More

42. Fleruppgiftsinlärning för historisk textnormalisering

Läser ännu en rekommenderad artikel på temat textnormalisering: Few-shot and zero-shot learning for historical text normalization (Bollmann 2019). Den handlar om hur man kan använda fleruppgiftsinlärning (eng. multitask learning) för att förbättra resultaten när man har att göra med små träningsset. Bollmann jämför 63 sådana multi-task-arkitekturer för sekvens-till-sekvens-baserad historisk textnormalisering på datasamlingar från åtta olika språk: engelska, tyska, ungerska, isländska, portugisiska, slovenska, spanska och svenska.

Read More

41. Bygga neurala nätverk i PyTorch

Neurala nätverk är grundbulten inom maskininlärning och består av lager på lager av artificiella neuroner som utför matematiska funktioner på indata och ger ett eller flera utdatavärden som prediktion. När vi bygger neurala nätverk i MLT-kurserna är PyTorch det maskininlärningsbibliotek som dominerar. Det är, som namnet antyder, baserat på ramverket Torch och programmeringsspråket Python. Ett annat känt maskininlärningsbibliotek för Python är Keras, baserat på TensorFlow.

Read More

40. Visuellt grundade metaforer, AKA "himmel + eld = solnedgång"

Spanar på idéer till projekt för AI-kursen och läser därför en artikel av Bizzoni och Dobnik (2020) som handlar om likheterna mellan visuellt grundade metaforer (gjorda av människor) och de missbedömningar som bildklassificerare ibland gör när de konfronteras med nya objekt. De undersöker till vilken grad man kan utnyttja den här mekanismen för att efterlikna mänskligt metaforskapande.

Read More

39. Historisk textnormalisering

Läser idag en artikel om olika metoder för normalisering av historisk text, skriven av Bollmann (2019) med titeln A large-scale comparison of historical text normalization systems. Historisk text kan avse exempelvis medeltida manuskript där stavningen är långt ifrån regelbunden, och normaliseringsuppgiften blir då att mappa de olika stavningsvarianterna av ett och samma ord till en standardform. Detta för att dels underlätta parsning och POS-taggning, och dels för att underlätta sökningar i historiska textkorpusar (Bollman 2019).

Read More

38. Noisy channel-modellen för stavningskontroll

Noisy channel-modellen (NCM) är ett formaliserat ramverk med många applikationsområden (bland annat maskinöversättning och taligenkänning), men här kommmer fokus att ligga på stavningskontroll. NCM betraktar det felstavade ordet som en förvrängd (eng. distorted) form av originalordet som skickats genom en “noisy” (brusig) kanal. Den förvrängda formen kan innebära att enstaka bokstäver bytts ut, försvunnit eller tillkommit.

Read More

37. Kodare-avkodare-modeller och uppmärksamhet

Kodare-avkodare-modeller (som jag väljer att kalla dem) kallas encoder-decoder models eller sequence-to-sequence models (aka seq2seq) på engelska och är nätverk som är bra på att generera kontextanpassade utdatasekvenser av godtycklig längd (Jurafsky & Martin 2020: kap 10). De tidigaste artiklarna från 2014 använder den här typen av neuralt nätverk för att förbättra maskinöversättning mellan franska och engelska, men enligt Jurafsky & Martin har kodare-avkodare-modellerna också visat sig användbara för automatisk textsammanfattning, fråga/svar- och dialogmodellering (ibid).

Read More

36. Symbolförankringsproblemet

I kursen AI: kognitiva system läser vi den här veckan artiklar med koppling till det som jag väljer att kalla symbolförankringsproblemet på svenska, och som går under benämningen symbol grounding problem (Harnad 1990) på engelska. Symbolförankringsproblemet har sitt urprung i kognitionsforskningens (och semantikens) försök att modellera hur vi människor kopplar ihop ord (och andra symboler) med deras respektive betydelser – vilket i sin tur väcker frågan vad betydelse eller mening egentligen är (Symbol grounding problem, 11-11-2020).

Read More

35. Använda en API

För det egna projektarbetet i Dialogsystem II-kursen blev vi instruerade att leta upp en API för en tjänst och integrera den i en chattbot. En API (eng. application programming interface) är ett mjukvarulager som tillåter dig att kommunicera med en extern webbsidas server, exempelvis för att logga in på en sida via ditt Google-konto (sidan måste då kommunicera med Googles API) eller för att, som i mitt fall, kunna få mitt dialogsystem att hämta information från mitt konto på Todoist.

Read More

34. Återkopplande neurala nätverk

Återkopplande neurala nätverk*recurrent neural networks (RNN) på engelska – är en typ av neurala nätverk som tillåter oss att ta den temporala aspekten av språk i beaktning. Medan framåtriktade neurala nätverk måste ha all information tillgänglig från början och analyserar indatat inom ett givet spann, gör RNN det möjligt att hantera indatat inkrementellt, utan att veta längden på datat på förhand, som vid t.ex. taligenkänning.

Read More

33. Stokastisk gradientnedstigning, AKA "hitta brantaste stigen ner till dalen"

Stokastisk gradientnedstigning – eller stochastic gradient descent – är en metod för att optimera förlustfunktionen (eng. loss function) i ett neuralt nätverk under uppträning. Förlustfunktionen visar hur mycket modellens beräkningar skiljer sig från verklighetens, och vi vill hitta det globla minimumet i förlustfunktionen där modellens parametrar har som bäst värden. Två vanliga metoder för att ta fram själva förlustfunktionen är Mean Squared Error och Cross Entropy.

Read More

32. GPU:er, AKA "pinsamt parallella"

GPU står för graphics processing units och är hårdvaran som underlättar maskin- och djupinlärning. I skolan använder vi MLT-programmets egna GPU-processorer (“mltgpu”) för maskininlärning, inklusive NLU-träning (natural language understanding) med Rasa. GPU:er kan ses i kontrast till CPU:er (central processing units), centralprocessorer, som är chip som finns i alla datorer och fungerar som hjärnan i datorn.

Read More

31. Framåtriktade neurala nätverk

Framåtriktade neurala nätverk, på engelska feed-forward neural networks, är den enklaste typen av neuralt nätverk. Det kallas framåtriktat eftersom beräkningen sker iterativt från ett neuronlager till ett annat utan att något skickas tillbaka (Jurafsky & Martin 2019: kap 7: sida 1). Som tidigare nämnts är neurala nätverk i grund och botten uppbyggda av logistiska regressionsklassificerare. Men det finns två särskiljande egenskaper.

Read More

30. Boktips - "Talk to me" (2019)

På Göteborgs stadsbibliotek hittade jag av en slump en ganska nyutkommen bok på temat röststyrda dialogsystem: “Talk to me - Amazon, Google, Apple and the race for voice-controlled AI” av James Vlahos (2019).

Read More

29. Logistisk regression

Logistisk regression är ett statistiskt verktyg som ofta används som vägledd baseline-algoritm inom maskinlärning. Det används för att klassificera en observation i endera av två klasser: sant eller falskt, högt eller lågt, positivt eller negativt etc (värden i binärt format, d.v.s. diskreta värden).

Read More

26. Synka en fork (GitHub)

Det finns två sätt att synka en fork så att den uppdateras med de ändringar som gjorts i den ursprungliga repon (AKA “uppströmsrepon”) efter forkningen.

Read More

25. Larsson (2015) och Larsson (2017)

Så här i början av höstterminen när man fortfarande ligger i fas och inte vill halka efter tänkte jag använde det här utrymmet så som jag från början avsåg att använda det - för rena kursanteckningar. För första lektion i Dialogsystem II som börjar den här veckan har vi två läsanvisngar: Larsson (2015) och Larsson (2017). Den första artikeln har vi redan haft som läsning i NLP-kursen, men jag minns inte om jag tog några anteckningar då, så here we go!

Read More

24. Kön, röst och virtuella assistenter

När jag arbetade med en röststörd virtuell assistent under praktikjobbet i somras började jag fundera över valet av kvinnlig eller manlig röst i sådana assistenter (tänk Siri, Google Assistant, Cortana och Alexa som alla har kvinnlig röst som default-läge) och vad som överhuvudtaget får en röst att låta karaktäristiskt kvinnlig eller manlig.

Read More

23. Skapa en virtuell miljö för Python med conda

Ibland kan det vara bra att skapa en virtuell miljö (eng. virtual environment) när man jobbar i olika Python-projekt. Det gör det nämligen möjligt att anpassa versionen av olika Python-moduler (t.ex. PyTorch) för enskilda projekt utan att det påverkar andra projekt. När man skapar en virtuell miljö skapar man en individuellt namngiven kopia av Python som håller koll på sina egna filer, mappar och path-variabler [1].

Read More

21. Cooper storage

I semantikkursen har vi den senaste veckan stiftat bekantskap med en teknik för att bryta ner och tolka meningar som innehåller kvantifikatorer: Cooper storage. Eftersom den är utvecklad av professor emeritus Robin Cooper från Göteborgs universitet (se Quantifications and Syntactic Theory från 1983) kändes det givet att ägna den lite extra uppmärksamhet här.

Read More

20. Lambdakalkyl med lite curry

Inom kursen Komputationell semantik (LT2213) konfronterades vi i förra veckan med något nytt och läskigt: lambdakalkyl (eng. lambda calculus). Sedan dess har jag skjutit upp att sätta mig in i det på allvar, men eftersom vi har en inlämningsuppgift på ämnet som strax måste in tänkte jag ta kvällen i akt och läsa på så mycket som möjligt innan jag går och lägger mig. Nu kör vi!

Read More

19. Tf-idf, AKA "Computing is too important to be left to men"

När man vill hitta dokument som matchar en viss söksträng, t.ex. “den stora älgvandringen”, har man ofta nytta av något som kallas tf-idf (term-frequency-inverse document frequency). Tf-idf är ett statistiskt mått på ett ords frekvens sett till dess förekomst i hela dokumentsamlingen, vilket är mer effektivt än att bara se till dess frekvens i varje enskilt dokument. Det löser problemet med att dokument kan variera i längd och att vissa ord är mer vanligt förekommande än andra, som “den” och “stora” i förhållande till “älgvandring”. Tf-idf används även för att vikta betydelsen av närliggande ord när man skapar ordvektorer.

Read More

18. "I am sorry to hear you are depressed"

Chattbottar och dialogsystem har varit lite av nisch hos MLT-programmet i och med en obligatorisk grundkurs och en valbar fortsättningskurs i ämnet. I motsvarande kapitel hos Jurafsky och Martin (2021, 3:e upplagan) görs en uppdelning i uppgiftsorienterade dialogsystem, som hjälper till med saker som att spela musik, hitta närliggande restauranger eller ringa upp någon åt dig (tänk Google Assistant och liknande röststyrda system), och regelrätta chattbottar, vars syfte är att kunna hålla igång naturlig konversation så länge som möjligt, något som exempelvis universitetslag tävlar om i Amazons årliga Alexa-pristävling.

Read More

17. Vad kännetecknar mänskliga dialoger?

Häromveckan gick NLP-kursen in på det som mer än något annat symboliserar språkteknologins reella framsteg och baksteg: dialogsystemen. Även om virtuella assistenter som Alexa och Google Home blivit allt vanligare år 2019, har den röststyrda tekniken ännu inte helt ersatt tangenterna och musklicken i våra datorer och mobiler.

Vari ligger då svårigheterna i att utveckla system som kan hantera dialoger med användaren på ett så övertygande sätt att det klarar Turing-testet? Mänskliga dialoger är ett komplext maskineri som kännetecknas av talarbyte, talakter, grounding, subdialoger, initiativ samt implikatur (Jurafsky & Martin 2019).

Talarbyte (eng. turns) omfattar två problem: dels att systemet måste kunna avgöra när användaren talat klart, sk endpoint detection (vilket kan vara svårt pga störande ljud eller pauser mitt i mening), och dels att det måste kunna avgöra när det själv ska sluta tala pga av avbrott från användaren för exempelvis rättning eller precisering.

Read More

16. Bash vs. Cmd vs. PowerShell

Redan under MLT-programmets första vecka fick vi stifta bekantskap med Unix-kommandotolken. Unix avser en samling operativsystem som härstammar från det ursprungliga Unix-systemet, utvecklat av AT&T (American Telephone and Telegraph Company) under 70-talet (tack Wikipedia!). Det kännetecknas av Unix-filosofin, vilket bland annat avser strukturen med små verktygsprogram som enbart fokuserar på en enda uppgift, men som gör det väl och dessutom kan kombineras med varandra (Hoffman 2016).

Read More

15. Bayes teorem

Eftersom jag har tappat räkningen över hur många gånger jag hört namnet “Bayes” nämnas under MLT-programmets gång, var jag tvungen att dubbekolla om jag inte skrivit något om Bayes teorem tidigare. Men det verkar inte som det. Teoremet har fått sin namn efter den engelske prästen Thomas Bayes (1702-1761) som först beskrev det, och utgör en grundbult inom sannolikhetsläran. Det formulerar sannolikheten för att något ska inträffa utifrån något annat, t.ex. sannolikheten för att solen ska stiga upp även imorgon ifall man har sett den stiga upp x antal gånger tidigare.

Read More

14. Grafbaserad dependensparsning och maximalt utspännande träd

De finns flera olika metoder för dependensparsning, bl.a. dynamisk programmering (Eisner-algoritmen), regelstyrd parsning och transitionsbaserad parsning (som behandlats i tidigare inlägg). Grafbaserad parsning är en fjärde metod som involverar letandet efter ett dependensträd som uppfyller ett visst värde i ett grafsystem med viktade kanter (verkar också kunna kallas bågar) som innefattar alla möjliga variationer av träd.

Read More

13. Transitionsbaserad dependensparsning

Transitionsbaserad dependensparsning (eng. transition-based parsing) har sitt ursprung i något som kallas shift-reduce-parsning. Inom shift-reduce använder man sig av en kontextfri grammatik, en stack, samt den ordföljd som ska parsas som input. Orden flyttas (genom “shift”) en efter en över till stacken, och de två översta orden jämförs mot högersidan i grammatikens regler. När en matchning hittats tas orden bort (“reduceras”) från stacken och ersätts av den icke-terminala symbolen i vänsterledet av regeln man matchat mot.

Read More

12. Dependensparsning och Universal Dependencies

Dependensparsning, som behandlas i kapitel 15 i Jurafsky & Martin (2009), skiljer sig från konstituentparsning genom att den syntaktiska strukturen i språket betraktas på ord- och inte frasnivå. Mellan orden råder riktade, binära, grammatiska relationer som representeras av bågar från de så kallade huvud-orden till dependenterna. Exempel på relationer är subjekt (NSUBJ), direkt objekt (DOBJ) och indirekt objekt (IOBJ), men även olika former av attribut (eng. modifier, MOD) och kasus (CASE) genom exempelvis prepositioner och postpositioner.

Read More

11. Konstituentparsning och CYK-algoritmen

Tillbringar måndagskvällen med att läsa kapitel 13 om konstituentparsning (eng. constituency parsing) i Jurafsky & Martin (2009). Man nämner två ambiguitetsproblem kopplade till den här typen av parsning: attachment ambiguity och coordination ambiguity.

Read More

10. Generativ grammatik och Chomsky-hierarki

Kontextfri grammatik (eng. CFG, context-free grammar) är en slags formell grammatik som grundar sig i konstituenter, dvs. idén om att grupper av ord beter sig som fristående enheter som kan bytas ut eller flyttas runt. Den består av regler som sätter ramarna för hur symboler i språket kan sättas samman, samt ett lexikon av ord och symboler. Symbolerna inom CFG delas in i två klasser: terminala och icke-terminala symboler. Terminala symboler är symboler som motsvarar ord i språket (genom lexikonet), medan icke-terminala symboler är symboler som uttrycker kluster eller generaliseringar.

Read More

9. Fonetik, fonologi och taligenkänning

Grundidén bakom taligenkänning (eng. speech recognition) och talsyntes (eng. speech synthesis) är samma som den bakom fonologi, nämligen att kunna bryta ner ord och yttranden i mindre beståndsdelar. Skillnaden mellan fonologi å ena sidan, och fonetik å andra, är att fonetik behandlar studiet av lingvistiska ljud (produktionen i den mänskliga talapparaten, den akustiska realiseringen och digitaliseringen av densamma), medan fonologin beskriver hur ljud realiseras i olika lingvistiska system (specifika språk och dialeter), samt hur dessa ljud förhåller sig till resten av grammatiken. Så medan fonetiken behandlar ljud i största allmänhet, i form av foner (de minsta urskiljbara ljudsegmeneten i mänskligt tal), sysslar fonologin istället med fonem (de minsta betydelseskiljande ljuden/fonerna) i ett visst system.

Read More

8. Minimum Edit Distance-algoritmen

Algoritmen för minsta editeringsavstånd är en icke-probibalistisk algoritm (alltså inte beroende av sannolikhetslära) som används för att beräkna stränglikhet utifrån antalet editeringsoperationer (insättning / eng. insertion: i, borttagning / eng. deletion: d och ersättning / eng. substitution: s) som behövs för att omvandla en sträng till en annan. Den är framför allt användbar i stavningskontrollssammanhang, där man vill korrigera isolerade ord som blivit felstavade genom att undersöka vilken sträng som ligger närmast till hands att byta ut den till. Jurafsky & Martin (2009:72-73) ger exemplet GRAFFE, som mer troligt är en felstavning av ordet GIRAFFE än GRAIL, eftersom strängavståndet (eng. string distance) mellan GRAFFE och GIRAFFE är mindre än det mellan GRAFFE och GRAIL.

Read More

7. Porter-stemmern

I kapitel 3 om finita transduktorer i Speech and language processing – mer specifikt i avsnittet om lexikonlösa finita transduktorer – nämns Porter-stemmern (eng. The Porter Stemmer). Det är inte första gången jag ser den figurera i en språkteknologisk text, så jag tänkte att det vore värt att undersöka lite närmare i en separat post. Men vad är då en stemmer?

Read More

6. Finite-state transducers och finita transduktorer

Finita transduktorer (FT) är något som behandlas i kapitel 3 av Speech and language processing, i anslutning till morfologisk parsning: “[p]arsing means taking an input and producing some sort of linguistic structure for it” (Jurafsky & Martin 2009:45). För att bygga en morfologisk parser krävs:

Read More

5. Finite-state machines och ändliga automater

Finite-state machines, finite-state automata eller ändliga automater på svenska refererar till en typ av matematisk flödesmodell för att modellera sekventiell logik (Lancelot Bors 2018). Det kan användas inom en rad olika omården för att beskriva regelbundna processer av olika slag (freeCodeCamp har ett exempel med en kaffemaskin), och även inom språkteknologin kan det användas för att modellera olika typer av text- och talprocessering (t.ex. tokenisering).

Read More

4. Reguljära uttryck

Reguljära uttryck är något som dykt upp i vår programmeringskurs på MLT-programmet redan andra veckan. Det är en algebraisk standardnotation för att definiera textsöksträngar i diverse applikationer. Strängen kan bestå av vilka alfanumeriska tecken som helst (inklusive kommatering och mellanslag: ␣). Det reguljära uttrycket kräver ett mönster, som i sin enklaste form kan vara ett enskilt tecken eller ord, t.ex. /?/ eller /ekorre/. De är också skiftlägeskänsliga; /a/ ger inte samma resultat som /A/.

Read More

3. NLP-forskning nu och i framtiden

I en intressant artikel [1] från tidskriften IEEE Computational Intelligence Magazine från 2014 beskriver författarna Cambria och White det språkteknologiska landskapet så som det såg ut då, och siar om hur det kommer att utveckla sig de närmaste årtiondena. Även om den har några år på nacken så ger den ändå en hygglig introduktion till ämnesområdet och de tekniker som används.

Read More

2. Ordvektorer, AKA "You shall know a word by the company it keeps"*

Häromdagen stötte på jag begreppet word2vec och var tvungen att luska i vad det innebär. Enligt den engelskspråkiga Wikipedia-artikeln refererar det till en grupp datamodeller som används för att generera s.k. word embeddings, d.v.s. ord som vektorer av reella tal, utifrån träningsdata. Vektorer är matematiska storheter som har såväl storlek som riktning (till skillnad från skalära storheter som enbart har en storlek, t.ex. temperatur eller ljusstyrka)[1].

Read More

1. Ngram och Zipf-Mandelbrot-lagen

Inleder den här bloggen med att förkovra mig i de begrepp och verktyg som figurerar i en artikel publicerad 2018 i tidskriften Corpus Linguistics and Linguistic Theory. Författaren har utifrån korpora skapade i Google Ngram Viewer velat undersöka hur språkliga förändringar (lexikala, syntaktiska och stilistiska) kan kvantifieras och visualiseras genom parametrarna i Zipf-Mandelbrot-lagen – en potens- eller exponentlag (”power law”) för sannolikhetsfördelning.

Read More