Naar de inhoud

Blog ·

Het werkwoord vier woorden verderop

Eén voornaamwoord vervangen herschrijft werkwoorden die het niet aanraakt. Een tabel van 84 woorden die stopt op het onbekende, en congruentie op vier woorden.

Door Provibr

Het Nederlands heeft twee manieren om een lezer aan te spreken. u is formeel en je is informeel, en die keuze is niet louter een kwestie van beleefdheid: ze verandert het werkwoord, en anders dan bij het Franse of het Duitse equivalent hangt de vorm die je krijgt af van waar het werkwoord staat. Deze site was ongemerkt allebei gaan gebruiken, dus kozen we voor je en zetten we alles om. Dat zijn twee omzettingen, want de Nederlandse tekst woont op twee plekken die niets met elkaar gemeen hebben: 102 markdown-artikelen, en een berichtencatalogus met 18841 sleutels. De meting vóór de eerste omzetting: 445 formele voornaamwoorden in 44 van de 102 artikelen, met 362 gewone, 82 bezittelijke en één wederkerend. De andere 58 waren al informeel.

Was dit een taal waarin een voornaamwoord alleen een voornaamwoord is, dan was het geheel één vervangopdracht geweest. Dat is het niet, en de interessante mislukkingen komen daar allemaal uit voort.

De tabel die stilletjes dingen oversloeg

Het Nederlands keert onderwerp en werkwoord om in een vraag of na een vooropgeplaatst element, en de uitgang van het werkwoord verdwijnt dan. kunt u wordt kun je, niet kunt je. Of die uitgang verdwijnt hangt van de stam af: zet u blijft zet je, maar schrijft u wordt schrijf je.

Het script moet dus voor elk woord dat vóór het voornaamwoord kan staan weten wat er met dat woord gebeurt. De eerste versie had een tabel met de werkwoorden die ik in een steekproef gezien had, en liet al het andere met rust. Daardoor werd Duwt u creditnota's veranderd in Duwt je creditnota's en Verlaagt u een tijdstempel in Verlaagt je een tijdstempel. Allebei fout, allebei grammaticaal ogend, en allebei volkomen stil. Het script meldde succes.

Dit is dezelfde storing waar deze codebase eerder door gebeten is in een compleet ander domein: een bewaking die de syntaxboom van onze eigen bron afliep bond één soort variabeledeclaratie en sloeg elke andere soort over, dus meldde ze duizenden gedekte vertaalsleutels terwijl ze blind was voor het patroon dat het hele paneel gebruikt. Een tabel die een onbekende vorm stilletjes overslaat ziet er compleet uit en is dat niet.

De tabel bevat nu alle 84 woorden die werkelijk vóór een formeel voornaamwoord voorkomen, geteld uit het corpus in plaats van uit het geheugen, en een onbekend woord is exitcode 1. Van die 84 veranderen er 51 niets: voegwoorden, betrekkelijke voornaamwoorden en voorzetsels, waarna het voornaamwoord simpelweg het onderwerp of het voorwerp is. Twee derde van de tabel bestaat puur zodat het derde deel dat ertoe doet zich niet achter een standaardgeval kan verstoppen.

Drie fouten die alleen lezen vond

Zodra de tabel volledig was, waren er na de run nog drie zinnen fout, en geen van drieën is een tabelprobleem. tegen u kan liegen was tegen je kan liegen geworden waar het tegen jou kunt liegen moet zijn: het voornaamwoord is daar het voorwerp van een voorzetsel en wordt de beklemtoonde vorm. van u uw was van je uw geworden, omdat de eerste doorgang de positie opgebruikte die een latere doorgang nodig had. En u zich was je zich geworden, waar het wederkerend voornaamwoord van de informele vorm je je is.

Elk van die drie vraagt dat je een hele zinsnede in gedachten houdt. Geen enkele doorgang over een venster van twee of drie woorden kan ze opleveren, en geen enkele test die woordaantallen vergelijkt zou ze opmerken.

Congruentie op afstand

De vondst van de ronde is een zin die met het formele voornaamwoord klopt en met het informele fout is, waarbij de twee betrokken woorden vier woorden uit elkaar staan.

als u die heeft ingesteld is goed. als je die heeft ingesteld is fout; het moet hebt zijn. Het voornaamwoord en het werkwoord congrueren, en die zit ertussen, dus een doorgang die eist dat het werkwoord direct op het voornaamwoord volgt ziet helemaal niets. De doorgang die hier afging was die van het voornaamwoord, en die heeft geen reden om verderop in de zinsnede te kijken.

De controle die dit dichtzet is een reguliere expressie over de afgeronde tekst: het informele voornaamwoord, hoogstens vier tussenliggende woorden, dan een van precies drie werkwoorden. Elke treffer moet door een mens gelezen worden, en wat gelezen en goedgekeurd is wordt met de reden erbij opgeschreven; een nieuwe treffer is exitcode 1.

Precies drie werkwoorden, want dat zijn de enige waarvan de tweedepersoonsvorm tussen de twee registers verschilt. De vijf voor de hand liggende buren zijn in allebei identiek, en ze meenemen leverde vier treffers op die nooit een defect konden zijn. Een controle die regels oplevert waar niemand iets mee hoeft, is een controle die mensen niet meer lezen.

Hoogstens vier woorden, want dat is wat het corpus bevat, en omdat een onbegrensde afstand zinsgrenzen overschrijdt. Zes van de tien treffers op de afgeronde catalogus waren juist correct omdat het werkwoord een ander onderwerp had.

Twee bewakingen, want de maskering is niet te delen

Beide tekstverzamelingen hebben nu een permanente controle, en het zijn losse bestanden.

De reden is dat het vinden van de lopende tekst in allebei een ander probleem is. In markdown maskeer je codeblokken, code in de regel en linkdoelen. In een berichtencatalogus maskeer je de argumentnaam, het stijlwoord, de taklabels en de opmaaktags van de plaatshoudersyntaxis, terwijl je de tekst binnen een tak juist houdt, want die tekst is Nederlands en een voornaamwoord daarin telt mee. Die maskering is een haakjeswandelaar en geen reguliere expressie, om dezelfde reden als de plaatshouderbewaking ernaast er een is: een tak waarvan de tekst één woord is ziet er precies uit als een argument.

Wat de twee bewakingen wél delen is één regel, en die woont in één bestand zodat ze niet uit elkaar kunnen lopen: een voornaamwoord met een hoofdletter telt alleen aan het begin van een zin.

Die regel is een meting en geen gemak. In de artikelen overleven tien kale treffers de omzetting en alle tien staan ze midden in een zin: vijf rackunits uit het datacenterhoofdstuk, en vijf keer de letter zelf uit een alfabet dat hem bewust weglaat. In de catalogus zijn er 61, met 54 midden in een zin, zes als label en één als eenheid in een veldnaam. Alle 61 zijn gelezen en geen ervan is een voornaamwoord. Dat als een lijst met bestandsnamen opschrijven had de tweede schrijfwijze van hetzelfde idee gemist; het als een vorm opschrijven vangt allebei.

De hoofdletterongevoelige vlag op dat patroon is één keer vergeten, waardoor een voornaamwoord met een hoofdletter aan het begin van een zin onzichtbaar werd: precies de vorm die in een kop of na een punt voorkomt. Een probe-test met bekende gevallen ving het meteen. Een bewaking zonder probe is een bewaking die je vertrouwt in plaats van toetst.

Twee manieren om vacuüm groen te zijn

De catalogusomzetting in een browser verifiëren leverde twee valse groenen op, en dat is de overdraagbare helft van deze ronde.

Een pagina achter een rolloutschakelaar antwoordt met een foutpagina, en op een foutpagina staan geen formele voornaamwoorden. Twee paneelschermen zitten zo achter een poort en de scan meldde op allebei nul bevindingen, wat er identiek uitziet als een schone pagina. Wat het zichtbaar maakte was een ondergrens op het aantal tekens: het geblokkeerde antwoord was 173 tekens, en met de schakelaars aan waren dezelfde twee schermen 1335 en 557. Een scan van een lege pagina en een scan van een schone pagina zijn hetzelfde getal.

En de ontwikkelserver cachet de catalogus. De eerste bewust kapotgemaakte run, die rood hoort te gaan zodat je weet dat de controle werkt, was groen, want het verwisselde bestand werd pas na een herstart geserveerd. Een rood bewijs dat om een andere reden groen is, is erger dan geen rood bewijs: het certificeert de controle.

Wat we zouden opschrijven

  1. Een voornaamwoord is in een verbogen taal geen tekenreeks. Het vervangen herschrijft woorden die het niet aanraakt.
  2. Een uitputtende tabel verslaat een tabel uit een steekproef, en het verschil is alleen zichtbaar als hij stopt op wat hij niet kent.
  3. Twee derde van een goede tabel mag niets doen. Die twee derde bestaat zodat de rest zich niet achter een standaardgeval kan verstoppen.
  4. Een venster van twee woorden kan een zinsnede niet zien. Sommige fouten hebben een lezer nodig en daar is geen weg omheen.
  5. Congruentie kan op afstand werken. De onze was vier woorden, en geen enkele doorgang in de keten keek zo ver.
  6. Beperk een controle tot de vormen die werkelijk kunnen verschillen. Vijf extra werkwoorden betekenden vier regels waar niemand iets mee kon.
  7. Een controle die onbruikbare regels oplevert wordt overgeslagen, en dat is erger dan hem niet hebben.
  8. Schrijf de goedgekeurde treffers met hun reden op, en faal op een nieuwe. Stilte is geen uitslag.
  9. Een pagina achter een poort scant schoon. Zet een ondergrens op de omvang van wat je gescand hebt.
  10. Bewijs het rode bewijs. Een ontwikkelcache maakte het onze groen en had niets gecertificeerd.

Voor de duidelijkheid over wat dit is: de artikelomzetting deed 491 vervangingen over 44 bestanden met een diff van precies 306 regels erin en 306 eruit en niets aangeraakt buiten de Nederlandse bronboom; de catalogusomzetting deed 169 vervangingen over 115 sleutels, met het aantal sleutels onveranderd op 18841 en in dezelfde volgorde, en het tekenverschil van het hele bestand letter voor letter verantwoord. Beide tekstverzamelingen meten nu nul formele voornaamwoorden, en de woordinvariant die elk woordpaar vergelijkt dat geen aanspreekvorm is meldde nul verschillen en is drie keer rood bewezen. Onbewezen: één lezer, geen tweede moedertaalspreker, geen toegankelijkheidsmeting, en de foutpadtekst van drie afgeschermde schermen is nooit in een browser gerenderd.

Uit het platformwerk aan Provibr. Wat negen catalogi met een verzameling vaste knoppen doen staat in zestienduizend sleutels, negen talen, een omzettingsscript dat drie artikelen beschadigde waar het nooit op gericht was staat in een omzettingsscript dat te breed liep, en nog een bewaking die het ding niet kon zien waarvoor ze geschreven was staat in een vaag meervoud is geen getal.

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.