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