Terug

Waarom Google translate soms (nog) vreemde vertalingen geeft...

NLP voor beginners

Je hoort het wel vaker. De computer kan geen “open vragen” interpreteren, “gesloten oefeningen” wel. Een stuk software kan perfect kruiswoordraadsels, invuloefeningen, combinatie-oefeningen en dies meer verbeteren (nadat een gebruiker ze heeft ingevuld), maar open vragen zijn een ander paar mouwen. De computer weet niet veel raad met vragen als “Waarom probeerde België zich los te maken van Nederland in 1830 (en is het nog gelukt ook)?” 

Natural Language Processing of NLP probeert die taalkundige softwareproblemen op te lossen. Het kent al een lange ontwikkelingsgeschiedenis, maar heeft nog een hele weg af te leggen. We proberen in dit artikel uit te leggen hoe NLP-toepassingen zoals Google Translate werken. Misschien kijk je achteraf met ogen vol verwondering naar die gekke vertalingen die soms (vaak) wel eens opduiken in Google Translate. Geloof je me niet? Lees dan even verder en leer de grote struikelblokken van het softwarematig begrijpen van menselijke talen kennen.



Beeld je de volgende oefening in:
Op 6 ......................... vieren we de verjaardag van …...........................
Zie ginds komt de ......................... uit ............................ weer aan.

We kunnen een stuk software schrijven dat dit soort oefeningen perfect kan verbeteren. We schrijven het zo dat ook andere zinnen kunnen ingevoerd worden. Een docent/leraar zou op de volgende manier een oefening kunnen aanmaken die door de software automatisch wordt omgezet in een invuloefening:

Op 6 <antwoord>december</antwoord> vieren we de verjaardag van <antwoord>Sinterklaas</antwoord>

De software weet dat hij alle woorden tussen de markering “<antwoord></antwoord>” moet verbergen. Bovendien kan hij zelf tellen hoeveel vragen er zijn. In de eerste zin moeten twee woorden worden ingevuld. De oefening staat dus op 2 punten. Maar hier duikt meteen een probleem op. Wat als de student/leerling i.p.v. december gewoon een 12 invoert, of i.p.v. Sinterklaas, “de sint”? Dit kan je als docent toch onmogelijk fout rekenen?

Heel wat programma's lossen dit op door aan de persoon die de oefening samenstelt te vragen alle mogelijke antwoorden in te voeren. In ons geval zou het er dan als volgt kunnen uitzien:

Op 6 <antwoord>december/12</antwoord> vieren we de verjaardag van <antwoord>Sinterklaas/de sint</antwoord>

De leraar voert hier alle mogelijke antwoorden in, telkens gescheiden door een schuine streep. Maar ook dan zijn de problemen niet helemaal van de baan. Want wat moet je als docent doen met een leerling met dyslexie die “demecber” schrijft of “sntriklaas”? Ook die antwoorden moeten goedgekeurd worden. Uiteraard niet voor iedereen, enkel voor leerlingen met een schrijf/taalprobleem. Het zou niet zinvol zijn om alle mogelijke schrijffouten vooraf in te voeren. Bovendien zouden leerlingen zonder taalproblemen dan rijkelijk beloond worden. 

Vaak gaat men ervan uit dat software niet in de mogelijkheid zou verkeren om hier een echte oplossing voor te bieden. NLP of Natural Language Processing kan echter heel wat van deze beperkingen opvangen.



NLP combineert elementen uit de wetenschap, de taalkunde en het domein van Artificiële Intelligentie (AI). Twee belangrijke domeinen waarop NLP zich toespitst zijn

  1. het afleiden van betekenis uit menselijke (natuurlijke) talen en
  2. het genereren van “natuurlijke taal” (denk aan Google Translate).

Turingtest: AI of slechts een stapje richting AI?

Alan Turing legde de basis voor NLP met zijn beroemde Turingtest waarbij een mens en een machine op afstand in vraag-antwoord-stijl met elkaar communiceren. Als de machine de mens kan overtuigen dat hij “eveneens een mens” is, dan evenaart de machine in Turings ogen de menselijke intelligentie. De computer slaagt in de test als hij in meer dan 30% van de tijd voor een mens wordt aanzien.

Joseph Weizenbaum ontwikkelde tussen 1964 en 1966 ELIZA, de eerste beroemd geworden “chatbot”. ELIZA simuleerde een psychotherapeut, een goed uitgangspunt om in vraag-antwoordstijl te werken. Omdat de kennis van ELIZA erg beperkt was, antwoordde de “chatbot” vaak met open vragen zoals “Waarom zeg je dat je hoofdpijn hebt?”. De supercomputer Eugene Goostman slaagde in juni 2014 voor de test door het “brein” van een 13-jarige te simuleren.

Taal en de echte wereld vertalen voor computers

Om een machine (computer, software...) taal te laten begrijpen, moet ze ook de betekenis van een tekst of zin kunnen achterhalen. Wanneer een kind taal leert, vertaalt het simultaan de werkelijkheid naar taal en omgekeerd. Een dorp bevat straten en huizen, een huis bevat kamers, kamers bevatten meubels enz. Woorden en begrippen hebben relaties en staan in verband met elkaar... Woorden en begrippen vormen netwerken, interfereren met elkaar enz. In hun hoofd vormen en herkennen kinderen stapsgewijs al die relaties en begrippenkaders... ze krijgen een beeld van de wereld en van de werkelijkheid: een ontologie. Vanaf de jaren 1970 zagen programmeurs in dat het nodig was om ook voor NLP zulke “ontologieën” te ontwikkelen. De “relaties” en “begrippenkaders” uit de echte wereld moesten vertaald worden naar gegevens die door een computer konden begrepen worden. Voorbeelden van zulke “ontologieën” zijn ondermeer MARGIE, SAM en PAM... Ze leidden tot nieuwe chatbots zoals Parry en Jabberwacky.

Deze manier van werken had tot gevolg dat in de jaren 1980 de meeste NLP-systemen bestonden uit eindeloze reeksen regeltjes, tot verregaande schematisering van taal. Vanuit softwarecode gezien leidde dit tot eindeloze “if-else”-structuren. Je kent het wel: “Als (if) je braaf bent, krijg je een koekje, anders (else) een stokje.” In de werkelijkheid zit er veel meer variatie. Het is mogelijk dat het kind anders altijd heel braaf is en nu één keertje stout. Neem je dan het vieruurtje af? In de werkelijkheid verloopt niet alles zwart (1) – wit (0), het is niet altijd zus of zo. Als je 4 tekorten hebt op je rapport is de kans groot dat je mama boos is, tenzij ze weet dat je heel erg je best hebt gedaan. In de echte wereld wegen we voortdurend af, volgen we niet altijd stricte regels, werken we volgens waarschijnlijkheden en statistische kansen.

Heel wat nieuwe NLP-systemen zouden zich gaan baseren op zulke statistische modellen. Die “revolutie” binnen de NLP-wereld was ook een gevolg van de beperkte rekenkracht van de toenmalige generatie computersystemen. Gokken ging nu eenmaal sneller en makkelijker dan eindeloze reeksen “if”- en “else”-structuren te doorlopen. Ook de taaltheorieën van Noam Chomsky, de Amerikaanse taalkundige, die grammaticale gelijkenissen tussen talen zocht, eerder dan verschillen, vormden een rijke inspiratiebron.

Zulke statistische systemen werken veel beter in het geval van “onverwachte invoer” van de gebruiker (vb. sniterklaas i.p.v. Sinterklaas). In de echte wereld zijn afwijkingen en fouten immers niet ongewoon, integendeel. Vooral op het vlak van “vertalingen” bieden de statistische technieken succes. Veel vertaalprogramma's die gebaseerd waren (en soms nog zijn) op woordenlijsten (een soort vertalende woordenboeken) liepen al snel tegen hun grenzen aan. Je kan immers geen zinnen vertalen door de individuele woorden te vertalen, maar door kleine brokjes data te vertalen en hieruit ook te “leren”. Statistische systemen zijn echter ook niet heiligmakend (denk aan Google Translate). Recent ligt de focus op een combinatie van beide technieken: de “harde regeltjes”-weg en de statistische techniek.

Het mag duidelijk zijn dat we ondanks het aanvankelijke optimisme in de jaren 1960 nog een hele weg moeten afleggen vooraleer machines menselijke talen begrijpen en er mee kunnen communiceren. Toch staan de ontwikkelingen niet stil. Bereikt de machine dan echt “kunstmatige intelligentie” zoals Alan Turing stelde? Vreemd genoeg verandert de betekenis van AI (artificial intelligence) bij elke nieuwe vooruitgang. Zo werd “schaken” lange tijd als het toppunt van menselijke intelligentie gezien. Toen de IBM-computer Deep Blue de wereldkampioen schaken Garry Kasparov versloeg, verloor schaken plots veel van zijn allure. De volgende uitdaging kwam er aan: computers zouden nooit creatief kunnen antwoorden op “open” vraagstellingen. In 2010 ging IBM's supercomputer Watson de uitdaging aan en won: hij versloeg met glans de “all-time-greatest human Jeopardy champions, Ken Jennings en Brad Rutter”1. De Jeopardyquiz stelt open vragen over alle domeinen van de menselijke cultuur. De vragen bevatten tal van woordspelingen en hints, maar zelden een duidelijke vraagstelling.

Op tal van terreinen die vroeger als uniek voor de menselijke intelligentie werden gezien, steekt de machine zijn menselijke tegenspeler voorbij. Machines zullen nooit gevoelens hebben of bewustzijn. Maar wat betekent dit precies?

Tekst begrijpen, the NLP-way

De hond slaapt in zijn mandje. Jacky is heel erg lief. Als ik thuis kom, komt hij al kwispelstaartend naar me toegelopen. Waar blijft hij vandaag? Weet jij het? Ik ben zo bang dat hij weggelopen is.

Als menselijke lezer snap je meteen waarover dit korte tekstje gaat. Hoe kunnen we een machine leren om deze tekst te begrijpen? Tussen mens en machine is er in dit geval al meteen een immens verschil. Een kind leert al snel een visueel beeld van een hond te koppelen aan het begrip “hond” en de bijhorende geluiden. Denk maar aan de mama's en de papa's die vragen: “En, hoe doet de hond? Nee, niet miauw.” Het taalmechanisme in het hoofd van het kind koppelt aan de hond bepaalde acties zoals blaffen, lopen, kwispelstaarten, maar ook onderdelen zoals staart, poten, tong... Een heel kader, onderdeel van de “wereldontologie” in het hoofd van het kind. Maar hoe vertalen we die taalverwerking naar een computer? Oeps, dat is wat anders.

Laat ons eerst eens de tekst scheiden in zijn onderdelen: zinnen (sentence breaking). Dat kan eenvoudig door te zoeken naar leestekens zoals punten, vraagtekens of uitroeptekens. Dit werkt perfect voor heel wat talen, maar niet voor pakweg Arabisch, Chinees of Japans, want daar is het gebruik van leestekens onbekend. Vervolgens kunnen we de zinnen splitsen in hun diverse woorden (word segmentation), maar dat werkt al evenmin voor de genoemde talen: Arabisch kent bijvoorbeeld geen door spaties onderscheiden woorden. Daar bepaalt het uitzicht van een bepaald karakter (letter) of het gaat om het begin, het midden of het einde van een woord.

Zinnen bepalen of ze iets meedelen of eerder iets vragen (het vraagteken), en vragen op hun beurt kunnen open of gesloten (ja of neen, if of else, 1 of 0) zijn. De soort zinnen wordt bepaald door de “discourse analysis”. De machine kijkt vervolgens naar de individuele woorden en probeert die te herleiden tot hun basis of stam in een proces dat “stemming” en “morphological segmentation” heet. In een taal als het Engels is dit een relatief eenvoudig proces:

open is de “stam” van open, opens, opening, opened...

In talen zoals het Turks is dit een uiterst moeizame techniek. De stam is niet noodzakelijk hetzelfde als de morfologische “wortel” van het woord. Meestal volstaat het dat verwante woorden dezelfde stam bevatten. Heel wat zoekmachines behandelen woorden met dezelfde stam als synoniemen om de zoekterm enigszins uit te breiden (conflatie). Google gebruikt “stemming” sinds 2003. Voordien zou de zoekterm “vis” niet “vissen” of “gevist” opgeleverd hebben.

Dit leidt soms tot foute resultaten. De machine kan teveel resultaten leveren (overstemming) zoals wanneer je “universiteit” zoekt en ook “universum” krijgt. In dit geval behandelt de machine beide woorden door hun gemeenschappelijke stam als synoniemen. In andere gevallen krijg je te weinig zoekresultaten (understemming).

Bij woorden zoekt het NLP-systeem niet alleen naar de stam, maar bovendien ook naar de woordsoort: gaat het om een adjectief of een zelfstandig naamwoord? Bovendien kunnen zelfstandige naamwoorden ook eigennamen zijn.

Jacky is een hond.

Deze techniek van “named entity recognition” werkt simpelweg door naar hoofdletters te kijken. Maar ook dit levert problemen op. Bij het begin van een zin schrijf je steevast een hoofdletter. In het Duits krijgen dan weer alle naamwoorden een hoofdletter.

Jacky ist ein Hund.

En in het Engels schrijf je ook een hoofdletter als je het over jezelf hebt:

I, I wanna be your dog.

De woordsoort wordt vaak bijgehouden in een soort lexicon, een soort lijst waarin op basis van de stam en eventuele voor- en achtervoegsels de woordsoort wordt bepaald (Part-of-speech tagging). Maar eenvoudig is dit niet. Immers, afhankelijk van de zin kan een woord iets compleet anders betekenen:

Ik speel met de bal op het bal.

Je merkt het al. De betekenis zit niet in het woord alleen, maar ook in zijn relatie met andere woorden: homoniemen (word sense disambiguation). De volgende zin klinkt afhankelijk van tegen wie (je docent) of wat (een eik) je het zegt helemaal anders, maar een NLP-systeem heeft het er moeilijk mee:

Je bent een eikel.

Via de techniek van “natural language understanding” probeert een NLP-systeem logica te vinden in korte fragmenten tekst. Welke adjectieven horen bij zelfstandige naamwoorden (conference resolution)? Wat zijn de onderlinge relaties tussen objecten in een zin (relationship extraction)?

Op die manier probeert een NLP-systeem stilaan de zin te “parsen”, een stamboom te maken van een zin en tenslotte van het hele verhaal.

“Je bent een eikel,” zei ik tegen de directeur. Ik was woedend. Hij werd door mijn uitspraak eveneens razend.

Deze zin verklapt hoe beide partijen zich voelen. Een NLP-systeem kan op basis van de betekenis van woorden en de frequentie waarmee ze voorkomen, raden wat het gevoel is dat uit een tekst spreekt: sentiment analysis. Je kan het zelf uittesten op https://semantria.com/.

 

Fouten laten herkennen door een machine vraagt geen “hogere” intelligentie.



 

Een basisvoorbeeld van “tokenization”: van elk woord wordt bepaald of het alfabetisch, numeriek of symbolisch is:

 

Een voorbeeld van “tagging” waarbij van elk woord de woordsoort wordt opgegeven op basis van een “lexicon” (een woordenlijst):

Robotjournalisme

Tekstbegrip kan dan voor digitale systemen nog relatief moeilijk zijn, toch zijn steeds meer artikels niet meer door mensen geschreven. Google kocht Jetpac, een app die op basis van image recognition-algoritmes automatisch stadsgidsen genereert. Associated Press laat duizenden artikels schrijven door robotschrijvers. Betekent dit dat het einde van de “menselijke journalist” in zicht is? 1

Het onderstaande artikel werd door een robotjournalist geschreven:

Aerie Pharmaceuticals Inc. (AERI) on Tuesday reported a loss of $13.1 million in its third quarter. The Research Triangle Park, North Carolina-based company said it had a loss of 54 cents per share. Losses, adjusted for stock option expense, came to 44 cents per share.

Het artikel voldoet aan de vereisten voor dit soort artikels: het is correct en gedetailleerd. Uiteraard moet je je bij een robotjournalist niet een humanoïde robot voorstellen die op een toetsenbord teksten zit in te tikken. Het gaat om een stuk software dat “natuurlijke taal” produceert. Auteur van dienst is in dit geval WordSmith van de softwareproducent Automated Insights. In 2013 produceerde WordSmith wereldwijd 300 miljoen nieuwsverslagen voor diverse klanten, meer dan alle “menselijke” journalisten samen en vooral veel goedkoper...

Volgens Automated Insights komen de jobs van echte journalisten niet in gevaar:

“We’re producing articles that never would have existed in the first place,” he says. “AP was doing 300 corporate-earnings stories per quarter; they’re now doing about 4,440. So 4,100 of these stories would not exist without Wordsmith.”
“The computer handles the who, what, where and when, and humans are freed up to ask why and how.”

De LA Times zet Quakebot in om geautomatiseerd artikels af te leveren op basis van data van de US Geological Survey (aarbevingen). Inleving, gevoel, medeleven…. zijn vreemd bij dit soort artikels, maar dat is voor "objectieve" verslaggeving ook niet nodig. “Creatief schrijven" ligt voorlopig nog buiten de mogelijkheden, want de algoritmes voeden zich met gestandaardiseerde informatie, een beetje te vergelijken met gestructureerde data in een rekenbladprogramma. Een van de mogelijke pistes om meer menselijke "warmte" in een tekst te steken is door de data aan te vullen met informatie geleverd door sensoren. Shazam is een bekend voorbeeld van een stuk software dat op basis van geluidsherkenning over 'semi-'menselijke intelligentie lijkt te beschikken. Googles Jetpac gaat in Instagramafbeeldingen op zoek naar "tags" die verwijzen naar menselijke ervaringen en cultuur. Op die manier zoekt en vindt Jetpac de leukste of hipste plaatsen.

Simon Colton is professor in "computational creativity" aan de Universiteit van Londen. Hij begeleidt het "What-If Machine"-project, een initiatief van de EU om de grenzen van softwarematige creativiteit af te tasten. Hij vertelt over die pogingen:

“To me these projects [such as Wordsmith] are straightforward data visualisations. (…) Instead of pie charts and graphs they do words, and they miss various aspects needed for a good read. I tell people not to worry about their creative jobs being threatened by automation because of what I call ‘the humanity gap’. Even if software was good at wit, humour and writing style, it would not be human. If you want human insight, you’re not going to get it from a computer any time soon.”

Vaak hoor je dat Wikipedia-informatie onbetrouwbaar is. Nochtans zijn een massa artikels niet meer door menselijke auteurs afgeleverd maar door software-algoritmes. De meest bekende Wikibot luistert naar de naam Lsjbot, geprogrammeerd door de Zweed Sverker Johansson. Lsjbot schraapt informatie van betrouwbare bronnen en schrijft korte artikels over onderwerpen gerelateerd met dieren. Per dag levert de bot ongeveer 10 000 artikels af. In totaal zouden ongeveer 8.5% van de artikels van de (Zweedse) Wikipedia geschreven zijn door Lsjbot.

Wikipedia zette voor het eerst een bot in in 2002. Die "Rambot" leverde per dag duizenden artikels op over zo wat elk(e) dorp, stad of staat van de Verenigde Staten en ook van een aantal andere landen. Een robot onder de gepaste naam Asteroids schraapte data van de NASA en leverde artikels over… asteroïden. Op dit moment zijn er meer dan duizend verschillende Wikibots aan het werk: ze verbeteren teksten en tegenstrijdigheden… De meest actieve is Cydebot die meer dan 4.5 miljoen aanpassingen aanbracht. 2

Toch getuigt de techniek voor het geautomatiseerd schrijven van artikels niet altijd van “kunstmatige intelligentie”. Quakebot gebruikt bijvoorbeeld door mensen opgestelde sjablonen en vult die met vooraf verzamelde en gestructureerd bewaarde data over aardbevingen. Het eindresultaat klinkt als een door mensen geschreven artikel, en dat is het voor een groot deel natuurlijk ook. Maar de robot doet in wezen niet veel meer dan het vullen van sjablonen met gestructureerde data. Andere ontwikkelaars, zoals Narrative Science proberen robotjournalisme naar een ander niveau te tillen. Zij pogen de software zelf te laten uitmaken waarover de data gaan en op basis daarvan “content” te laten genereren. De software beslist in dit geval zelf hoe de inhoud moet klinken.

Nog moeilijker: van taal naar taal, van spraak naar tekst,
van beeld naar tekst, van tekst naar taal... (enz.)

In het volgende hoofdstuk behandelen we OCR, een techniek om een gescande of gekopieerde tekst (uit afbeeldingen dus) te converteren naar bewerkbare tekst. Dat is relatief gezien “peanuts” in vergelijking met NLP.

Vooraleer machines vlekkeloos in menselijke talen kunnen communiceren, is er nog een hele weg af te leggen. Het draait niet enkel om de semantiek. In de Studio 100-reeks ROX praat de gelijknamige auto vlekkeloos met de andere (menselijke) personages. Hij herkent en interpreteert hun vragen en antwoorden en reageert er vaak laconiek op. Onze vriend “ROX” combineert het beste op het vlak van NLP met speech recognition, speech segmentation en speech processing en als kers op de taart natural language generation.

Het verstaan van gesproken taal (speech recognition) is nog een aardig stuk moeilijker dan het lezen of interpreteren van gedrukte tekst omdat er in gesproken tekst nauwelijks pauzes zijn tussen woorden. Ook letters vloeien onhoorbaar in elkaar over. Het verdelen van een uitspraak in afzonderlijke woorden (speech segmentation) is vreselijk moeilijk te programmeren. Natural language generation, het genereren van taal in geluidsvorm, is daarentegen al aardig ingeburgerd in bijvoorbeeld GPS-systemen. De software kan in dat geval gebruik maken van vooraf opgenomen geluid (afzonderlijke woorden of zinnen) dat het tot de gewenste zinnen samenvoegt. Dat is echter nog heel wat anders dan het kunstmatig “toon per toon” genereren van spraak (speech synthesis).

In machine translation komen alle toeters en bellen van NLP-systemen en natural language generation samen. Zinvolle vertalingen laten gebeuren door een machine is dus allesbehalve evident. Het vraagt niet alleen begrip van beide talen, maar ook het betekenisvol begrijpen en converteren van het ene bekenissysteem (taal) naar het andere (een andere taal). Een voorbeeld: In het Chinees plaatst een spreker geen “tijd” in zijn zin. Je kan dus niet aan de persoonsvorm zien wanneer de actie zich heeft afgespeeld. Tijd heeft in het Chinees geen belang wanneer je schrijft of spreekt, een volledig andere manier van “denken” dan sprekers van Indo-Europese talen. Allesbehalve eenvoudig dus om te vertalen van pakweg het Chinees naar het Nederlands of omgekeerd. Denk dus zeker nog eens na wanneer mensen spotten met de vertalingen van bijvoorbeeld Google Translate.

Kris Merckx, 2015.

Beknopte bibliografie

“RISE OF THE ROBOT JOURNALIST”, (http://www.slow-journalism.com/rise-of-the-robot-journalist), Geraadpleegd op 19 oktober 2015.

DUBE, R., "Could programs live Wiki bot ever produce all internet content?", (http://www.makeuseof.com/tag/could-wiki-bot-produce-all-content/), 2014, Geraadpleegd op 19 oktober 2015.   

"Computer denkt voor het eerst als mens in Turing Test”, http://www.automatiseringgids.nl/nieuws/2014/24/computer-denkt-voor-het-eerst-als-mens-in-turing-test, Geraadpleegd op 23 september 2014.

Bostrom, N. Superintelligence. Paths, dangers, strategies, Oxford, 2014.

home