donderdag 22 juni 2017

Hunspell wordt herschreven: op naar een betere spellingscontrole voor een miljard mensen (Taalunie:Bericht)

Iedereen wil een perfecte spellingscontrole. Beter dan de software erachter nu kan presteren. Maar dat is niet zo eenvoudig, legt Sander van Geloven uit. De Nederlandse ICT’er kreeg onlangs subsidie om de wereldwijd gebruikte spellingscontrole Hunspell te verbeteren.

Correct gespelde woorden die de spellingscontrole afkeurt omdat hij ze niet kent. Fouten die hij laat staan omdat de spelling in een andere betekenis wél goed is. Het ontbreken van suggesties ter verbetering. Een soms onlogische volgorde van suggesties. Enzovoorts. Sander van Geloven begrijpt dat spellingscontrole een slecht imago heeft. ‘Grote Nederlandse dagbladen publiceren bijna elk jaar een stuk waarin de auteur er tegen tekeer gaat, al gaat de helft van de klachten over grammaticale fouten en niet over spelfouten.’
Maar hebben mensen enig idee hoe ingewikkeld het is om een goede spellingscontrole te krijgen? De zelfstandig ICT-consultant zeker. Hij werkt al jaren aan deze software. Onlangs kregen een Macedoniër en hij 95.000 dollar subsidie van Mozilla Open Source Support – een fonds van het gelijknamige softwarebedrijf – om een geheel nieuwe versie van Hunspell te schrijven. Geld dat volledig opgaat aan de vele, vele uren arbeid die beiden erin moeten steken.
‘Je zou bijvoorbeeld ook een tussencategorie willen. Spellingscontrole geeft alleen aan of de spelling goed of fout is – of eigenlijk: goed en let op, hier is wat mee. Met een tussencategorie kun je aangeven bij een woord als “fijt”: het is correct gespeld, want het woord voor een ontsteking aan je vingertop, maar wellicht bedoel je “feit”. Daarnaast kun je zo alternatieven aangeven die beter Nederlands zijn zoals “beeldscherm” voor “monitor” en “ontspannen” voor “chill”. Of woorden die meer of minder formeel zijn. Zo’n tussencategorie kun je niet op een zondagmiddag ontwikkelen en invoeren.’

Hongaarse wortels
De naam Hunspell zal bij weinig mensen een belletje doen rinkelen. En dat terwijl vrijwel iedereen in Nederland het gebruikt – en door nog een miljard mensen over de hele wereld. De spellingscontrole is geïntegreerd in browsers als Firefox, Safari en Chrome. In Adobe-producten. In officeproducten als LibreOffice. En nog veel meer. Eigenlijk zit Hunspell verwerkt in bijna alles wat geen Microsoftproduct is. Deze softwaregigant gebruikt zijn eigen spellingscontrole.
‘Hunspell is twintig jaar geleden ontwikkeld door de Hongaar László Németh’, vertelt Van Geloven. ‘Vandaar de naam. Hij vond de bestaande opensource spellingscontrole niet goed werken voor zijn taal en schreef een verbeterde versie. Dat bleek goed te werken voor meerdere talen. Ook voor het Nederlands. In 2010 is Németh naar Nederland gehaald om voor een paar duizend euro een aantal essentiële functies die misten voor onze taal in de spellingscontole aan te passen.’
Inmiddels worden ongeveer zeventig talen in 130 verschillende varianten door Hunspell ondersteund. ‘Voor het Nederlands zijn de eisen voor samenstellingen een van de zwaarste. Je kunt ongelofelijk veel woorden aan elkaar koppelen. Nog moeilijker dan het Duits, mede omdat wij andere klinkerbotsingen hebben en ook woorden met verbindingsstreepje: re-integratie, aspirant-lid. Németh heeft dat zeven jaar geleden gefikst. Dat de spelling van die woorden niet spaak loopt met de regels voor afbreking.’
De Stichting OpenTaal, waar Van Geloven ook bij betrokken is, levert voor de Nederlandse versie de noodzakelijke bestanden aan: woordenlijsten en regels voor vervoegingen en samenstellingen. ‘Vooral dat laatste bestand is voor het Nederlands zeer groot. Onlangs hebben we een nieuwe versie van de woordenlijst ingeleverd bij de Taalunie: 500.000 woorden groot tegen 350.000 in de vorige versie. Als die het Keurmerk Spelling heeft gekregen, komt die beschikbaar voor gebruikers.’

Beter, veiliger, sneller
Inmiddels is het tijd om Hunspell vanaf nul opnieuw op te bouwen. In al die jaren is het organisch gegroeid volgens de wetten van opensource software. Dan brengt de ene softwareontwikkelaar een paar verbeteringen aan – tot hij bijvoorbeeld door de geboorte van een kind geen tijd meer heeft. Dan zet een bedrijf er een paar ontwikkelaars op om een paar dingen te veranderen zodat de software beter geschikt is voor hun werk. De Macedoniër en Van Geloven maken er opnieuw een coherent geheel van.
Hunspell moet zo beter, veiliger en sneller worden. ‘Neem de veiligheid. Hunspell is geschreven in C++, een relatief lage softwaretaal. Het voordeel daarvan is de snelheid. Lange woorden als “goederentreinwagondeuren” kunnen dan toch snel genoeg worden gevonden. Als het langer dan een paar milliseconden duurt, stopt de computer met zoeken omdat het natuurlijk niet de bedoeling is dat je minuten wacht tot je tekst is gecontroleerd. Lange woorden worden dan onterecht afgekeurd.’
Een bijkomstigheid van een lage softwaretaal is wel dat je veilig moet ontwikkelen. ‘Juist bij gebruik in webbrowsers wil je voorkomen dat makers van malware en ransomware je software kunnen misbruiken’, zegt Van Geloven. 'Voor de huidige versie van Hunspell zijn verschillende stijlen van C en C++ gebruikt. In versie 2.0 straks alleen versie 14 van C++ – én een codestijl zonder handmatige geheugenallocaties, zodat er minder kans is op security exploits zoals buffer overflows. Enfin, dit wordt een beetje technisch.'

Betere suggesties
Het is nadrukkelijk niet de bedoeling dat de gebruiker iets merkt van deze verbeteringen. ‘Ondanks de relatieve onbekendheid van spellingscontrole zou niemand zonder willen,’ aldus Van Geloven. ‘Niemand laat een sollicitatiebrief de deur uitgaan zonder die eerst te controleren op spelling. Ze weten daarbij dat woorden als “creëren” en “provinciën” worden verbeterd, maar zelf moeten nagaan of het “de” of “het” moet zijn. Die betrouwbaarheid moet absoluut gehandhaafd worden.’
Pas in een volgende fase willen de ontwikkelaars Hunspell ook voor de gebruiker merkbaar verbeteren – als ze daar opnieuw financiering voor weet te vinden. ‘Behalve het invoeren van een tussencategorie wil we ook links toevoegen naar taaladviessites. Spellingscontrole heeft een lerend effect: na een keer of wat dezelfde fout te hebben gemaakt weet je dat provinciën met één e is. Dat effect kan zo worden versterkt. Online is heel veel beschikbaar, maar mensen weten dat nu niet te vinden of het is te veel werk om zelf op te zoeken.’
Ook wil hij de suggesties verbeteren. ‘Soms is de beste suggestie de vierde optie. Dan staan daarboven woorden die veel lijken op het fout gespelde woord, maar nooit bedoeld kunnen zijn. De computer weet dat niet. Microsoft en Google kijken mee en verbeteren zo hun lerend algoritme. Hunspell niet, omdat wij absoluut niet met de gebruikers willen meekijken. Wij zijn afhankelijk van wat mensen ons laten weten. Er kan dus wel een systeem komen dat mensen automatisch vraagt om informatie door te geven – zonder dat wij hun documenten inzien.’

Grammaticacontrole
En dan willen gebruikers eigenlijk ook grammaticacontrole, zoals uit de reguliere klacht in dagbladen blijkt. Van Geloven: ‘Dat heb je bijvoorbeeld nodig om uitdrukkingen met spaties – “o pair” of “au pair?” – op te sporen. Hunspell kan alleen losse aaneengeschreven woorden controleren. Een oplossing daarvoor is LanguageTool, dat ook helpt om foute verwijzingen als “het hondje die” te corrigeren. Maar het detecteren van onjuist spatiegebruik staat daar nog in de kinderschoenen.’
(Eerder gepubliceerd op Taalunie:Bericht)

Geen opmerkingen: