Airbnb gebruikt knowledge graph om websitebezoekers te inspireren

Je leest er steeds vaker over: knowledge graphs. Maar wat zijn het precies? En wat kun je ermee? Joyce van Aalten legt dit begrip op een verrassende manier uit. Ze neemt de lezer mee tijdens haar ontdekkingsreis op Airbnb.nl. 

Door: Joyce van Aalten

Waar gaan we deze zomervakantie naartoe? Een terugkerende vraag zo aan het begin van het jaar. Ook voor mij, mijn man en twee kinderen van tien en zeven jaar. Wordt het dit jaar weer Oostenrijk? Of een land waar we nog nooit eerder geweest zijn – een wens van mijn oudste zoon. Slovenië of Kroatië wellicht? Want daar is het heel leuk, aldus zijn juf. Het belangrijkste is dat we actief bezig kunnen zijn in de buitenlucht. Denk hierbij aan wandelen, de natuur in en nieuwe dingen ontdekken; uiteraard met activiteiten die geschikt zijn voor kinderen. 

Waarom ik mijn vakantieplannen met jullie deel? Omdat het online zoeken naar geschikte plekken ieder jaar een worsteling is. Maar dit keer zou het met behulp van een knowledge graph – een netwerk van entiteiten en relaties tussen die entiteiten – wel eens een stuk makkelijker kunnen worden. 

Travel experience

Airbnb is een van de sites die gebruikmaakt van een knowledge graph. Op die manier kunnen internetters meer intuïtief en gepersonaliseerd zoeken en navigeren door het aanbod van verblijven. Airbnb kiest ervoor om zich hierbij niet te beperken tot het presenteren van huizen, appartementen en bed & breakfasts. Ook vertelt het platform wat er allemaal te doen is op een plek, waar je het beste kunt eten, welke bezienswaardigheden er in de nabije omgeving zijn, et cetera. Zo willen ze je als ‘end-to-end travel’-platform inspireren bij je te boeken reis. Het achterliggende idee: hoe beter Airbnb je hierbij kan helpen, hoe geslaagder je ‘travel experience’ is. 

De knowledge graph die Airbnb hiervoor ontwikkelde betreft een netwerk van aan elkaar geknoopte geografische locaties, verblijven, ervaringen en restaurants. Doordat Airbnb deze entiteiten, de typen entiteiten en de relaties tussen de entiteiten gedefinieerd en vastgelegd heeft, kan een gebruiker informatie ontdekken waarvan hij misschien niet eens wist dat hij ernaar op zoek was. 

Hoe ziet de knowledge graph eruit

In de vereenvoudigde visualisatie van Airbnb’s knowledge graph (afbeelding 1) herkennen we verschillende typen entiteiten: plaatsen, buurten, verblijven, activiteiten, restaurants et cetera. In knowledge graph-taal worden deze typen entiteiten classes (klassen in het Nederlands) genoemd. 

Een klasse is dus het type entiteit; de daadwerkelijke entiteiten (ook wel waarden of instances) noemen we in een knowledge graph nodes. Of, in het Nederlands, knopen of knooppunten. Laten we aan de hand van een voorbeeld eens kijken wat er onder classes en nodes wordt verstaan. 

Op zoek naar een vakantieverblijf

Ik begin mijn zoektocht naar verblijven in de Oostenrijkse plaats Saalbach-Hinterglemm. Dit levert me voor een specifieke periode en mijn reisgezelschap 137 accommodaties op. Mijn oog valt op Apartment Herta.

Hiermee hebben we ongemerkt al een gedeelte van de knowledge graph gebruikt. In afbeeldingen 2 en 3 herkennen we namelijk de volgende nodes en classes: ‘Apartment Herta’ (dit is een node van de class ‘verblijf’) en ‘Hinterglemm’ (dit is een node van de class ‘plaats’).

Ook zien we dat nodes met elkaar zijn verbonden door middel van een specifiek, vast gedefinieerd type relatie. Deze ‘relatie tussen nodes’ noemen we in een knowledge graph relations of edges. In de wiskundige grafentheorie worden dit in het Nederlands ook wel pijlen genoemd. Als we dit grafisch weergeven met bollen en pijlen (zie afbeelding 4 en 5), herkennen we hierin de zogenaamde de RDF triple-structuur (zie kader).

Op zoek naar activiteiten in de omgeving

Zoals ik al zei, het is voor ons gezin belangrijk om tijdens onze vakantie dingen te kunnen ondernemen. Mijn volgende vraag zou dan zijn: Is er voor ons iets te doen in de buurt van Apartment Herta? Bij een Airbnb-site zonder knowledge graph zou dat voor mij betekenen dat ik moet zoeken naar:

  • Welke activiteiten zijn er in Saalbach-Hinterglemm?
  • In welke regio bevindt Saalbach-Hinterglemm zich?
  • Welke activiteiten zijn er in de regio?
  • Welke plaatsen liggen er in de regio?
  • Welke activiteiten zijn er te verrichten in plaatsen in de regio?

Ook moet ik hierbij rekening houden met de periode waarin ik wil reizen en het feit dat een activiteit geschikt moet zijn voor kinderen van zeven en tien jaar oud. Een behoorlijk tijdrovende en ingewikkelde klus. Maar nu krijg ik van Airbnb bij Apartment Herta suggesties voor activiteiten in de buurt (zie afbeelding 6).

Nu wordt de toegevoegde waarde van de knowledge graph goed duidelijk. Want wat is er op de achtergrond gebeurd? Er is een class ‘activiteit’ waarin de node ‘Auf den Spuren des Biber’ zich bevindt. Deze class ‘activiteit’ heeft een relatie ‘wordt georganiseerd in’ met de class ‘plaats’ (zie afbeelding 7 en 8). 

Uit de grafische weergaven wordt al duidelijk dat classes met meerdere andere classes relaties kunnen hebben. Zo hebben zowel de classes ‘verblijf’ als ‘activiteit’ een relatie met de class ‘plaats’. Dat wordt geïllustreerd in afbeelding 9, waarin we de verschillende eerder genoemde classes verzameld hebben, en waarmee een grafische weergave van een eenvoudig netwerk ontstaat. Op basis hiervan kan Airbnb in één oogopslag laten zien welke activiteiten er in de buurt van een verblijf ondernomen kunnen worden. 

In werkelijkheid ligt het iets ingewikkelder, en is plaats hier onderdeel van een regio. Daardoor kunnen er activiteiten bij een verblijf getoond worden, ook als die niet in dezelfde plaats, maar in de regio georganiseerd worden. Zoals in ons geval: Zell am See en Saalbach-Hinterglemm, twee plaatsen die vallen onder de regio ‘Salzburg’. En zo krijg ik dus een suggestie voor de activiteit ‘Auf den Spuren des Biber’, ook al wordt deze niet in Saalbach-Hinterglemm, maar zo’n twintig kilometer verderop, in Zell am See, georganiseerd (zie afbeelding 10).

Airbnb houdt bij het tonen van de activiteiten ook rekening met de periode waarin ik de activiteit wil ondernemen. Zoals we in afbeelding 11 zien, worden er voor de winter andere activiteiten getoond dan in de zomer. Airbnb houdt echter (nog) geen rekening met de leeftijd van mijn kinderen en zodoende worden ook activiteiten getoond die alleen voor volwassenen geschikt zijn.

Als we de knowledge graph uitbreiden met nog meer classes, zoals ‘restaurant’, ‘bezienswaardigheid’ en ‘omgeving’, krijgen uiteindelijk alle nodes door middel van hun onderlinge relaties een plek. Zo ontstaat de complete knowledge graph, waarvan in afbeelding 12 een klein deel ervan grafisch wordt weergegeven.

Nog meer vergelijkbare activiteiten

Voor hiërarchische relaties tussen nodes van bepaalde classes kan ook een taxonomie worden gebruikt. Bij de knowledge graph van Airbnb is dat eveneens het geval. Met behulp van de taxonomie worden nodes van onder andere de classes ‘activiteit’, ‘verblijf’ en ‘restaurant’ hiërarchisch geclassificeerd. 

Zo duidt Airbnb aan dat ‘wandelen’ een ‘buitenactiviteit’ is. En dat ‘buitenactiviteit’ valt onder ‘natuur en buitenleven’. Deze taxonomie en de hiërarchische relaties werden door Airbnb eerst alleen gebruikt om activiteiten aan te duiden. Nu delen ze ook restaurants en verblijven volgens de taxonomie in. Daarmee wordt het mogelijk om aan te geven dat een verblijf ‘aan het strand’ of ‘in de bergen’ ligt. 

Met behulp van de taxonomische indeling van deze activiteit kan ik op zoek naar soortgelijke activiteiten in de regio (zie afbeelding 13). Dat hoeven niet per se alleen wandelactiviteiten te zijn. Via de taxonomie kan ik zoeken naar andere bezigheden in de buitenlucht, zoals paardrijden of een ontmoeting met lama’s (zie afbeelding 14).

Van verblijven naar ervaringen naar restaurants

Omdat alle nodes een plek hebben in de knowledge graph, en dus op een of andere manier met elkaar verbonden zijn, kunnen alle data en informatie met elkaar worden verbonden. Dat maakt het mogelijk om (zoals in het beschreven voorbeeld) via een verblijf in een bepaalde plaats, bij de activiteiten in de regio te belanden. 

Maar ik kan met behulp van de knowledge graph nog een stap verder gaan. Zo kom ik via restaurants in de buurt van een verblijf terecht bij restaurants in de regio, en vanuit deze regio kan ik weer belanden bij verblijven in die regio. Zo kan een gebruiker dus informatie ontdekken die zonder een knowledge graph (en bijbehorende software en inrichting) niet mogelijk zou zijn geweest. Of die veel meer (zoek)inspanningen zou hebben gevraagd.

Daarnaast maakt een knowledge graph informatie vanuit verschillende ingangen toegankelijk. Een gebruiker kan bij Airbnb starten bij een plaats, maar ook vanuit een ervaring of een restaurant. Zo had ik in mijn voorbeeld ook kunnen beginnen met een zoektocht naar een regio in Oostenrijk met veel buitenactiviteiten. Om vervolgens in die regio te speuren naar een geschikt verblijf. 

Voor sommige buurten en voor grote steden maakt Airbnb zelfs een overzicht van restaurants, activiteiten en bezienswaardigheden, een zogenaamd guide book. Deze guide books worden gepresenteerd bij onder andere de verschillende verblijven van die stad, zodat een gebruiker een compleet overzicht van deze plaats krijgt.

Daarnaast gebruikt Airbnb de knowledge graph om op basis van een zoekopdracht specifieke zoeksuggesties (suggesties terwijl je zoekt) aan te bieden. Zo krijg je meteen context bij een verblijf. Dat kan een ‘voorziening’ zijn (een zwembad of de aanwezigheid van wifi), maar ook bezienswaardigheden of een specifieke buurt (zie afbeelding 15 en 16).

Gemene deler

Deze knowledge graph helpt een gebruiker om informatie in context te ontdekken, maakt deze informatie vanuit verschillende ingangen toegankelijk en verbindt de informatie onderling met elkaar. Hierbij is voor Airbnb de geografische component vanzelfsprekend een belangrijke gemene deler: verblijven, activiteiten en restaurants hebben immers allemaal een geografische plek op de kaart.

Bij het ontwikkelen en in gebruik nemen van een knowledge graph is het dan ook de kunst om de gemene deler van de verschillende classes te ontdekken voor het domein waarvoor de knowledge graph ontwikkeld wordt. Voor een zorgverlener kunnen dat de behandelingen zijn die ze aanbieden, voor een bedrijf als Zalando de kleren die ze willen verkopen en voor een museum de objecten die het in zijn collectie heeft. Vanuit de gemene deler kunnen alle aanpalende classes, nodes en relaties hiertussen vastgelegd worden. 

Het maken en onderhouden van een knowledge graph is zeker geen sinecure, maar levert, mits goed toegepast, wél een betere zoek- en vindervaring voor gebruikers op. Mij heeft het in ieder geval geholpen bij het vinden van een vakantiebestemming. En mijn kinderen verheugen zich al op een wandeling met Oostenrijkse lama’s. 

Ga voor de gebruikte literatuur bij dit artikel naar informatieprofessional.nl/categorie/archief-magazines/.


Beschrijvingstaal RDF

Voor de uitwisselbaarheid van data in het algemeen, en dus ook voor knowledge graphs in het bijzonder, is het gebruik van standaard beschrijvingstalen belangrijk. De belangrijkste beschrijvingstaal in het licht van het semantisch web is RDF. RDF staat voor resource description framework en is een W3C-standaard, gebaseerd op XML. Deze taal werkt met zogenaamde triples: een vast stramien van drie semantisch met elkaar verbonden entiteiten (eenheden of entities). Een RDF triple bestaat uit een subject – predicate – object. Vrij vertaald geef je aan wat het onderwerp – gezegde – lijdend voorwerp is. Dat kan er als volgt uitzien:

Vincent van Gogh – geboren in – Zundert

Een object kan op zijn beurt ook weer een subject zijn. En kan dus ook weer een predicate en een object hebben.

Zundert – ligt in – Nederland

In een triple worden de entiteiten en relaties in de triples gekoppeld aan URI’s (Uniform Resource Identifiers). Deze URI’s verwijzen naar informatie over de entiteiten en relaties. Dat kunnen externe webadressen (URL’s) zijn, maar ook verwijzingen binnen een lokaal systeem.


Gebruikte bronnen

> medium.com/airbnb-engineering/scaling-knowledge-access-and-retrieval-at-airbnb-665b6ba21e95

> medium.com/airbnb-engineering/contextualizing-airbnb-by-building-knowledge-graph-b7077e268d5a

> Maak het Vindbaar: op site, schijven en SharePoint


Joyce van Aalten is zelfstandig adviseur op het gebied van terugvindbaarheid van informatie

Deze bijdrage komt uit IP nr. 1 / 2020. Het gehele nummer kun je hier lezen.