Sprogteknologi

Sprogteknologi (eng. Natural Language Processing, eller NLP)
er et tværfelt mellem datalogi, kunstig intelligens og lingvistik
som handler om behandling af naturlige sprog, såsom dansk og engelsk, ved
hjælp af computere. Sprogteknologi er derfor relateret til forskningsområdet
Menneske-datamaskine interaktion (HCI).

Forkortelsen NLP kan let forveksles med neurolingvistisk programmering.

Baggrund 

NLP som forskningsområde startede generelt i 1950erne, selvom der findes
enkelte tidligere forekomster. I 1950 udgav Alan Turing sin berømte
artikel, Computing Machinery and Intelligence som foreslår hvad man i
dag kalder for Turing-testen som et kriterium for intelligens.

Dette kriterium går ud på at et computerprogram skal kunne udgive sig for at
være et menneske i en skriftlig samtale mellem en menneskelig dommer, sådan at
dommeren ikke med overvejende sandsynlighed kan afgøre om samtalen er med et
menneske eller en computer på basis af samtalens indhold.

Georgetown-IBM-eksperimentet i 1954 gik ud på automatisk at oversætte over
60 sætninger fra russisk til engelsk. Forfatterne påstod dengang at
maskinoversættelse ville være et løst problem inden for tre til fem år, selvom
udviklingen viste sig at gå meget langsommere. Da man i 1966 udgav
ALPAC-rapporten hvor man konkluderede at de seneste ti års forskning ikke
havde været så frugtbar, som man forventede, faldt den økonomiske støtte
dramatisk. Indtil 1980erne var forskningsområdet mindre aktivt. Da blev de
første statistiske maskinoversættelsessystemer udviklet.

Blandt mere velkendte NLP-systemer fra 1960erne fandtes SHRDLU, som
arbejdede i begrænsede blokverdener med begrænsede ordforråd, ELIZA,
som var en simulering af en Rogeriansk psykoterapeut, skrevet af
Joseph Weizenbaum i perioden 1964-1966. Næsten uden information om hvordan
mennesker tænker eller føler er programmet ELIZA i stand til at udvise nærmest
menneskelig interaktion i form af spørgsmål. For eksempel kan en patient
sige "My head hurts," hvortil ELIZA kunne svare "Why do you say your head
hurts?"

I 1970erne blev flere konceptuelle ontologier udgivet, som var samlinger
af viden om den virkelige verden struktureret i form af data som et program
kunne behandle. Nogle eksempler er MARGIE (Schank, 1975), SAM (Cullingford,
1978), PAM (Wilensky, 1978), TaleSpin (Meehan, 1976), QUALM (Lehnert, 1977),
Politics (Carbonell, 1979), og Plot Units (Lehnert 1981). I denne tid blev der
også skrevet mange chatbots som fx PARRY, Racter og
Jabberwacky.

Indtil 1980erne var de fleste NLP-systemer baseret på komplekse mængder af
håndskrevne regler. I starten af 1980erne skete en revolution i form af
maskinlæringsalgoritmer til sprogbehandling. Dette skete som resultat af
den tids øgede regnekraft og at Chomskianske lingvistiske
teorier, hvori man generelt affordrer den korpuslingvistik som anvendes
inden for maskinlæring, aftog i dominans.

Nogle af de tidligste maskinlæringsalgoritmer såsom beslutningstræer
resulterede i systemer med if-then-regler som svarer meget til de
eksisterende systemer med håndskrevne regler. Efterfølgende har man dog i
stigende grad fokuseret på statistiske modeller hvor man anvender blødere,
probabilistiske afgørelser. -- ***Her mangler noget om cache-baserede systemer***

Mange af de tidlige fremskridt inden for NLP skete inden for
maskinoversættelse, blandt andet hos IBM Research hvor gradvist mere
komplicerede statistiske modeller blev udviklet. Her bliver flersprogede
korpusser anvendt fra blandt andet Canadas parlament og EU, da man her
har regler om at alle lovtekster skal oversættes til alle medlemslandenes
officielle sprog. En stor begrænsning i korpusbaserede systemer er at disse
korpusser er dyre og svære at lave. Derfor er et forskningsområde opstået til
at lære mere effektivt fra begrænsede mængder af data.

Senere forskning har fokuseret på læringsalgoritmer der er usuperviserede,
hvor man ikke på forhånd har annoteret sit korpus med sit ønskede resultat,
eller semi-superviserede, hvor man kun delvist annoterer sit korpus. Dette gør
resultatet mere upræcist, men til gengæld har man en gigantisk mængde af
ikke-annoteret data, for eksempel i form af World Wide Web, så man kan
kompensere for kvaliteten.

Sprogteknologiske problemstillinger 

Følgende er en række populære forskningsområder inden for NLP. Nogle af disse
er problemstillinger som har en direkte anvendelse, mens andre er abstrakte og
er delproblemer i større problemstillinger. Det som definerer et selvstændigt
problemområde er ikke udelukkende mængden af forskning, men også at det er
veldefineret, at der findes en standardmetrik og et standardkorpus til at
evaluere opgaven med, samt eventuelle konkurrencer mellem forskellige metoder.

 Automatisk opsummering af tekster: Givet en tekst, producere læselige resuméer, ofte af en bestemte slags tekster inden for et bestemt vidensområde.
 Forening af co-referencer: Givet en eller flere sætninger, finde hvilke ord som refererer til de samme objekter/entiteter. Et særtilfælde af denne problemstilling er anaforisk beslutning hvor man forsøger at forbinde alle personlige stedord med de navneord de henviser til.
 Diskursanalyse: En opgave er at identificere strukturen for en diskurs igennem en tekst, fx ved at markere sætninger som uddybende, forklarende, kontrastsættende osv. i forhold til tidligere sætninger. En anden opgave er at genkende og klassificere talehandlinger i en tekst, fx om noget er et ja-nej-spørgsmål, en påstand, en konklusion osv.
 Maskinoversættelse: Givet en tekst i et sprog, oversætte den enten til et andet sprog eller til samme sprog med andre parametre, fx forsimplet. Dette er en af de mest komplekse problemstillinger og klassificeres ofte som AI-komplet idet al slags menneskelig viden (grammatik, semantik, fakta om verden osv.) kræves for at løse opgaven tilfredsstillende.
 Morfologisk segmentering: Givet et ord, separere det i forskellige morfemer og identificere morfemernes klasse. Sværhedsgraden af denne problemstilling afhænger i stor grad af hvor kompleks morfologien (dvs. ordenes struktur) er for det givne sprog. Engelsk har en rimeligt simpel morfologi, hvilket ofte gør det muligt at springe denne problemstilling over og bøje et givet ord på alle tænkelige måder (fx open, opens, opened, opening) mens hvert ordbogsopslag på tyrkisk har flere tusinde ordformer.
 Genkendelse af egennavne: Givet en tekst, finde egennavne i teksten. Det kan forekomme trivielt på sprog hvor egennavne altid står med stort, men det er ikke en entydig indikator eftersom sætninger starter med stort forbogstav og nogle egennavne strækker sig over flere ord. Yderligere har mange sprog slet ikke store forbogstaver (fx kinesisk eller arabisk), og dem som har kan være inkonsistente med brugen af stort forbogstav (produkter og firmanavne som begynder med småt, fx iPhone).
 Generering af naturligt sprog: Konvertere information i en database til naturlige sætninger.
 Forståelse af naturlige sprog: Givet en tekst, omformulere den til en formel repræsentation, fx ved hjælp af førsteordenslogik. Forståelse af naturlige sprog kræver identifikation af en intenderet semantik ud fra mange mulige semantikker.
 Billedgenkendelse (OCR): Givet et billede af en tekst, bestemme teksten.
 Genkendelse af ordklasser: Givet en sætning, afgøre sætningsled og ordklasser. For eksempel kan det samme ord betyde forskellige ting: Jeg så en bil vs. Den var så flot. Nogle sprog har mere tvetydighed end andre. Sprog med bøjningsmorfologi som Engelsk er ofte tvetydige. Kinesisk er også tvetydigt fordi det er et tonalt sprog.
 Grammatisk fortolkning: Givet en sætning, konstruere et syntakstræ. Grammatikker for naturlige sprog er tvetydige og helt almindelige sætninge kan tolkes på tusindvis af måder hvor de fleste måder virker som nonsens for mennesker.
 Besvarelse af spørgsmål: Givet et spørgsmål, formulere et svar. Nogle spørgsmål har entydigt rigtige svar (fx Hvad er hovedstaden i Canada?), men andre spørgsmål kan have flere gyldige svarmuligheder (fx Hvordan bliver man stærk?)
 Udtrække relationer: Givet en tekst, identificere navngivne entiteter og deres indbyrdes relation (fx hvem er forælder til hvem, hvem ejer hvilket objekt).
 Sætningsdeling: Givet en tekst, afgøre hvor sætninger starter og stopper. Punktummer er vejledende, men ikke entydige da de også bruges i andre sammenhænge.
 Sentiment-analyse: Givet en tekst, udlede om den udtaler sig i en bestemt retning om et emne. Dette kan være nyttigt til at analysere tendenser.
 Talegenkendelse: Givet et lydklip af personer som taler, afgøre tekstrepræsentationen af det som bliver sagt. Dette er en af de mest komplekse problemstillinger og klassificeres også ofte som AI-komplet. I naturlig tale er der næsten ingen pause mellem efterfølgende ord, så segmentering af ord er et konkret delproblem. Desuden forekommer det at lyden for bogstaver der efterfølger hinanden blandes sammen -- et fænomen kaldet co-artikulation -- hvilket gør konvertering af det analoge lydsignal til et ord opdelt i enkelte bogstaver svært.
 Segmentering af ord: Givet en tekst, inddel teksten i separate ord. Denne problemstilling er triviel for mange skrevne sprog, men på fx kinesisk, japansk eller thai findes ikke grammatiske tegn som adskiller enkelte ord, og opgaven kræver derfor både viden om ordforråd og morfologi.
 Disambiguering af ordbetydning: Mange ord har mere end én betydning, og betydningen som giver mest mening afhænger ofte af konteksten. Typisk har man en ordbog eller en anden database som fx WordNet til rådighed.

Se også 
 Taleteknologi, talesyntese, talegenkendelse
 AI-komplet, kunstig intelligens, sprogforskning
 Maskinoversættelse
 Lingvistik

Eksterne henvisninger 
 Dansk dokumentationscenter for sprogteknologi (DanDokCenter)

Kunstig intelligens
 
Sprogforskning
Natursprogsbehandling
Talegenkendelse
Maskinoversættelse
Stavekontrol
Biblioteks- og informationsvidenskab