Naar de inhoud

Blog ·

Een vaag meervoud is geen getal

Een bewaking die getallen over negen talen vergelijkt meldde twee niet-defecten, en liet twee talen door om redenen die niets met getallen te maken hadden.

Door Provibr

Elk artikel dat we publiceren bestaat in negen talen, en het meest waarschijnlijke wat er in een vertaling misgaat is geen woord. Het is een getal. Een telling die in de ene taal 200 zegt en in de andere 20 is onzichtbaar voor een lezer die er maar één van ziet, en er is geen spellingcontrole voor.

Dus is er een bewaking. Die neemt de Engelse bron, haalt de getallen eruit, en eist dat elke vertaling minstens evenveel voorkomens van dezelfde waarde bevat. Deze ronde leverde ze twee rode meldingen op over twee vertalingen die volledig correct waren, en de reden is het opschrijven waard.

De bewaking moet woorden lezen, geen cijfers

De voor de hand liggende versie van deze controle vergelijkt cijfers, en die hadden we eerst. Hier is ze bijna nutteloos, want onze Engelse huisstijl schrijft getallen uit. Niet 38 tests maar achtendertig tests; niet 1440 maar veertienhonderdveertig.

Dus is er een tweede bewaking met een tabel erin: voor elke waarde die het controleren waard is, hoe elk van de negen talen hem spelt. Tel de voorkomens in het Engels, tel ze in elke vertaling, en meld alles wat tekortkomt.

Kleine waarden zijn bewust uitgesloten. In elk van deze talen zijn de woorden voor een, twee en drie ook lidwoorden, voorzetsels of stukken van langere woorden, en ze tellen zou honderden bevindingen opleveren die niets betekenen. Een bewaking die wolf roept wordt overgeslagen, en een overgeslagen bewaking is erger dan geen bewaking.

Tellen op deelreeks, en tellen van boven naar beneden

Twee mechanismen maken de rest hiervan mogelijk, en allebei veroorzaken ze het falen waar dit artikel over gaat.

Het eerste is dat de vergelijking op een deelreeks moet gebeuren. Het Nederlands schrijft zestienduizend als één woord, en de enige manier om de zestien erin te zien is erbinnen kijken. Verschillende van deze talen stellen vrijelijk samen, dus verankeren op woordgrenzen zou de meeste echte treffers verliezen.

Het tweede is dat waarden van groot naar klein geteld worden, en dat elke treffer uit de tekst geknipt wordt voordat de volgende waarde geteld wordt. Zonder dat wordt eenenveertig één keer als eenenveertig geteld en één keer als veertig, en dan lijkt een taal die hetzelfde getal als één ondeelbaar woord schrijft er een te missen. Zeven van de eerste zevenendertig bevindingen die de bewaking ooit opleverde waren precies dat, en geen ervan was een defect.

Vergelijken op deelreeks plus uitknippen is het juiste ontwerp. Het betekent ook dat de bewaking naar letters kijkt, en letters zijn geen getallen.

Het woord dat geen getal is

De zin die hem liet omvallen luidt: een bewaking erop noemt honderden niet-defecten.

Er staat geen getal in die zin. Honderden is een hoeveelheidswoord, hetzelfde soort woord als verscheidene of volop, en het is geen bewering dat er iets honderd keer gebeurd is. Maar het bevat de letters van het telwoord, dus telde de bewaking een voorkomen van honderd in het Engels en ging vervolgens op zoek naar honderd in acht vertalingen.

Wat er terugkwam was dit. Het Italiaans zegt centinaia, het Roemeens zegt sute de, en geen van beide bevat het telwoord van die taal voor honderd. Twee rode meldingen, over twee zinnen die een moedertaalspreker perfect zou noemen.

De andere zes kwamen erdoor, en maar vier ervan kwamen erdoor om een reden. Het Nederlandse honderden bevat honderd, het Duitse Hunderte bevat hundert, het Spaanse cientos bevat ciento, het Franse centaines bevat cent. Die vier zijn hetzelfde niet-defect als het Italiaans en het Roemeens; de bewaking kon het alleen niet zien, omdat het vage woord toevallig uit het telwoord opgebouwd is.

De laatste twee zijn de ongemakkelijke. Het Portugees kwam erdoor omdat het Portugese woord voor honderd, cem, in parecem zit, in een kop over twee dingen die op elkaar lijken. Het Oekraïens kwam erdoor met 39 treffers in één artikel, omdat de Cyrillische letters voor honderd in de gewone woorden voor pagina en voor bewaking zitten.

Van acht talen dus: twee faalden op een niet-defect, vier verborgen hetzelfde niet-defect achter een toevalligheid in de spelling, en twee stonden groen op woorden die helemaal niets met getallen te maken hebben. Een bewaking is niet betrouwbaarder dan de redenen achter haar groene uitslagen, en hier gingen maar twee van de acht groene uitslagen over tellen.

Waar het wegstrepen moet gebeuren, en waarom het niet vooraan kan

De reparatie is een tweede tabel: de vage meervouden, per taal. Hundreds, honderden, Hunderte, cientos en centenares, centaines, centinaia, centenas, sute de, en de Oekraïense vormen. Haal ze weg voordat je telt, want het zijn geen waarden.

Het interessante deel is wanneer. De ingeving is om ze aan het begin weg te strepen, als een opruimslag over de tekst, en dat zou de bewaking breken op een manier die veel moeilijker op te merken is dan wat ze repareert.

Het Roemeens voor vierhonderd keer is patru sute de ori. Dat bevat letterlijk sute de. Streep de vage meervouden vooraf weg en je hebt een echte vierhonderd vernield terwijl je een valse honderd verwijderde, en nu meldt de bewaking dat het Roemeens een getal mist dat er overduidelijk staat.

Het wegstrepen gebeurt dus bínnen de lus, op het moment dat de lus bij de waarde honderd aankomt. Tegen die tijd heeft de doorgang voor vierhonderd patru sute al opgegeten, en wat er van sute de over is, is werkelijk het vage woord. De volgorde die er om een andere reden al was, blijkt het ding te zijn dat dit veilig maakt, en dat is een goed argument om de reden naast de code te blijven schrijven.

Met de vage meervouden verwijderd ging de vergelijking van 224 tellingen met twee bevindingen naar 216 tellingen zonder. De telling zakt omdat een waarde die nul keer in het Engels voorkomt helemaal niet meer vergeleken wordt, en dat is precies goed: er was daar nooit een honderd.

Zes waarden die eenvoudigweg ontbraken

Terwijl we dit allemaal bewezen bleek de tabel zes van de waarden te missen die de nieuwe artikelen gebruikten, dus die getallen waren in acht talen elk ongecontroleerd.

Dat is het gewonere falen en het is het falen dat opnieuw zal gebeuren. Een tabel met waarden wordt geschreven voor de artikelen van de ronde die hem gemaakt heeft, en de volgende ronde schrijft andere getallen. Een ontbrekende regel faalt niet; hij controleert stilletjes niets, wat dezelfde vorm heeft als een regel in een allowlist met een tikfout erin, en daar zijn we hier eerder door gebeten.

De eerlijke beschrijving van deze bewaking is dus: het is een net met een bekende maaswijdte, het vangt de klasse fouten waarvoor het gebouwd is, en elke ronde moet zijn eigen waarden toevoegen of krijgt niets. Wat prima is, zolang niemand een groene uitslag als dekking leest.

Wat we zouden opschrijven

  1. Een hoeveelheidswoord is geen waarde. Honderden staat dichter bij verscheidene dan bij 100.
  2. Vergelijken op deelreeks is hier juist en het is de bron van het probleem. Samenstellende talen hebben het nodig.
  3. Vraag waarom elke groene uitslag groen is. Vier van de onze waren toeval en twee waren ruis.
  4. Een korte telwoordstam schuilt in gewone woorden, en de Cyrillische 100 zit in het woord voor pagina.
  5. Loop de doorgangen van groot naar klein en knip elke treffer uit, anders tellen samenstellingen dubbel.
  6. Waar een opruiming gebeurt doet er evenveel toe als wat ze weghaalt. Vage meervouden eerst wegstrepen vernielt een echte vierhonderd.
  7. Houd de reden naast de volgorde, want de volgorde is dragend en ziet er niet zo uit.
  8. Een tabel met waarden dekt alleen de ronde die hem geschreven heeft. Er ontbraken er hier zes.
  9. Een ontbrekende regel is stil, precies zoals een verkeerd getypte regel in een allowlist.
  10. Zeg wat een bewaking niet dekt, zodat niemand groen als dekking leest.

Voor de duidelijkheid over wat dit is: de vergelijking liep over vier artikelen in acht talen, 224 tellingen met twee bevindingen voordat de vage meervouden afgehandeld waren en 216 zonder bevindingen erna, zes waarden aan de tabel toegevoegd, en het wegstrepen van de vage meervouden binnen de lus geplaatst in plaats van ervoor, zodat het Roemeens voor vierhonderd overleeft. Daarnaast leverde die ronde 886 gegenereerde artikelen zonder waarschuwingen op, een contentcontrole van 887 van de 887 bestanden byte-identiek, de websuite op 4594 groen met de andere suites op 7287, de feitenvergelijking op 1144 tellingen zonder falende, tokens op 64 en linknamen op 72, zeven scripts en vier typografieregels rood bewezen voordat ze groen geloofd werden, en een layoutveeg van 108 controles op 390 pixels tegen een productiebuild. Onbewezen: de ruis op deelreeksen in het Oekraïens en het Portugees is begrepen maar niet verwijderd, en daar is een morfologische lezer voor nodig in plaats van een tabel, en elke vertaling heeft nog steeds één lezer.

Uit het platformwerk aan Provibr. Wat negen catalogi met een verzameling vaste knoppen doen staat in zestienduizend sleutels, negen talen, de bewaking die een ingekorte linktekst van een vervangen linktekst onderscheidt staat in twee namen voor hetzelfde artikel, en de lezersreview waar deze hele reeks mee begon staat in drie fouten die geen script kon zien.

Begin met één host en één agent

Maak een account aan, installeer de agent met één commando en koppel je eerste Proxmox-host. De proefperiode loopt 14 dagen en vraagt geen betaalgegevens.