TF-IDF: dit is het en zo gebruik je het in SEO
Wanneer je bekend bent met SEO heb je wellicht de term TF-IDF wel eens voorbij zien komen. Deze methode uit de informatica wordt ook door SEO-software soms gebruikt om te bepalen hoe belangrijk bepaalde woorden zijn in een tekst. Onlangs zagen we de vraag weer opkomen of het slim is om TF-IDF toe te passen -en indien ja- waarom? In deze blogpost probeert Thomas antwoord op die vraag te geven. Maar eerst deze vraag: wat betekent TF-IDF eigenlijk?
Wat betekent TF-IDF?
TF-IDF staat voor Term Frequency – Inversed Document Frequency. Het is een statistische berekening die gebruikt kan worden in tekstanalyses, om te achterhalen hoe belangrijk een woord is in een bepaalde tekst. Die informatie kun je vervolgens gebruiken om te kijken waarover de tekst gaat.
TF-IDF en SEO
Binnen de SEO-wereld wordt wel eens gewerkt met TF-IDF om te kijken welke woorden belangrijk zijn in bijvoorbeeld de top-20 resultaten voor een zoekterm. Die 20 pagina’s worden dan geanalyseerd, waarna je als SEO expert of content schrijver inzicht hebt in welke woorden relevant zijn voor de zoekterm. Ook is het mogelijk dat de algoritmes van zoekmachines mogelijk gebruik maken TF-IDF bij het indexeren van content.
Hoe werkt TF-IDF?
Om een TF-IDF berekening te doen, heb je twee dingen nodig:
1. Een tekstdocument waarvan je wilt weten waarover het gaat
2. Een ‘corpus’: een zeer grote hoeveelheid documenten die lijken op het document dat je wil analyseren.
Vervolgens kun je voor woorden in je document de TF berekenen en vergelijken met hoe vaak dat woord voorkomt in de corpus. Zo filter je woorden eruit die sowieso veel gebruikt worden.
Een woord dat vaak in je tekst voorkomt, maar weinig voorkomt in de corpus, zegt waarschijnlijk iets over het onderwerp van je tekst. Woorden zoals ‘ik’ of ‘het’ komen in de meeste gevallen ook veel voor in de corpus en zijn daardoor niet specifiek relevant voor de tekst die je analyseert.
Voorbeeld van TF-IDF
Om het wat begrijpelijker te maken, zal ik een voorbeeld geven.
Stel, ik wil van dit artikel van mijn collega Arnoud Duiker precies weten waarover het gaat. Per term kan ik nu als eerst kijken wat de ‘term frequency’ is. Dat wil niet veel meer zeggen dan hoe vaak de term voorkomt in de tekst. Bijvoorbeeld:
‘SEO’ komt 2 keer voor
‘Google’ komt 39 keer voor
‘Search’ komt 12 keer voor
Hierboven heb ik handmatig een aantal woorden gekozen om te tellen. Idealiter doe je dit volledig geautomatiseerd voor ieder woord dat in de tekst voorkomt.
Omdat niet ieder document even lang is, delen we het aantal keer dat een woord voorkomt door het totaal aantal woorden. Zo kunnen we het straks gaan vergelijken met de ‘corpus’. In dit geval is het totaal aantal woorden van het artikel 958:
SEO: 2/958 = 0,002
Google: 39/958 = 0,041
Search: 12/958 = 0,0125
We weten dus dat ‘Google’ het vaakst voorkomt in de tekst (althans, van de 3 voorbeeldwoorden). Maar is dat ook een woord dat specifiek is voor die tekst, of is het een woord dat sowieso vaak voorkomt?
Berekening IDF
Om die vraag te beantwoorden, kijken we naar de ‘corpus’, dus de verzameling vergelijkbare documenten. In dit geval gaat het om Nederlandse webpagina’s. Daar zijn er miljarden van, maar met 10 miljoen hebben we er wel genoeg voor onze TF-IDF berekening. Wat we gaan doen, is kijken hoe vaak de woorden voorkomen in die miljoen pagina’s. Bijvoorbeeld:
‘SEO’ komt voor in 1.000 van de 10 miljoen documenten
‘Google’ komt voor in 8.000 van de 10 miljoen documenten
‘Search’ komt voor in 500 van de 10 miljoen documenten (het is immers een Engelstalige term, en we kijken naar Nederlandse webpagina’s)
Nu gebruiken we de mathematische functie ‘log’ om idf (inverse document frequency) te berekenen:
SEO: log(10.000.000 / 1.000) = 4
Google: log(10.000.000 / 8.000) = 3,1
Search: log(10.000.000 / 500) = 4,3
TF-IDF berekening
Nu we zowel TF als IDF hebben berekent, rest er nog 1 stap. Dat is gelukkig een simpele berekening: TF * IDF. Dat ziet er voor onze voorbeeldwoorden zo uit:
SEO: 0,002 * 4 = 0,008
Google: 0,041 * 3,1 = 0,1271
Search: 0,0125 * 4,3 = 0,05375
Per woord hebben we nu de TF-IDF ‘weight’ berekend. Uit dit fictieve voorbeeld blijkt dat de tekst vooral relevant is voor ‘Google’ en ‘Search’ en in mindere mate voor ‘SEO’.
Nu we de berekening helemaal ‘handmatig’ hebben gedaan, denk je wellicht: veel werk, en wat heb ik er eigenlijk aan?. Gelukkig zijn er (SEO) tools die dit geautomatiseerd doen. En dat brengt me gelijk bij het volgende hoofdstuk.
Gebruikt Google deze berekening?
Er zijn bronnen die beweren dat Google TF-IDF, of een geavanceerde variant ervan, gebruikt bij het indexeren van pagina’s. Hoewel Google hier naar mijn weten nooit melding van heeft gemaakt, kan het best kloppen dat een soort van TF-IDF berekening onderdeel is van indexing. Het geeft Google namelijk de mogelijkheid om beter te begrijpen waarover een tekst gaat.
Zoals de Nederlandse SEO’er Roy Huiskes daarentegen terecht opmerkte in een discussie op Facebook: de corpus van Google is ontiegelijk groot, en groeit constant, waardoor het te veel rekenkracht zou kosten om toe te passen.
Ergo, kunnen we TF-IDF wel of niet gebruiken om beter te ranken?
Hmm… Niet direct.
Google is volgens mij veel verder dan een relatief simpel concept als TF-IDF. Toch kan het slim zijn om SEO-tools die TF-IDF berekenen toe te passen, puur om een idee te krijgen van welke onderwerpen gerelateerd zijn aan je hoofdonderwerp.
TF-IDF SEO tools gebruiken
Zoals ik al zei, zijn er SEO tools die het TF-IDF proces automatiseren. Dat gaat ongeveer als volgt:
1. Kies een zoekterm
2. De tool analyseert de top 20 Google-zoekresultaten op die zoekterm
3. De tool past TF-IDF toe op alle gevonden woorden/termen
4. Je krijgt een overzicht van de ‘top termen’, dus de termen met de hoogste TF-IDF weight voor die specifieke zoekterm
Ik kan dit bijvoorbeeld doen voor onze klant QWIC e-bikes, voor het woord ‘elektrische fiets’:
In dit voorbeeld gebruik ik deze tool, maar o.a. Searchmetrics en SEMrush hebben ook een (soort) TF-IDF tool in de suite.
Na een minuut of twee is de analyse afgerond en krijg ik de volgende grafiek te zien:
Zoomen we wat meer in, dan zien we dat deze set aan termen voornamelijk veel voorkomen in de resultaten op de zoekterm ‘elektrische fietsen’:
Via TF-IDF hebben we de gerelateerde termen achterhaald voor de term ‘elektrische fiets’
Als ik nu een tekst schrijf voor de elektrische herenfietsen pagina op de QWIC site, dan kan ik zorgen voor een rijke en complete tekst door deze onderwerpen zoveel mogelijk in de tekst te verwerken. Het kan zijn dat ik bij een eerste versie van de tekst nog niks schreef over de actieradius van de e-bikes. Na het checken van de TF-IDF van de huidige top-pages, kwam ik tot de conclusie dat dit wel degelijk interessant is. Het is een van de vragen die de doelgroep heeft: hoe ver kan ik eigenlijk met die e-bikes voordat ik weer moet opladen?
Denk aan de zoekintentie
Zoals Tim Soulo van Ahrefs schrijft in deze blogpost, is simpelweg vermelden van de gerelateerde termen geen goede aanpak. Uiteindelijk draait content creatie nog steeds om kwaliteit bieden en tegemoet komen aan de zoekintentie van de bezoeker.
Tl;dr:
TF-IDF is een manier om te berekenen waar een document over gaat. TF-IDF tools zijn voor SEO waardevol, maar alleen als ‘check up’ om te kijken of alle belangrijke onderwerpen wel zijn behandeld.