Taalles voor computers

Computers die moeiteloos kunnen converseren met mensen, ze bestaan. Althans in sciencefiction films. In de echte wereld zijn we nog ver verwijderd van pratende computers zoals Tony Starks J.A.R.V.I.S. of HAL 9000, de opstandige boordcomputer uit `2001: A Space Odyssey’. Het vakgebied dat hier iets aan wil veranderen is natural language processing of kortweg NLP. NLP houdt zich bezig met het aanleren van menselijke taal aan computers, zodat ze in staat zijn om taal te begrijpen en interpreteren zoals mensen dat kunnen. Hoe NLP precies werkt en waarom ik ermee aan de slag ging in mijn fysicathesis, kom je te weten in deze blog.

Je staat er waarschijnlijk niet bij stil, maar de toepassingen van NLP in ons dagelijks leven zijn schijnbaar eindeloos. De spellingscorrector in tekstverwerkers, vertaalapplicaties (vb. Google Translate), virtuele (spraak)assistenten, de spamfilter van je e-mailprovider, de zoeksuggesties die je krijgt wanneer je iets opzoekt via een zoekmachine, chatbots… en ga zo nog maar een tijdje door. Het zijn allemaal voorbeelden van NLP die niet meer weg te denken zijn uit onze hedendaagse maatschappij.

Hoewel de spraakassistent in je smartphone er behoorlijk goed in slaagt om eenvoudige opdrachten zoals `bel mama’ of ‘maak een afspraak in mijn agenda’ uit te voeren, kan je voor een leuk babbeltje beter bij de buurman aankloppen (*). Waarom is het zo moeilijk om een computer te leren praten zoals een mens? Dat heeft alles te maken met de complexiteit van de menselijke taal en de vele nuances en ambiguïteiten die gesproken en geschreven tekst kleur geven. Een zin bevat vaak niet alle informatie die nodig is om hem te begrijpen, omdat een stukje van de betekenis vervat zit in de context. Ook veronderstelt taal een zekere kennis van de wereld om ons heen. De volgende voorbeelden brengen wat verduidelijking. Wanneer iemand zegt `Toen de hamer op de glazen tafel viel, spatte hij uit elkaar’, dan begrijp je als toehoorder dat het de tafel is die in duizend stukjes op de grond ligt, en niet de hamer. Een andere zin zoals `Het meisje aaide de hond met de stok’ vereist wat meer informatie: werd de hond, die een stok vasthad, geaaid door het meisje of aaide het meisje de hond met een stok? Een briefje van `iemand die je leuk vindt’ kan betekenen dat de briefschrijver een boontje heeft voor jou, maar omgekeerd kan ook. En zo zijn er nog talloze voorbeelden te bedenken. De boodschap is duidelijk: taal is vatbaar voor interpretatie.

Het menselijk brein kan rekenen op miljarden zenuwcellen (neuronen) die gespecialiseerd zijn in het ontvangen en doorgeven van informatie om taal op correcte wijze te interpreteren. Daarbovenop komen we al van jongs af aan in contact met gesproken en geschreven taal, waardoor ons brein uitgebreid de tijd heeft om de kunst van het spreken en begrijpen onder de knie te krijgen. Een computer beschikt jammer genoeg niet over zo’n handig menselijk brein. In de plaats gebruikt hij twee tekens om informatie op te slaan: 0 en 1, ook wel bits genoemd. Aangezien die bits met z’n tweeën zijn, zeggen we dat een computer een binaire machine is. Als we een computer taalvaardigheid willen bijbrengen, dan moeten we onze woordenschat vertalen naar een vorm die leesbaar is voor de computer. Getallen worden in computers binair voorgesteld (**), dus als we alle woorden vertalen naar getallen zijn ze leesbaar voor de computer.

Woorden vertalen naar vectoren

Doorheen de geschiedenis van NLP zijn er een aantal methodes gebruikt om zo’n numerieke representatie van woorden te bekomen. In de traditionele NLP werd een reeks getallen gebruikt die overal nul was, behalve op één welbepaalde plaats. Die plaats was uniek voor elk woord. Zo’n representatie wordt ook wel een one-hot vector genoemd. Een voorbeeld illustreert deze methode het best. Stel dat we de eerste zin van `De Hobbit’, het fantastische fantasyboek van de Engelse schrijver J.R.R. Tolkien (1937), in one-hot vectoren willen gieten. De openingszin `In een hol onder de grond woonde een hobbit’ zou er dan als volgt uitzien.

    \begin{align*}\text{in}=[10000000] \\\text{een}=[01000000] \\\text{hol}=[00100000] \\\text{onder}=[00010000] \\\text{de}=[00001000] \\\text{grond}=[00000100] \\\text{woonde}=[00000010] \\\text{hobbit}=[00000001]\end{align*}

Elk uniek woord krijgt een vector, en omdat de zin 8 unieke woorden telt, heeft elke vector 8 plaatsen. Het eerste woord, `in’, krijgt op de eerste plaats een 1, alle andere plaatsen zijn ingenomen door nullen. Het tweede woord, `een’, krijgt een 1 op de tweede plaats in de vector en op alle andere plaatsen komt een nul te staan. Zo ga je door tot het woord `hobbit’, dat in zijn one-hot vector enkel op de laatste plaats een 1 krijgt. Op deze manier heeft elk woord een unieke vectorrepresentatie. Als we nu echter het volledige boek, dat meer dan 300 pagina’s telt, in one-hot vectoren zouden vertalen dan krijgen we ongelofelijk lange vectoren die veel geheugen innemen en bovendien helemaal niet zo veel vertellen. Het is namelijk niet mogelijk om synoniemen of gelijkaardige woorden te herkennen door een reeks eentjes en nulletjes te vergelijken. Alle woorden zijn even verschillend van elkaar.

Er moest dus een efficiëntere manier gezocht worden om woorden naar getallen te vertalen zonder dat daarbij de betekenis verloren ging. Een manier die vandaag veel wordt gebruikt is Word2vec (letterlijk `woord naar vector’). Het basisidee van Word2vec is dat de betekenis van een woord verweven zit in de woorden die het omringen. Dit wordt ook wel de context van een woord genoemd. Beschouw even opnieuw onze zin van daarnet: `In een hol onder de grond woonde een hobbit’. Stel dat je niet weet wat een hobbit is, dan kan je toch uit de zin halen dat het iets is dat in een hol woont. Uit de context leiden we dus af dat het om een wezen of dier gaat. Verder leren we ook dat het woord `hol’ samengaat met het voorzetsel `in’. Je kan dus `in’ een hol zitten en het hol bevindt zich `onder’ de `grond’. De `grond’ is bijgevolg iets wat zich boven een `hol’ bevindt.

De context van een woord verschaft ons dus veel informatie over de betekenis of functie van een woord in een zin. Een computer kan deze informatie gebruiken om de betekenis van woorden te leren. Dat doen we door hem niet één, maar miljoenen zinnen te tonen die hij woord per woord zal bekijken. Een computermodel als Word2vec maakt bij het bekijken van de woorden gebruik van een kunstmatig neuraal netwerk. Zo’n netwerk bestaat uit kunstmatige neuronen die de `echte’ biologische neuronen uit het menselijke brein proberen na te bootsen. Het is in staat om te leren uit de verschillende contexten die het te zien krijgt. Door het kunstmatige neurale netwerk een hele hoop zinnen te voeden, zal het na verloop van tijd leren welke woorden vaak samen voorkomen of op dezelfde manier gebruikt worden. Het resultaat van dat leerproces zit vervat in de uiteindelijke woordvectoren, die gelijkaardig zijn voor gelijkaardige woorden. In Word2vec bestaan woordvectoren standaard uit 300 getallen. Dat is heel wat minder dan de one-hot vectoren van zonet, die evenveel plaatsen hadden als er unieke woorden waren.

Dat Word2vec onze intuïtie voor taal goed vat, kan visueel geïllustreerd worden door de woordvectoren op een tweedimensionaal vlak af te beelden. Op onderstaande figuur worden enkele vrouwelijke en mannelijke woorden afgebeeld. Links zien we allemaal vrouwelijke woorden, rechts de mannelijke varianten. Het leuke is dat we ook kunnen rekenen met deze vectoren. Als je de vectoren voor `koning’ en `man’ aftrekt van elkaar en hierbij de vector voor `vrouw’ optelt, dan bekom je de woordvector voor `koningin’. Mooi toch? Analoge berekeningen kunnen we doen met vectoren van bijvoorbeeld landen of bijvoeglijke naamwoorden. Vectorrekening met `Parijs’, `Frankrijk’ en `België’ resulteert in `Brussel’ en met `groot’, `groter’, `klein’ bekomen we `kleiner’.

Een tweedimensionale voorstelling van de woordvectoren van uitgesproken vrouwelijke en mannelijke woorden.

NLP in de fysica

Missie geslaagd dus: we hebben een manier gevonden voor de computer om de betekenis van woorden te vatten. Maar wat heeft dit nu allemaal met fysica te maken? Heel veel, aangezien taal de manier is waarop wetenschappers in papers communiceren met elkaar. Het probleem van de laatste decennia is dat er, onder andere door de toenemende specialisatie in de wetenschappen, zo veel papers gepubliceerd worden dat niemand meer de tijd heeft om ze allemaal te lezen. Zo dreigt er belangrijke kennis verloren te gaan in een literatuurstapel die jaar na jaar groter wordt. In tegenstelling tot mensen kan een computer in enkele seconden de gehele literatuur van de laatste decennia doornemen en zo verbanden leggen die mensen er niet of slechts na enkele jaren van grondige literatuurstudie kunnen uithalen.

Vooral in de materiaalfysica werden met NLP al goede resultaten behaald. Een erg succesvol voorbeeld van NLP in materiaalfysica is Named Entity Recognition (NER). Simpel gezegd maakt NER het mogelijk om woorden in een tekst te labelen. Aluminium, titaan en Fe krijgen bijvoorbeeld allemaal het label `materiaal’ opgeplakt. Woorden als geleidbaarheid, densiteit en poreusheid vallen onder de noemer `materiaaleigenschap’. Door de woorden in een paper op deze manier te voorzien van labels, is het mogelijk om de tekst op een gestructureerde manier weer te geven. Voor één paper is dit niet echt nuttig, maar als we dit voor alle papers doen die tot nu toe in de materiaalfysica zijn verschenen, dan ontstaan er interessante mogelijkheden. Zo kan je uitgebreide zoekopdrachten uitvoeren over de gehele literatuur om te weten te komen wat de beste synthesemethode is voor een bepaald materiaal. Of indien je een nieuw soort batterij wil ontwikkelen bijvoorbeeld, dan kan je in een oogopslag te weten komen welke materialen in het verleden reeds getest werden en welke resultaten ze opleverden.

Ook wordt het mogelijk om metavragen te stellen. We zouden ons bijvoorbeeld kunnen afvragen welke materialen voor de meest diverse applicaties worden gebruikt. Het antwoord dat NER kan geven op deze vraag is afgebeeld in de figuur hieronder. In luik (a) zie je een 2D-projectie van de woordvectoren van 5000 woorden die het label `toepassing’ opgeplakt kregen. De punten die dicht bij elkaar staan, vormen zogenaamde clusters en werden aangeduid met dezelfde kleur. Punten in dezelfde cluster hebben een gelijkaardige betekenis. Op de figuur zie je een uitgelicht voorbeeld van de toepassingen die onder de noemer `geheugen’ vallen. In paneel (b) is een histogram te zien van het aantal toepassingen per materiaal. Enkele van de hoogst gerangschikte materialen zijn SiO2 en staal. In panelen (c) en (d) wordt een overzicht gegeven van de belangrijkste toepassingsgebieden van beide materialen. In één oogopslag hebben we zo een antwoord gekregen op een vraag die een materiaalwetenschapper slechts na enkele maanden zou kunnen beantwoorden.

Een populaire NLP toepassing is `Named Entity Recognition’ (NER). NER kan metavragen zoals `Welke materialen worden voor de meest diverse applicaties gebruikt?’ beantwoorden

 

Een gestructureerde representatie van tekst door NER maakt het leven van materiaalwetenschappers dus makkelijker, maar NLP kan nog veel meer betekenen voor de materiaalfysica. Zo kan de computer verbanden uit de literatuur halen die er niet letterlijk in vermeld staan. Dit is interessant wanneer we nieuwe materialen willen voorspellen voor bepaalde toepassingen. Zo toonde een belangrijke paper (Tshitoyan, V. et al., 2019) aan dat nieuwe thermo-elektrische materialen (***) jaren voor ze ontdekt werden al voorspeld waren door een NLP model.

De NLP in materiaalfysica is dus niet enkel een handig hulpmiddel om inzicht te krijgen in de materialen die al onderzocht zijn, maar opent ook deuren naar nieuwe toepassingen van bestaande materialen. Het is duidelijk dat er nog veel werk nodig is vooraleer computers zullen praten zoals mensen, maar fysicapapers lezen kunnen ze al behoorlijk goed.

Fleur Hubau

Student Master of Science in de Fysica & Sterrenkunde

Deze blogpost werd geschreven in het kader van mijn masterthesis over NLP in de materiaalfysica bij het Centrum voor Moleculaire Modelering (CMM).

Promotoren: Prof. Dr. Stefaan Cottenier & Dr. ir. Michael Sluydts

Bronnen:

  • Bron tweede figuur: Piotr Migdal – blog, “king – man + woman is queen; but why?”
  • Bron derde figuur: Weston, L. et al. (2019), “Named Entity Recognition and Normalization Applied to Large-Scale Information Extraction from the Materials Science Literature”, 10.26434/chemrxiv.8226068.
  • Tshitoyan, V. et al. (2019), “Unsupervised word embeddings capture latent knowledge from materials science literature”, Nature. 571. 95-98. 10.1038/s41586-019-1335-8.

(*) Al kan je je wel een paar uurtjes amuseren met de grappige antwoorden die je krijgt. Check deze link voor inspiratie.

(**) Bekijk dit filmpje als je je geheugen wil opfrissen over binair rekenen.

(***) Thermo-elektrische materialen zijn materialen die heel efficiënt warmte naar elektrische stroom kunnen omzetten, waardoor ze erg interessant zijn voor warmterecuperatie.