Het afbreken van woorden is nog niet zo eenvoudig als het lijkt.

 

De stappen om tot goede afbrekingen te komen zijn:

 

  • verzamel de woorden
  • breek de woorden op in de samenstellende woorddelen
  • bepaal de juiste afbreking(en) van de delen
  • combineer de delen weer tot *een of meer) afbrekingen
  • zet de afbreekpatronen om in geldige in voor voor de patroongenerator
  • geneer afbreekpatronen met een patroongenerator
  • pas die patronen toe op de lijst woorden en vergelijke die met de invoer (consistentiecontrole)
  • pas de afbrekingen aan waar noodzakelijk
  • herhaal de stappen tot er geen fouten meer uitkomen
  • genereer de uiteindelijke patroonlijst
  • zet de overblijvende afwijkingen om in 'afwijkende afbreekpatronen'
  • publiceerde lijst, patronen en gegenereerde patroonherkenning

Tot nu toe wordt gebruik gemaakt van het afbreekpatronenbestand van TeX, uit 1996.

Hoewel dat nog behoorlijk werkt, is het niet altijd correct en kan niet omgaan met veranderingen van het woord tijdens het afbreken. OOo kan dat (bijna) wel. (Nu nog niet, zie onderstaand voorbeeld.)

Om dat verschil te overbruggen en de afbreekregels te actualiseren wordt gewerkt aan het uitzoeken van de juiste afbrekingen van woorden. Dit door de afbrekingen van samengestelde woorden samen te stellen uit die van de deelwoorden en die van de deelwoorden handmatig te controleren of maken.

Om optimaal de juiste afbreekposities van woorden weer te geven worden deze gecodeerd opgeslagen.

Omdat die codering er nog niet was (voor zover bekend) is er een bedacht.

De codering voor woordsamenstelling

De codering is als volgt gedefinieerd:

Een eenvoudige afbreking wordt aangegeven met een afbreekteken, waarbij het symbool voor het afbreekteken de = is. Wanneer er met het afbreken een verandering van de schrijfwijze plaatsvindt, dan wordt het getroffen deel tussen haken gezet, met eerst de schrijfwijze als er niet is afgebroken, dan een scheidingsteken, gevolgd door de schrijfwijze als er wel is afgebroken, met het afbreekteken gecodeerd.

Gelukkig hoeven we niet alle (oneindig) woorden van het Nederlands zo uit te pluizen. Veel woorden zijn samengesteld uit kleinere, en je hoeft het dus alleen voor de niet-samengestelde te doen. Grenzen tussen woorddelen geven we aan met een #, met speciale variaties voor:

Voorbeelden:
los=lo=pen.

zus=ter#school
[email protected]#school
omaatje: oma[a|=]tje
ruïne: ru[ï|=i]ne
tv-kast: A-team
tv-kast: tv#[-|=]#kast

Lastig

Sommige woorden zijn dubieus met afbreken. Aan het woord zelf kun je niet zien hoe het moet worden afgebroken.

Denk aan bal=le=tje als het een kleine bal is, maar bal=let=je als het een klein ballet is.

Ook een valk=uil of val=kuil en ui=tje of uit=je zijn hier voorbeelden van.

De afbreekpatronen horen dus bij de woordbetekenis en schrijfwijze, en niet alleen bij de schrijfwijze.

Hoewel... soms in in de samenstelling wel duidelijk(er) wat de betekenis is; een afdelingsuitje zal niet verwijzen naar een ui.

Keuzes

Hoewel het afbreken netjes is beschreven in de leidraad van de NTU, hebben we toch zelf nog een paar keuzes moeten maken.

  1. Letterwoorden, dus woorden die letter voor letter worden uitgesproken zoals bijvoorbeeld HTML breken we NIET af.
  2. Verkortingen als VARA, die wel als woord worden uitgesproken, breken we wel af.
  3. Alle verbindingsstreepjes tussen woorddelen (-) worden bij het afbreken vervangen door het afbreekteken. In de praktijk is dat vaak hetzelfde, maar dat hoeft voor een drukker niet zo te zijn.

Implementatie

Omdat zoals eerder genoemd sommige woorden wel erg dubbelzinnig zijn in het afbreken, worden die dubbelzinnige afbreekposities weggelaten. Niet afbreken is beter dan fout afbreken.

Bij het afbreekproduct zullen we een lijst meeleveren van woorden waarvan we weten dat ze door de techniek verkeerd worden afgebroken.

Techniek

Een afbreeklijst zonder uitzonderingen (zoals omaatje etc) kan relatief eenvoudig worden omgezet in een patroonbstand met Patgen van TeX. Met het afwerken van een aantal niveaus heb je dan een patroonfile.

dan kunnen de gecodeerde uitzonderingen worden toegevoegd.

Met routines, horend bij OOo, kun je daar dan weer een OOo-set van maken.

Dat geheel hebben we geautomatiseerd.