De ontwikkeling van transformatormodellen zoals BERT (Devlin et al., 2018) en GPT3 (Floridi & Chiriatti, 2020) hebben een revolutie teweeggebracht in de wereld van Natural Language Processing (NLP). Deze modellen laten nu een menselijk niveau van intelligentie zien in taken zoals tekstgeneratie en parafraseren. Eerder onderzoek heeft aangetoond dat het krachtige GPT3-model het mogelijk maakt productteksten te genereren, en zelfs rekening te houden met subjectieve informatie zoals de kledingstijl in de schrijfstijl. Het probleem hierbij is echter dat het onduidelijk is hoe goed geschreven en informatief deze teksten zijn.
In dit artikel wordt uitgelegd hoe productteksten, of beschrijvingen, geoptimaliseerd kunnen worden om een hoge(re) Search Engine Optimization (SEO) score te behalen voor veelgebruikte zoektermen. Deze termen zijn bijvoorbeeld keyword density, leesbaarheid, word-count, en meer. Een interessante complicatie bij dit probleem is het feit dat Google zijn zoekopdrachten heeft veranderd om te vertrouwen op Transformer-modellen (Vaswani et al., 2017). Naar verluidt heeft dit ongeveer 10% van de wereldwijde rankings veranderd. BERT wordt nu in één op de tien zoekopdrachten gebruikt om te helpen bij het begrijpen van een bepaalde webpagina. Als de zoekmachine het moeilijk te begrijpen vindt, zullen de mensen die het gaan lezen het hoogstwaarschijnlijk ook moeilijk vinden. In deze blog gaan we dieper in op de belangrijkste componenten van de SEO-score en hoe een subset van deze componenten kan worden geoptimaliseerd met behulp van een zogenaamd SEO-model.
Opbouw van de SEO-score
De hier gedefinieerde SEO-score is opgebouwd uit zeven verschillende deelscores, die elk een ander gewicht hebben. De uiteindelijke score is een gewogen gemiddelde van de individuele scores. Sommige van deze scores worden gebruikt door verschillende SEO-tools, zoals Yoast, SEMrush, en nog veel meer.
Trefwoord dichtheid
De trefwoord dichtheid staat voor de verhouding van hoe vaak een bepaald trefwoord voorkomt in een tekst. Een ideale dichtheid is rond de 1-2% (https://blog.alexa.com/keyword-density/). Dit is om ervoor te zorgen dat er geen overmatig gebruik is van een bepaald zoekwoord. De trefwoorden om op te controleren kunnen de categorie van een product zijn, een merk of trefwoorden die zijn gegenereerd met behulp van de Google Ads API (https://developers.google.com/google-ads/api/docs/keyword-planning/overview). De score is gedefinieerd als een ratio die een hoge score geeft voor een lage dichtheid en een lage score voor een hoge dichtheid.
Query-tekst score
Om een beter inzicht te krijgen in hoe goed een bepaalde tekst overeenkomt met de ranking van Google, worden de top 10 zoekwoorden voor een specifieke categorie of merk gegenereerd met behulp van de Google Keyword Planner en vervolgens doorgegeven aan Sentence-BERT (Reimers & Gurevych, 2019), die de cosine-similarity score berekent voor de queries en de tekst.
Woordenaantal
Het woordenaantal, zijnde het ideale aantal woorden in een tekst, is afhankelijk van de branche en voorkeur. Blog posts bevatten over het algemeen meer woorden, terwijl productbeschrijvingen meestal korter zijn. Waar het om gaat is dat Google kan begrijpen waar een bepaalde pagina over gaat, dus het is toegestaan om teksten te schrijven die heel kort zijn, zolang de tekst maar alles bevat wat Google moet weten. Dit woordaantal is geïmplementeerd als een toevoeging en moet niet worden beschouwd als het belangrijkste kenmerk.
Zinlengte
Zinnen met een lengte van minder dan drie woorden kunnen niet als geldige zinnen worden beschouwd, terwijl te lange zinnen een impact hebben op de leesbaarheid. Van alle zinnen mag slechts 25% meer dan 25 woorden bevatten (https://medium.com/illumination/paragraph-length-and-structure-for-seo-d8d503f2a1a6). Dit wordt gebruikt om de leesbaarheid van een bepaalde tekst te verbeteren. Een grotere verhouding lange zinnen geeft onvermijdelijk een lagere score.
Passieve vs. Actieve score
Om ervoor te zorgen dat de leesbaarheid optimaal is, moet passieve stem in zinnen worden vermeden (indien mogelijk). Actieve stem zorgt ervoor dat een tekst begrijpelijker is voor mensen. Hoewel Google in staat is om de betekenis van een zin af te leiden, of deze nu in passive of active voice is (Warstadt & Bowman, 2019), heeft actief schrijven invloed op de leesbaarheid en daarmee de SEO-score (https://developers.google.com/tech-writing/one/active-voice). Van alle zinnen in een tekst moet de verhouding passieve stem onder de 10% liggen, een hogere verhouding leidt tot een lagere score. Om zinnen te classificeren tussen active en passive voice in het Nederlands, hebben we BERTje (de Vries et al., 2019) gefinetuned voor dit classificatieprobleem (https://huggingface.co/Gerwin/bert-for-pac). Deze classifier is gefinetuned op 780 actieve zinnen en 700 passieve zinnen. De code voor het detecteren van passieve stem in Engelse zinnen is hier te vinden.
Gebruik van overgangswoorden
Het gebruik van overgangswoorden tussen zinnen zorgt voor een betere leesbaarheid en verbetert tevens de flow van een bepaalde tekst. Deze score wordt berekend als de verhouding tussen het aantal gebruikte overgangswoorden in een zin, waarbij idealiter 30% van de zinnen een overgangswoord zou moeten hebben.
Leesbaarheidsscore
Om de leesbaarheid van een tekst statistisch te berekenen, kan de Flesch-leesgemakscore worden gebruikt. De Flesch Read Ease test kan scores geven tussen 0 en 100. Een ideale score ligt tussen 60-80 voor een productbeschrijving. Daarom moet deze score anders worden behandeld, zodat scores als 50 en 90 dezelfde bestraffing krijgen.
Data
Drie datasets zijn gebruikt om de SEO-scores voor een set teksten te berekenen en een subset van deze teksten te optimaliseren met het SEO-model. Twee van deze voorbeeld datasets zijn gebruikt door Squadra Machine Learning Company en zijn directe outputs van hun dienst Powertext.ai.De derde dataset is verzameld via Promptcloud en bevat Engelstalige productbeschrijvingen van Victoria’s Secret. In totaal bestaat de gebruikte data uit 10.500 Engelse teksten en 718 Nederlandse teksten.
Schoenen
Deze dataset bevat 500 Engelse en 500 Nederlandse productbeschrijvingen over schoenen. Deze beschrijvingen zijn gegenereerd met Powertext.ai.
Wasmachines
Deze dataset bevat 218 Nederlandse productbeschrijvingen over wasmachines. Deze beschrijvingen zijn gegenereerd met Powertext.ai.
Victoria’s Secret
Deze dataset bevat 535.600 Engelstalige productbeschrijvingen uit de categorie ondergoed en badmode verdeeld over 9 websites. Uit de totale hoeveelheid zijn willekeurig 10.000 Engelse teksten geselecteerd om de SEO-score voor te berekenen.
SEO-scores
Voor de datasets zijn voor alle teksten de SEO-scores berekend. Uit deze scores zijn het minimum, gemiddelde en maximum berekend. Naast de SEO score in het algemeen, wordt ook het gemiddelde van de individuele scores gegeven. Om de scoring deterministisch te maken, kreeg het programma voorgedefinieerde trefwoorden mee. Deze trefwoorden zijn hieronder gedefinieerd.
Dataset Trefwoorden
Schoenen (Engels) shoe, schoenen, lopen
Schoenen (Nederlands) schoen, schoenen, lopen
Wasmachines wasmachine, wassen, kleding
Victoria Secret BH, string, body, panty, sexy
De volgende SEO-scores zijn berekend voor de datasets:
Dataset Min Gemiddelde Max
Dataset | Keywords |
Shoes (English) | shoe, shoes, walking |
Shoes (Dutch) | schoen, schoenen, lopen |
Washing machines | wasmachine, wassen, kleding |
Victoria Secret | bra, thong, body, panty, sexy |
The following SEO scores were calculated for the datasets:
Dataset | Min | Mean | Max |
Shoes (English) | 0.520 | 0.692 | 0.820 |
Shoes (Dutch) | 0.600 | 0.776 | 0.870 |
Washing machines | 0.630 | 0.790 | 0.910 |
Victoria’s Secret | 0.270 | 0.591 | 0.820 |
De gemiddelden van de afzonderlijke scores worden hieronder gedefinieerd; merk op dat het “aantal woorden” is weggelaten. De reden hiervoor is dat de totale lengte van de productbeschrijvingen voor de datasets verschillend is, zodat het onlogisch zou zijn een score te geven op basis van een algemeen minimum- en maximumaantal woorden. De scores in de tabel zijn gedefinieerd als “score (gewicht)”.
Dataset | Keyword density (2) | Query-Text (3) | Sentence length (1) | Passive vs Active (2) | Transition words (2) | Readability (3) |
Shoes (English) | 0.694 | 0.251 | 1.000 | 0.723 | 0.820 | 0.821 |
Shoes (Dutch) | 0.693 | 0.443 | 0.994 | 0.637 | 0.968 | 0.980 |
Washing machines | 0.772 | 0.509 | 0.732 | 0.922 | 0.952 | 0.838 |
Victoria’s Secret | 0.927 | 0.082 | 0.628 | 0.976 | 0.287 | 0.709 |
SEO model
Het volledig optimaliseren van een tekst om een hogere SEO-score te behalen is een moeilijke taak. Men zou een GAN kunnen implementeren die nieuwe teksten genereert met de SEO-score als verlies. Het kan ook door een parafraseringsmodel te implementeren en de SEO-score te gebruiken om te valideren of de nieuwe tekst beter is. In onze implementatie hebben we gekeken naar de concepten met betrekking tot leesbaarheid, namelijk: passief versus actief, gebruik van overgangswoorden, en de leesbaarheidsscore. Om deze scores te optimaliseren, hebben we GPT3 (https://beta.openai.com/docs/guides/fine-tuning), die getraind is op 100 inputs en outputs, verfijnd om de leesbaarheid van de teksten te verbeteren. Een “betere” tekst wordt geaccepteerd als de som van de drie scores en de algemene SEO-score verbeterd zijn, en als de nieuwe tekst niet te veel verschilt van de oude tekst. Deze overeenkomst tussen oud en nieuw wordt berekend met Sentence-BERT. Hieronder staan enkele voorbeelden met het SEO-model, deze voorbeelden komen uit de Victoria’s Secret en de Wasmachines dataset.
Oude tekst 1, score: 0.629
Een natuurlijk sexy ongevoerde vorm, met een lagere snit die perfect is voor onthullende halslijnen. Ontworpen om te verdwijnen onder curve-hugging styles. Lift & Voering Ongevoerd; kanten keuzes zijn ongevoerd met een foam sling voor een lichte lift Beugel cups Bandjes & Haakjes Verstelbare bandjes kunnen worden omgezet naar crossback en vastgeklikt voor een veilige grip Sluiting op de rug Dubbele rij haak en oog sluitingen; Maten 34DD, 36DD-36DD & 38D-38DDD hebben driedubbele rij sluitingen voor een veilige, comfortabele pasvorm 4 instellingen om een perfecte pasvorm te garanderen Details & Stof Dubbel gevoerde zijkanten voor de gladste vorm geïmporteerd nylon/spandex
Nieuwe tekst 1, score: 0.875
Een natuurlijk sexy ongevoerde vorm, met een lagere snit die perfect is voor onthullende halslijnen. De bh is ontworpen om te verdwijnen onder curve-hugging styles, met lift en voering die ongevoerd is en een foam sling heeft voor lichte lift. De beha heeft een beugelcup, verstelbare bandjes en haakjes die kunnen worden omgevormd tot kruisrug en vastgeklikt kunnen worden voor een stevige grip. De rugsluiting heeft dubbele rijen haak- en oogsluitingen, terwijl de maten 34DD, 36DD-36DD & 38D-38DD driedubbele rijen sluitingen hebben voor een perfecte pasvorm.
Oude tekst 2, score: 0.371
Een echte garderobe essential met zachte, no-show cups en een comfortabele pasvorm! Inclusief afneembare bandjes. Meeste druk Gestructureerde, beugelcups Inclusief bandjes Haak-en-oogsluiting Geïmporteerd polyamide/spandex
Nieuwe tekst 2, score: 0.917
Deze echte garderobe essential heeft zachte, no-show cups en een comfortabele pasvorm. Hij bevat afneembare bandjes zodat je hem overal kunt dragen. De beha is gemaakt van ademend materiaal zoals polyamide en spandex, dus je kunt hem overal dragen!
Oude tekst 2, score: 0.667
De digitale inverter motor zorgt voor een geluidsniveau van slechts 51 db db, wat echt stil is. Ook het droogresultaat van de aeg wasmachine l7wb86gw is van topniveau dankzij de centrifuge die een maximum toerental van 1600 rpm rotaties per minuut kan bereiken. Met het wassen verkrijg je 51 db db, bij het centrifugeren hoor je maximaal 76 db Zijn laadvermogen van 8 kg is ruim te noemen en wat je ook wilt wassen, met zijn 16 voorgeprogrammeerde wascycli ben jij in staat van wassen echt maatwerk te maken.
Nieuwe tekst 2, score: 0.875
De digitale inverter motor zorgt voor een geluidsniveau van slechts 51 db, wat echt stil is. Ook het droogresultaat van de aeg wasmachine l7wb86gw is van topniveau dankzij de centrifuge die een maximum toerental van 1600 rpm kan bereiken. Met het wassen verkrijg je 51 db, bij het centrifugeren hoor je maximaal 76 db. Het laadvermogen van 8 kg is ruim te noemen en wat je ook wilt wassen, met zijn 16 voorgeprogrammeerde wascycli ben jij in staat van wassen echt maatwerk te maken.
Conclusie
In deze blog hebben we de belangrijkste begrippen van SEO uitgelegd en hoe je teksten aan de hand van deze begrippen kunt beoordelen. We hebben de kracht van het SEO-model laten zien en de mogelijkheid om zinnen om te vormen tot hogere leesbaarheidsscores en daarmee een hogere SEO-score. Het probleem met het SEO-model is echter dat het model niet in alle gevallen de leesbaarheid kan verbeteren. Dit is te wijten aan GPT3 en zijn willekeurigheid die niet kan worden bijgehouden en niet (volledig) kan worden gereguleerd. In de toekomst kan het model worden verbeterd door een EncoderDecoder-model toe te voegen dat passieve zinnen omzet in actieve zinnen. Dit EncoderDecoder model is nog niet volledig compleet door een gebrek aan data. Over het geheel genomen geven de SEO-scores een goed inzicht in wat er verbeterd kan worden, terwijl het SEO-model al zeer goede prestaties laat zien bij het optimaliseren van teksten.
Referenties
Devlin, J., Chang, M. W., Lee, K., & Toutanova, K. (2018). Bert: Pre-training of deep bidirectional transformers for language understanding. arXiv preprint arXiv:1810.04805.
Floridi, L., & Chiriatti, M. (2020). GPT-3: Its nature, scope, limits, and consequences. Minds and Machines, 30(4), 681-694.
Reimers, N., & Gurevych, I. (2019). Sentence-bert: Sentence embeddings using siamese bert-networks. arXiv preprint arXiv:1908.10084.
Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, A. N., … & Polosukhin, I. (2017). Attention is all you need. In Advances in neural information processing systems (pp. 5998-6008).
de Vries, W., van Cranenburgh, A., Bisazza, A., Caselli, T., van Noord, G., & Nissim, M. (2019). Bertje: A dutch bert model. arXiv preprint arXiv:1912.09582.
Warstadt, A., & Bowman, S. R. (2019). Linguistic analysis of pretrained sentence encoders with acceptability judgments. arXiv preprint arXiv:1901.03438.