Språkteknologi

**Språkteknologi** (eng. **Natural Language Processing**, eller **NLP**) er et fagfelt som hører til innenfor informatikk, kunstig intelligens og lingvistikk. Språkteknologi handler om behandling av naturlige språk, slik som Norsk og Engelsk, ved hjelp av datamaskiner.

## Bakgrunn
NLP som forskningsområde startet i 1950 årene. I 1950 publiserte Alan Turing artikkelen *[[Computing Machinery and Intelligence]]* som foreslo å bruke hva man i dag kaller for Turing-testen som et kriterium for intelligens.

Kriteriet går ut på at et dataprogram skal kunne utgi seg for å være et menneske i en skriftlig samtale med en menneskelig dommer slik at dommeren ikke med overveiende sannsynlighet kan avgjøre om hen holder en samtale med et menneske eller en datamaskin.

## Språkteknologiske problemstillinger
Dette er en liste over noen av forskningsområdene innenfor NLP. 

* **Automatisk oppsummering av tekster**: Produsere lesbare oppsummeringer av en gitt tekst.
* **Finne ko-referanser**: Finne hvilke ord som refererer til de samme objektene/entitetene i en eller flere setninger. 
* **[[Diskurs|Diskursanalyse]]**: En oppgave er å identifisere strukturen i en tekst, for eksempel ved å markere setninger som dypgående, forklarende, kontrastgjørende osv. i forhold til tidligere setninger. En annen oppgave er å gjenkjenne og klassifisere talehandlinger i en tekst, for eksempel om noe er et ja-nei-spørsmål, en påstand, en konklusjon osv.
* **[[Maskinoversettelse]]**: Oversette en tekst enten til et annet språk eller til samme språk med andre parametre, som for eksempel forenklet språk. Dette er et av de mest komplekse problemene og er ofte klassifisert som *[[AI-komplet|AI-komplett]]*, siden all slags menneskelig kunnskap (grammatikk, semantikk, fakta om verden osv.) er nødvendig for å løse oppgaven tilfredsstillende.
* **Morfologisk segmentering**: Gitt et ord, skille det i ulike morfemer og identifisere klassen av morfemene. Vanskelighetsgraden av dette problemet avhenger i stor grad av hvor kompleks morfologi (dvs. ordenstrukturen) er for det gitte språket. Engelsk har en ganske enkel morfologi, noe som ofte gjør det mulig å hoppe over dette problemet og bøye et gitt ord på alle mulige måter (f.eks. ***'open***', *opens, opened,* *opening*) mens hvert ord i en tyrkisk ordbok har flere tusen ordformer.
* **Navnegjenkjenning**: Finn navn i en gitt tekst. Dette kan være trivielt i språk der egennavn alltid står med store bokstaver, men det er ikke en sikker indikator siden setninger starter med store forstaver og noen navn strekker seg over flere ord. I tillegg har mange språk ikke store forbokstaver (f.eks. kinesisk eller arabisk) og de som har kan være inkonsistente med bruken av store forbokstaver (produkter og selskapsnavn som begynner med små bokstaver, f.eks. *iPhone*).
* **Generering av naturlig språk**: Fra en gitt kontekst, generere naturlige setninger.
* **Forståelse av naturlig språk**: Omformulere en gitt tekst til en formell representasjon, for eksempel ved hjelp av førsteordenslogikk. 
* **Bildekennelse (OCR)** : Reprodusere en tekst fra ett bilde av teksten.
* **Ordklasseidentifisering**: Identifisere setningsledd og ordklasser i en gitt setning. For eksempel kan det samme ordet bety forskjellige ting: *Jeg <u>så</u> en bil.* vs. *den var <u>så</u> fin*. Noen språk har mer tvetydighet enn andre. Språk med bøyelig morfologi som engelsk er ofte tvetydige. Kinesisk er også tvetydig fordi det er et tonalt språk.
* **Grammatisk tolkning**: Konstruere et syntaksttre fra en gitt setning. Grammatikk for naturlige språk kan være tvetydig, helt vanlige setninger kan tolkes på mange måter der de fleste måtene å tolke setningen på virker usansynelige for mennesker.
* **Spørsmål-Svar**: Formulere et svar til ett gitt spørsmål. Noen spørsmål har helt korrekte svar (for eksempel *Hva er Canadas hovedstad?*), men andre spørsmål kan ha flere gyldige svarmuligheter (for eksempel *Hvordan blir man sterk?*) 
* **Identifisere relasjoner**: Identifisere navngitte entiteter og deres relasjoner fra en gitt tekst (f.eks. hvem er foreldre til hvem, hvem eier hvilken gjenstand).
* **Setningsdeling**: Bestemme hvor setninger begynner og slutter i en fitt tekst. Punktum er veiledende men ikke en sikker indikator siden de også brukes i andre sammenhenger.
* **Sentimentanalyse**: Identifisere sentimentet i en gitt tekst. Dette kan være nyttig for å analysere trender.
* **[[Talegjenkjenning|Talegjennkjenning]]**: Produsere en tekst fra ett gitt lydklipp av personer som snakker. Dette er et av de mest komplekse problemene og er også ofte klassifisert som *[[AI-komplet|AI-komplett]]*. I naturlig tale er det nesten ingen pauser mellom ord så segmentering av ord er et konkret delproblem. I tillegg blandes lyden av bokstaver som følger etter hverandre sammen, noe som gjør det vanskelig å konvertere den analoge lydsignalet til et ord delt inn i enkelte bokstaver.
* **Ordsegmentering**: Del teksten inn i separate ord. Dette problemet er vanskelig for mange skriftlige språk, spesielt i kinesisk, japansk og thai finnes det ikke grammatiske tegn som skiller enkelte ord. Denne oppgaven krever derfor både kunnskap om ordforråd og morfologi.
* **Disambiguering av ordbetydning**: Mange ord har mer enn én betydning og betydningen som gir mest mening avhenger ofte av konteksten.