Automatische suggesties bij een foute spelling

8 min.

Automatische relevante suggesties tonen bij fout gespelde woorden is geen gemakkelijke zaak. Lees hieronder hoe we dat doen voor Rail Europe 4A.

Alle wegen leiden naar Parijs

Onze klant Rail Europe 4A besloot onlangs hun site nog gebruiksvriendelijker te maken. Ze vroegen zich daarbij af of wij op hun zoekformulier ook relevante suggesties kunnen tonen wanneer bezoekers foute en onbekende woorden intikken. Rail Europe verkoopt treinticketten, en bezoekers voeren dus veel namen van steden, stationnen en bezienswaardigheden in.

Natuurlijk kunnen wij voor die suggesties zorgen

Het is de bedoeling dat onze suggesties getoond worden terwijl de bezoeker typt. Om dat op een vloeiende manier te doen mikken we op een antwoordtijd van 300 milliseconden: we geven onszelf een derde van een seconde om een verzoek heen en weer te sturen door het internet, de meest relevante suggesties te zoeken, die intelligent te ordenen en filteren, en die te presenteren als een mooi opgemaakte lijst.

We baseerden ons systeem op de Levenshtein automaton. Dat is een erg vernuftig concept dat een lijst woorden neemt, daar alle foute spellingen voor berekent, en die klaar houdt voor toekomstige bevragingen. Het grote voordeel van Levenshtein automata is dat ze erg snel zijn. Om onze vooropgestelde reactietijd te halen was dat een voorwaarde.

Onze klant is een internationale speler met marktaandeel op 5 continenten. Meertaligheid is een strikte eis. Vrij snel toonden we een systeem dat probleemloos Engels, Frans en Spaans behandelde. Die Europese talen gebruiken hetzelfde alfabet, en dat alfabet is de basis voor de goede werking van ons algoritme. Een bezoeker die per ongeluk Pairs intypt op zijn smartphone zal tevreden zijn met onze behulpzame suggestie Paris.

Kunnen we hetzelfde doen op hun platform in China?

Meteen rijzen nogal wat vragen. Gelukkig hebben we ook de antwoorden. Bijvoorbeeld: hoe wordt Chinees getypt? Chinees wordt getypt op gewone toetsenborden, al zij het met de internationaal gangbaarder QWERTY layout. Meest gebruikt hierbij is Pinyin, een standaard systeem om Chinees in ons Latijns alfabet te schrijven. Het betekent ruwweg dat Chinese karakters ingevoerd worden zoals ze uitgesproken worden. De computer raadt dan wat de schrijver bedoelt. Een Chinees die Parijs wil bezoeken zal ba li typen, want Parijs in het Chinees is 巴黎, en dat spreek je uit als bā lí.anneer iemand Chinees typt, hangt meestal een sliert karakters onder hun cursor. Hoe meer ingevoerd wordt, hoe beter de computer kan raden welke karakters van toepassing zijn. Dat systeem op zich is een indrukwekkend technologisch staaltje, en het zit ingebakken in elke computer en smartphone.

Maar wat betekent het om fout Chinees te typen?

Aangezien 巴黎 (Parijs) juist gevormd wordt door ba li in te voeren, is het een typfout om ba ki of ba ri te typen.

Eén van de vele moeilijkheden van het Chinees is dat het zo mogelijk nog een stuk gevoeliger is voor fouten dan Nederlands of Engels. Van zodra één lettertje slecht gemikt wordt, kan een computer of smartphone onmogelijk nog raden dat 巴黎 (Parijs) bedoeld werd.

Wij kunnen die fouten echter wél opvangen, en dat doen we door alweer te grijpen naar onze Levenshtein automata. Dit keer voegen we een extra stap toe: we gaan al onze Chinese stadsnamen eerst translitereren. Dat betekent dat we ze omzetten naar het Latijns alfabet volgens de regels van het Pinyin. Dan berekenen we foute spellingen, en we houden die klaar om snel te corrigeren.

We gaan overigens nóg een stapje verder, want er is nog een manier om fout te typen in het Chinees. Ook al wordt correct ba li ingevoerd, het blijft mogelijk een fout karakter te kiezen uit die lange sliert suggesties. Niet alleen 巴黎 (Parijs) wordt immers ingevoerd als ba li, ook 吧里, 巴里 of 巴利, en nog een aantal andere combinaties ba li worden op dezelfde manier getypt. Geen van die andere combinaties leiden echter naar Parijs.

Voor ons is dat gelukkig goed op te lossen. Onze logica die al werkte voor Nederlands en Engels kan nagenoeg onveranderd overweg met Aziatische karakters. Aangezien we ook werken met transliteratie kunnen we zelfs volledig fout getypte namen toch goed terugvinden.

Brussel in het Chinees is 布鲁塞尔 (bù lǔ sài ěr). Met wat onhandigheid zou iemand bu lu sai er kunnen invoeren en uitkomen bij de karakters 不路鳃二. Die betekenen nagenoeg niets. Niettemin slagen we erin die te interpreteren en Brussel te suggereren.

Wenst u zelf deze functie uit te testen? Probeer het op http://www.raileurope-world.com/