Breekijzer - een woordafbreking voor Nederlandse woorden

Introductie

Het Nederlands is de taal van de samenstelling de taal van de autobandventieldopjesfabriekshalaanbestedingsprocedure. We hebben daarom meer behoefte om woorden af te breken dan andere talen.

"Maar waarom kan alleen een tekstverwerker woorden afbreken?", dacht ik. Waarom geen webbrowser, of waarom niet een mobiele telefoon, waar de ruimte pas echt krap is? Ik wou dat mijn programma's in ieder geval hun teksten netjes met afgebroken woorden toonden. Dat bleek makkelijker gezegd dan gedaan.

Het bleek dat je nergens een goed algoritme kunt vinden hoe je een Nederlands woord afbreekt. Dus is er ook heel weinig software omdat te doen. Dus, wat doe je dan als kundig informaticus: je ontwerpt een algoritme. Op deze pagina deel ik mijn algoritme, genaamd "Breekijzer" met de rest van de wereld.

Wat doet het nu precies?

Het algoritme deelt een woord op in lettergrepen. Bijvoorbeeld je stopt er "kinderboerderij" in en het spuugt "kin-der-boer-de-rij" uit.

Wat voor algoritme is het?

Breekijzer is een algoritme dat slechts heel weinig kennis van de Nederlandse woordenlijst heeft. In plaats daarvan bevat het kennis over wat een geldige Nederlandse lettergreep is en wat niet. Het kan met deze kennis van lettergrepen goed resultaat te behalen. Door het te combineren met een lijst van ongeldige lettergreepcombinaties kan een perfect resultaat behaald worden voor regelmatig gespelde woorden. Onregelmatig gespelde woorden kunnen met een eenvoudige uitzonderingen lijst afgevangen worden. Breekijzer is niet gevoelig voor variaties in de spelling en zeer geschikt voor het afbreken van onbekende woorden.

Bijvoorbeeld: "pannekoek" wordt goed afgebroken, evenals "pannenkoek". "Grizzlybeer" is een onregelmatig gespeld woord en wordt geweigerd. De instinker "lamplicht" wordt foutief afgebroken als "lam-plicht", maar goed afgebruiken als deze lettergreepcombinatie in de lijst van ongeldige lettergreepcombinaties staat.

Breekijzer is zeer compact en vereist weinig rekenkracht. Als een goed resultaat afdoende is kan het zonder extra lijstbestand gebruikt worden. Toepassing in een mobiele telefoon, waar de ruimte beperkt, zou dus mogelijk zijn, maar toepassing in een tekstverwerker, waar alleen een perfect resultaat acceptabel is, ook.

Breekijzer is geen kant en klare oplossing. Het bevat niet de lijsten van ongeldige lettergrepen die nodig zijn voor het perfect functioneren. Ook zal de programmacode niet direct in je tekstverwerker in te bouwen zijn. Voorlopig concentreert het zich op het demonstreren van de techniek. Wie weet evolueert het in de toekomst tot een kant en klare oplossing.

Status

Op dit moment is gereed een document waarin het algoritme in detail besproken wordt en een referentieïmplementatie. Beiden zijn grotendeels voltooid, maar nog niet geperfectioneerd. De referentieïmplementatie is ontwikkeld met Free Pascal en kan vanuit vele programmeertalen gebruikt worden en tevens voor vele platformen gecompileerd worden. De referentieïmplementatie bevat demonstratieprogramma's, eentje voor de commandoregel en een grafische. Een gecompileerde versie staat hieronder ter download.

Het plan is om de referentieïmplementatie een openbronlicentie uit te geven. Totdat de licentie bepaald is, zijn alle rechten voorbehouden aan de auteur en kunt u de referentieïmplementatie alleen voor persoonlijke doeleinden gebruiken.

Download

(C) 2007 Daniël Mantione - E-mail: daniel.mantione@freepascal.org