Op transformatoren gebaseerde modellen zijn snel uitgegroeid tot de state-of-the-art voor veel Natural Language Processing (NLP) taken, met als meest beruchte waarschijnlijk OpenAI’s GPT-3. Dergelijke modellen kunnen mensen helpen bij verschillende schrijftaken en een aantal arbeidsintensieve en handmatige lasten wegnemen. Stel je voor dat je een detailhandelaar bent die verschillende modellen van een producttype verkoopt. Op je website zou je een productbeschrijving nodig hebben om klanten aan te trekken, en voor SEO-doeleinden is het beter om niet dezelfde beschrijving te gebruiken voor elk soortgelijk product. Nu is het leuk om je creativiteit te gebruiken om een pakkende productbeschrijving te schrijven. Het herschrijven van deze beschrijving in 10 licht afwijkende versies is minder leuk en juist eentonig. In deze blog leggen we uit hoe je een model kunt trainen dat automatisch parafrases kan genereren uit een input zin.
Als je dit artikel leest uit interesse in NLP, heb je waarschijnlijk al gehoord over de transformer. Als dat niet het geval is, geven we je een korte update. De transformer is een type neurale architectuur die bijzonder nuttig is voor sequentie modellering [1]. Transformers hebben een encoder-decoder structuur, zonder de gebruikelijke recurrences en convoluties, maar uitsluitend vertrouwend op zelf-attentie mechanismen. Deze zelf-attentie stelt het model in staat de volledige input-sequentie in één keer te bekijken en geeft het een lange-termijn geheugen, veel groter dan enige andere neurale architectuur.

Met deze transformatorarchitectuur zijn vele veelzijdige taalmodellen gemaakt die de state-of-the-art zijn voor het aanpakken van een grote variëteit aan natuurlijke taalverwerkings- en generatietaken. Laten we de oorspronkelijke transformatorarchitectuur beschouwen als pastadeeg en alle volgende modellen zijn de verschillende pastavormen die kunnen worden gevormd en hun eigen doel hebben. De vorm van onze pasta beïnvloedt onze keuze van de saus. Niet elke saus is geschikt voor elke vorm, net zoals verschillende transformer-gebaseerde modellen verschillende NLP taken ondersteunen. Google’s BERT model bestaat alleen uit encoder blokken van de originele transformer en is de beste van de klas voor taken als vraag-antwoord. Anderzijds zijn de modellen uit de GPT-serie opgebouwd uit alleen het decoder-gedeelte van de transformator en zij blinken uit in natuurlijke taalgeneratie.
Om onze pastavorm te kiezen, moeten we kijken naar onze parafraseringssaus. Een set parafrasen zijn twee zinnen die dezelfde inhoud hebben maar verschillende woorden gebruiken. Voor onze taak betekent dit dat we een input zin omzetten in een andere zin met behoud van de betekenis van de input. Dit is een ander soort taak dan het beantwoorden van vragen of het genereren van natuurlijke taal en vereist dus een andere pastavorm. Omdat we de ene tekst omzetten in een andere, werkt een model met een encoder-decoder structuur het best. Daarom zullen we T5 gebruiken om ons parafraseringshulpmiddel te maken.
T5
Google’s Text-to-Text Transfer Transformer of T5 heeft een encoder-decoder structuur die heel dicht bij die van de originele transformer ligt en is vooraf getraind op 750 GB aan diverse teksten [2]. Het model is uitgebracht in verschillende groottes en in dit artikel verfijnen we het kleinste voorgetrainde model van 60 miljoen parameters met de Huggingface Transformers[1] bibliotheek.
Om één model te kunnen generaliseren naar meerdere doelen, behandelt het elke downstream NLP taak als een tekst-naar-tekst kwestie. Voor trainingsdoeleinden verwacht T5 dat elk voorbeeld een input en een doel heeft. Tijdens de pre-training worden de inputs gecorrumpeerd door het maskeren van woordreeksen, die het doel zijn voor de modelvoorspelling. Tijdens de finetuning blijft de input onaangeroerd en is het doel de gewenste output.

Om het model voor verschillende doelen te kunnen gebruiken, wordt in de fase van fijnafstemming een voorvoegsel aan de invoer toegevoegd dat aangeeft voor welke taak het model met die specifieke invoer traint. In ons geval zullen input en output paren van parafrases zijn, dus voegen we het voorvoegsel “parafrase:” toe aan elke input. Wanneer het model is verfijnd, zal het deze voorvoegsels en de overeenkomstige taken herkennen, zodat het een parafrase zal teruggeven als je invoer begint met “parafrase” en niet, bijvoorbeeld, een vertaling.

Gegevens
Laten we alle ingrediënten voor onze saus bij elkaar zoeken. Om er zeker van te zijn dat ons model genoeg data heeft om van te leren, combineren we drie publiekelijk beschikbare datasets van Engelse parafrase-paren:
- the Paraphrase Adversaries from Word Scrambling dataset based on Wikipedia content (PAWS-Wiki)
- the Microsoft Research Paraphrase Corpus (MSRP)
- the Quora Question Pairs dataset
De gegevens in deze reeksen waren oorspronkelijk gelabeld als zijnde een parafrase of een niet-parafrase, dus voor ons doel kunnen we de niet-parafrases eruit filteren. In totaal hebben we dan 146.663 parafrase-paren. De Quora Vragenparen dataset is echter 4 keer zo groot als de PAWS-Wiki en MSRP datasets samen. Het trainen van de modellen met zo’n groot aantal vragen heeft het risico dat er alleen maar vragen worden gegenereerd, omdat de input voornamelijk uit vragen bestaat. Daarom maken we een gebalanceerde uiteindelijke dataset met een gelijk aantal vragen en niet-vragen. Deze uiteindelijke dataset heeft dan 65.608 sets van parafrases, die worden opgesplitst in train, test en validatie sets met een respectievelijke verdeling van 0.8, 0.1 en 0.1.
Output filtering
Zoals eerder vermeld, is parafraseren het omzetten van een zin in een andere zin, maar met behoud van de betekenis. Dit legt twee beperkingen op aan de resultaten. Ten eerste moeten de input en de output semantisch zo dicht mogelijk bij elkaar liggen. Ten tweede moet er voldoende verschil zijn in het gebruik van woorden. Twee identieke zinnen liggen semantisch duidelijk dicht bij elkaar, maar ze parafraseren elkaar niet. Tegelijkertijd is het moeilijk om exact dezelfde betekenis te behouden als je elk woord in een zin verandert, omdat een zin een andere nuance kan krijgen. Deze twee beperkingen zijn ons zout en peper. Een goed evenwicht tussen de twee zal een goed resultaat opleveren.
Om de semantische afstand tussen de input en de resultaten te meten, gebruiken we Google’s Universal Sentence Encoder (USE) om een inbedding van elke zin te maken. Deze inbeddingen zijn 512-dimensionale vectoren die zo worden gemaakt dat zinnen die verwant zijn, dichter bij elkaar staan in de vectorruimte dan niet-verwante zinnen. Op deze manier kunnen we de cosinus gelijkheid berekenen tussen de vector van de input en de vector van een output om hun semantische gelijkheid uit te drukken in een waarde variërend van 0 tot 1. Hoe hoger deze waarde, hoe meer verwant de twee zinnen zijn.
Om de verschillen in oppervlaktevorm te kwantificeren, passen we twee maatstaven toe. ROUGE-L meet de langste gemeenschappelijke subsequentie van woorden tussen de input en de output. BLEU is een weergave van de n-gram precisie op woordniveau. Bij beide metingen krijgen identieke zinnen een score van 1 en zinnen die geen enkel woord gemeen hebben een waarde van 0. Om ervoor te zorgen dat de output niet te veel op de input lijkt, bepalen we een maximumwaarde die deze metingen kunnen aannemen. Zinnen waarvan de ROUGE-L score of de BLEU score hoger is, worden verworpen. Wij stellen de cut-off waarden in op 0.7, maar u kunt dit naar smaak aanpassen indien nodig.
Nadat de resultaten zijn gefilterd, worden de overblijvende uitgangen gerangschikt op basis van hun USE-score en wordt de uitgang met de hoogste waarde geselecteerd als de beste parafrase.
Resultaten
Nu we klaar zijn met koken, gaan we proeven! Voor elke input laten we het model 10 mogelijke parafrases genereren. Vervolgens filteren en rangschikken we die op basis van de USE, ROUGE-L en BLEU scores. De zin die bovenaan staat is onze resulterende parafrase. Hier zijn enkele voorbeelden van parafrases gegenereerd met ons model.
Input | Output | USE | R-L | BLEU | |
1 | Having won the 2001 NRL Premiership, the Knights traveled to England to play the 2002 World Club Challenge against Super League champions, the Bradford Bulls. | The Knights came to England for the World Club Challenge 2002 against the Bradford Bulls, the Super League champions after winning the 2001 NRL Premiership. | 0.9611 | 0.4651 | 0.2411 |
2 | Is tap water in Italy good for drinking? | Is tap water good for drinking in Italy? | 0.9641 | 0.6250 | 0.3083 |
3 | Make sure you have the right gear when you explore the nature. | When exploring nature, make sure you have the right gear. | 0.8350 | 0.5999 | 0.3887 |
Deze resultaten zien er vrij goed uit. Nummers 2 en 3 zijn geparafraseerd door de woordvolgorde van de input zin aan te passen, wat ook te zien is aan de relatief hogere ROUGE-L en BLEU scores. Voorbeeld nummer 1 laat een goede balans zien tussen zout en peper. De zinsstructuur is totaal verschillend en de semantische overeenkomst is extreem hoog. Ons parafraseringsmodel is een recept voor succes!
1] https://huggingface.co/transformers/
Referenties
[1] | A. Vaswani, N. Shazeer, N. Parmar, J. Uszkoreit, L. Jones, A. N. Gomez, L. Kaiser en I. Polosukhin, „Attention Is All You Need,” Advances in neural information processing systems, pp. 5998-6008, 2017. |
[2] | C. Raffel, N. Shazeer, A. Roberts, K. Lee, S. Narang, M. Metana, Y. Zhou, W. Li en P. Liu, „Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer,” Journal of Machine Learning Research, vol. 21, nr. 140, pp. 1-67, 2020. |