Godt språk – et viktig kriterie i dialogdata

I lengre tid har vi jobbet med å redigere tekstdata til bruk for maskinlæring til å trene en chatbot. Prosjektet har i høy grad vært et testprosjekt, hvor vi har eksperimentert med ulike datamodeller for maskinlæring, samt ulike former for tekstdata. Det har naturligvis medført en del utfordringer som vi skal forsøke å ta for oss i dette innlegget.

Våre predefinerte kriterier

Før vi startet hadde vi noen hypoteser og noen kriterier vi ønsket å følge:

  • Innholdet måtte være av en viss størrelse. Jo større, jo bedre.
  • Innholdet måtte bestå av dialoger, helst mellom 2 personer, og måtte naturligvis også ha mening.
  • Innholdet måtte ikke ha stygt språk eller upassende temaer.
  • Innholdet skulle ha norsk språk.

Filmundertekster som datamateriale

Selv om det var klart at vi måtte ha dialoger, var det svært vanskelig å finne denne type data på norsk. Vi endte derfor opp med å bruke undertekster til filmer, som i ganske stor grad inneholder dialoger, selv om materiale også inneholder tekst som ikke egentlig er gavnlig til formålet vårt. Eksempelvis er dialoger i film ofte basert på flere enn to personer samtidig som dialoger blir avbrutt når en scene skifter. Størrelsesmessig var det heller ikke så stort som vi ønsket. Det måtte altså inngås noen kompromisser i valg av data.

Materialet vi valgte bestod av 12 millioner linjer. Redigeringen foregikk i programmet Notepad++ som både har vanlig søk og erstatt – funksjon, men hvor man også kan redigere ved hjelp av Regular Expressions. Fordelen med Regular Expressions er at det gir mulighet for svært spesifikke og avgrensede muligheter i redigeringsprosessen.

Vi ønsket oss setninger i dialog med punktum, spørsmålstegn eller utropstegn som avslutning. Dessuten var det naturligvis essensielt at det var mening i dialogene. Selv om det ikke var snakk om perfekte dialoger, var formen av en slik karakter at det gav oss visse forventninger om at det kunne fungere.

Den språklige kvaliteten var svært varierende. Blant annet fant vi at noe av innholdet var blitt auto-oversatt av oversettelsesteknologi av dårlig kvalitet. Hovedproblemet her var feil ordstilling i setninger samt at en del begreper var blitt direkte oversatt fra morsmålet.

Utfordrende redigeringsjobb

Bruken av Regular Expressions (Regex) gjorde jobben mer effektiv og så avgjort også mer interessant. Men stadig vekk viste det seg at de ulike operasjonene ikke kunne løses ved hjelp av Regex og søk/ erstatt – metode, men krevde en menneskehjerne for å avgjøre hva som var riktig i hvert tilfelle.

Utover dette var det også en rekke temaer i innholdet som måtte unngås, fordi det var av upassende karakter. Vold, krig, rasisme og diskriminering var temaer vi ikke ville ha med, fordi dette teoretisk kunne medføre at chatboten ville lære seg negative holdninger.
Men ettersom vår chatbot så langt har ytret svært lite av verdi, ble det etter hvert også en erkjennelse at tilegnelse av negative holdninger ikke var vår største utfordring. Først og fremst var det viktigst å bare få den litt mer på glid, slik at den svarte med større variasjon enn noen få gjentakende setninger.
Dog ble det verste luket vekk når det ble oppdaget. Stygge ord ble erstattet med andre ord for å kamuflere ondskapen, når dette kunne gjøres på en effektiv måte.

Ved å inkludere tilhørende ord i søket, kunne man kontrollere og spesifisere hvilke resultater man ville stå igjen med.
Eksempelvis, ved å inkludere «Hvem faen […]» kunne man slette ‘faen’ uten at det ville volde grammatiske eller meningsbærende utfordringer i teksten. Dessverre var det ikke alltid så enkelt, fordi også banneord ofte inngår som meningsbærende del av en setning.
Selvfølgelig hadde vi også en stoppordsliste, men problemet med en stoppordsliste var at den ville luke ut hele setningen. Dermed ville man gå glipp av deler i dialogen.

Det ble etter hvert tydelig, at språk og grammatikk var det viktigste å fokusere på. Det betød å finne og slette auto-oversettelser og rette feil tegnsetting der man hadde mulighet til det på en effektiv måte.  I den grad feilstaving var et problem, var det ofte knyttet opp mot automatiske oversettelser og autokonverteringer hvor bokstaver var blitt maskinelt feiltolket.

Inkonsekvent tegnsetting

Å finne ut at æøå var blitt byttet ut med andre tegn, var ingen overraskelse, men heller ikke vanskelig å redigere. Mye tegnsetting var irrelevant for innholdets betydning og kunne enkelt slettes.
Etter som man dykket ned i filene, oppdaget man nye problemer som krevde nye, kreative metoder. Blant annet ble det klart at ved å redigere i riktig rekkefølge, kunne man løse noen utfordringer som ellers var umulige.

Lik tegnsetting med ulik betydning var en utfordring. Setninger var delt opp av et uvisst antall punktum som skulle illustrere pauser i dialogen. For eksempel var det mange av filmene som manglet punktum i slutten av setningen, mens andre filmer hadde tre punktum (pauseprikker) som avslutning selv om det var snakk om avsluttede setninger. Det som så ut som pauseprikker, kunne vise seg å være tre separate punktum.

Den vanskelige dialogen

Utover den konkrete redigeringsjobben på språk og grammatikk, ble det underveis også noen filosofiske overveielser rundt hva dialog egentlig er.  En dialog er en samtale mellom to eller flere personer, ofte med den hensikt å skape forståelse, kan man lese hos Wikipedia. Men hva handler dialogen om?
Det er langt mer komplekst; den kan handle om alt mellom himmel og jord. Den kan ha korte, konsise setninger fra hver person. Den kan også være lengre utredninger mellom to personer. Dessverre viste det seg også at det ikke alltid var sammenheng mellom spørsmål og svar i filmdialogen, selv når den foregikk mellom kun to personer og i utgangspunktet burde være sammenhengende og gi mening.

Kanskje fordi jeg også har pedagogisk bakgrunn, begynte jeg å sammenligne redigeringsjobben med barneoppdragelse. Et barn lærer enkle ting først, både språkmessig og kognitivt og så bygger man på, stein for stein etter hvert, med de mer komplekse og moralske temaer livet byr på.  

Det er i hvert fall logisk å tenke seg at en dialog til vårt formål bør starte enkelt og heller bli mer komplisert etter hvert.

Konklusjon

Som nevnt var det fra start klart at en rekke parametre måtte være på plass for at datagrunnlaget skulle gi de resultatene vi ønsket, nemlig å få chatboten til å føre en litt mer interessant samtale. Dette dreide seg om den totale størrelsen på datagrunnlaget og bredden på temaene.
Selv om vi hadde utfordringer hva gjaldt både innholdsmessig kvalitet og datamengde er det vår konklusjon at korrekt, godt og entydig språk er en svært grunnleggende parameter hvis man skal lykkes med chatbots, digitale assistenter og andre AI prosjekter hvor tekstdata inngår.

Hvis man har muligheten til det, er det også sannsynlig at man bør jobbe med dialogen som helhet. Det bør eksperimenteres med ulike typer av dialoger. Hvilken betydning spiller varigheten av dialogene? Er lange dialoger bedre enn korte? Er lange setninger bedre enn korte setninger?  Bør det defineres en start og en avslutning på hver dialog? Hvilken rolle spiller tegnsettingen, og kan denne utnyttes bedre? Med andre ord, gjenstår en rekke spørsmål om hva som kan gjøres annerledes, både hva gjelder datagrunnlaget og hvordan man bearbeider og redigerer dataene.

Det som er klart, er at vi for vår del nå har et datagrunnlag som gir oss flere muligheter. Vi kan fortsette redigeringsjobben som fremdeles gjenstår og legge til rette for nye tester. Uavhengig av dette vurderer vi om det kan være aktuelt å legge ut dataene på Github, slik at flere kan få tilgang til grunnlaget som vi har laget. Kanskje er det interessant for flere å benytte disse dataene eller å bearbeide dem videre. Kanskje noen ser andre muligheter?

Om dette er interessant, er det bare å ta kontakt med oss. Vi er også interessert i generelle innspill om prosjektet.