I dette innlegget presenterer vi et enkelt flytskjema som vil gjøre det enklere å vite om ditt Natural Language Processing (NLP) prosjekt har et godt utgangspunkt eller om du bør ta en nøye vurdering før du setter i gang.
NLP er et underfelt av språkvitenskap, informatikk og maskinlæring. Det fokuserer på hvordan man programmerer datamaskiner til å behandle og analysere store mengder naturlig (menneskelige) språk. Typiske problemstillinger vil være å kategorisere dokumenter i forskjellige kategorier, tolke graden av positivtet og negativitet i en tekst, finne likheter mellom tekster og automatisk tekstoppsummering.
Basert på erfaringer fra tidligere prosjektet i Data Science-avdelingen i Bouvet Øst, har vi utviklet et flytskjema for å undersøke om et prosjektet er velegnet for NLP eller om man bør trå mer varsomt. Å følge dette flytskjemat vil kunne gjøre et NLP-prosjekt mer robust og gjennomførbart. Kan man svare "ja" på alle spørsmålene, vil man også spare mye tid, krefter og penger på blindveier. Vi ønsker derfor å dele våre erfaringer med andre som ønsker å sette i gang eller holder på med et NLP-prosjekt hvor man bruker maskinlæring.
Flytskjemaet bør gjennomgås før man setter igang med et NLP-prosjekt. Det er etter vår erfaring altfor ofte at målet med prosjektet ikke er godt nok definert, eller at man ikke har de nødvendige dataene for å svare på problemstillingen man ønsker å løse. Dette gjelder spesielt for maskinlæring av tekster på norsk. Flytskjemaet kan brukes som en sjekkliste for å vurdere om et prosjekt har det godt fundament, må utarbeides mer eller heller bør settes på hyllen.
Under har vi utbrodert spørsmålene i flytskjemaet med flere detaljer.
Er det et klart mål med prosjektet eller ønsker du bare å undersøke mulighetene? Om det blir satt konkrete og presise mål er det mulig å sjekke fremdriften mot målet kontinuerlig. Det blir også lettere å gjøre vurderinger av data og veivalg ettersom det er et klart definert mål for prosjektet.
Om det ikke finnes gode måter å vurdere om et prosjekt er vellykket eller ikke, hvordan vet man at man er i mål? Hvordan vet man at modellen som er levert er et godt nok produkt til å gi merverdi for bedriften? I tillegg blir det vanskelig å måle kvaliteten av resultatene modellen produserer ettersom man ikke har definert en god måte å vurdere resultatene.
Språk er ikke perfekt. Det vil alltid være en feilmargin. Spørsmålet er mer konkret, hvor høy er denne? Om det kreves nær perfekt nøyaktighet trengs det kanskje ekstra menneskelige ressurser for å sjekke kvaliteten. Perfekte resultater finnes dessverre ikke i den statistiske verden.
Det enkle er ofte det beste. Det gjelder også for med modeller. Det er ikke alltid nødvendig å bruke avanserte modeller, som kan kreve en stor datainnsamlingsjobb for å nå målet med prosjektet. Det bør derfor undersøkes om det finnes allerede eksisterende løsninger eller enklere modeller som løser problemet før man skyver løs med maskinlæring.
Er det nok data for å løse problemet eller er vi nødt å skaffe disse dataene for å løse prosjektet? Vil dataene vi har kunne gi svar på oppgaven i prøver å løse?
Er dataene tilgjengelig andre steder, eller må vi lage de selv?
Ethvert prosjekt har en ramme, en kostnad det tåler. Er det for kostbart å få tak i dataene vi trenger for å løse oppgaven trenger vi å undersøke et mindre datasett først før man går videre.
Det finnes det færre trente algoritmer for norsk enn det gjør for engelsk. Dette er enda mer prekært for nynorsk. Det krever derfor mer undersøkelse på hva man trenger for å løse modellen og om det er mulig for det gitte språket. For eksempel, trenger man å trekke ut egennavn, eller dato for å kunne bygge videre på dette? Finnes det noen effektive måter for dette for norsk?
Eksisterer det allerede modeller for språket vi ønsker å bruke?
Språkgrammatiske modeller krever mye data og eksempler for å gjøre en god jobb. Typisk har man ikke nok data for å gjøre denne jobben. Det vil også være et helt eget prosjekt i seg selv å gjøre denne modellen klar før man kan gå videre til det opprinnelige prosjektet.
Ikke bare krever utvikling av språkmodeller mye data, men det tar ofte lang tid. Det vil gjøre at kostnaden for det opprinnelige prosjektet blir høyt. Spørsmålet er om man heller ønsker å vente på at det vil engang i fremtiden vil bli tilgjengelige slike modeller, eller ønsker å bruke ressurser for å utvikle dette selv.
De fleste prosjekter som kategorisering, følelsesanalyse osv. og ikke er eksplorative krever en fasit som algoritmene kan bruke som en mal. Hvis ikke vil vi ikke kunne måle resultatene av algoritmen eller hvor gode disse er. Vi er derfor tilbake til det andre spørsmålet i sjekklisten vår. Finnes det noen gode måter å måle modellen vår og dens resultater?
Det er ikke utypisk at slike merkede data ikke finnes, eller at det ikke finnes tilstrekkelig i alle kategorier. Spørsmålet blir derfor om man skal begrense prosjektet til færre kategorier eller å genere disse dataene for å oppnå det som opprinnelig var ønsket.
Å merke data er et manuelt og tidskrevende prosjekt. Noen prosjekt handler om å lage denne automatiske kategoriseringen og ikke et delmål i seg selv. Det krever derfor eksperter som bruker tid og krefter for å merke dataene korrekt. Dårlige merkede data vil igjen gi dårlige modeller.
Vanligvis er et prosjekt veldig spesifikt i forhold til et gitt område i språket, eller et fagspråk. Denne kunnskapen sitter som regel ikke de som utvikler modellene på og de vil derfor trenge støtte fra en intern ressurs for å validere modellene og resultatene.
Om du klarer å svare godt på alle spørsmålene i flytskjemaet kan du være trygg på at du har et godt fundament for prosjektet ditt! Du sparer tid, penger og ikke minst pågangsmot med å ha gode definerte mål, riktige verktøy og nok av de riktige dataene.
Alle tilbakemeldinger angående vårt flytskjema eller om du ønsker et konkret input til akkurat ditt prosjekt, kontakt oss i Data Science avdelingen på Bouvet.
Vi ønsker deg lykke til med prosjektet!