https://www.usmedia.nl/

3 minuten

Geschreven door: Joël Wijngaarde

deallerbestetaartenbakkervannederland(.nl)

Woordzoeken op hoog niveau

  • website
  • web development

Wanneer een reeks karakters niet willekeurig is, maar verschillende woorden vormt, zie je dat meteen. Zeker als het je moedertaal betreft en jij ouder bent dan pakweg een jaar of 7. Heb je de taal goed onder de knie en lees je boeken en kranten, dan neemt het aantal woorden dat je herkent in een reeks karakters snel toe. Ken je de taal niet, dan blijft een reeks tekens gewoon een reeks tekens. Bij de karakterreeks ’ikhekhelombhakiohambaphambilikakhulu’ weet jij hoogstwaarschijnlijk niet waar je de schaar moet zetten om ’de’, ’allerbeste’; en ’taartenbakker’ los te knippen (tenzij je de Zulu-taal beheerst).

Ken je de taal niet, dan blijft een reeks tekens gewoon een reeks tekens.

Het zinvol opsplitsen van teken-reeksen is dus ook behoorlijk complex voor een computer; die kan tenslotte zonder spaties of streepjes geen individuele woorden onderscheiden - in welke taal dan ook. Omdat wij bij Us Media houden van complexe puzzels, zijn wij op zoek gegaan naar een manier om deze uitdaging te tackelen: leer de computer betekenisvolle woorden herkennen binnen een string van karakters.

Langste woorden eerst

Als basis voor onze oplossing maken we gebruik van een TRIE-algoritme dat probeert losse woorden te onderscheiden door gebruik te maken van online woordenboeken. De ‘zoekboom’ start met de langst mogelijke woorden die terug te vinden zijn in woordenboeken, namengidsen, catalogi en andere online woordenlijsten. In het geval van het voorbeeld zijn dat ‘allerbeste’, ‘taartenbakker’ en ‘nederland’. Bij die gevonden woorden checkt het algoritme of er ook nog kleinere matches mogelijk zijn: Kan een woord verder worden opgesplitst? Is er een enkelvoud mogelijk? Zo kunnen bijvoorbeeld de woorden taart, taarten, beste, bakker, akker, bak, neder en land worden gevonden. Maar ook ta, art, ten, es, te, ba, der, la en lan zijn mogelijk. De woorden die we vinden, geven we een score mee en op die manier worden ze gerangschikt op relevantie. In principe krijgen de langste woorden de hoogste score.

Goede infrastructuur

Voor onze opdrachtgever SIDN gebruikten we deze technologie inmiddels succesvol in hun ‘domeinnaamsuggestietool’. De losse woorden die door het algoritme naar boven komen wanneer een gebruiker van de tool een domeinnaam intypt, worden supersnel gecheckt op mogelijke synoniemen. Die combineert de tool vervolgens op alle mogelijke manieren met elkaar om mogelijke alternatieven voor de domeinnaam te vormen. Die multiplier gaat best hard, en om supersnel met goede uitkomsten te komen is een goede infrastructuur oftewel een slim algoritme nodig. ‘Slechts’ drie gevonden woorden met elk tien synoniemen leveren al duizend mogelijke combinaties op (10 x 10 x 10), en dus duizend potentiële alternatieven voor de ingetypte domeinnaam.

Die multiplier gaat best hard.

Voordat de suggestietool die alternatieven deelt met de aanvrager, worden nog even snel de reeds geregistreerde domeinnamen eruit gefilterd. De rest van het filterwerk doet de aanvrager zelf, door in de suggestietool te schuiven met synoniemen, ze weg te klikken, nieuwe toe te voegen, de volgorde te veranderen; kortom, ermee te ‘spelen’ en zich te laten inspireren.

Gaandeweg leren

Als het gaat om de techniek die nodig is om onze uitdaging - de computer separate woorden laten herkennen in een karakterreeks - zijn we al heel ver gekomen. Natuurlijk is het onze oplossing niet ‘klaar’; we leren en ontwikkelen gaandeweg. Dat in de domeinnaam ‘makelaarsland’ ook het woord ‘aars’ zit, leverde bijvoorbeeld alternatieve domeinnamen op die niet per se aansloten bij de core business van de huizenverkoper in kwestie. Dat vroeg om het opstellen van een blacklist van woorden. Door steeds meer woordenboeken, namen- en begrippenlijsten toe te voegen versterken we het algoritme en maken we innovatieve en gebruiksvriendelijke toepassingen mogelijk.

Een volgende stap - waar onze developers al bovenop zitten - is het meten van de kwaliteit van de uitkomsten en het verder verbeteren daarvan met behulp van machine learning. Daarover meer in een volgende blog.

koffie?

Neem even contact op en we maken snel een afspraak.