Blog ·
Ein vager Plural ist keine Zahl
Eine Wache, die Zahlen über neun Sprachen vergleicht, meldete zwei Nichtdefekte und ließ zwei Sprachen aus Gründen durch, die nichts mit Zahlen zu tun haben.
Von Provibr
Jeder Artikel, den wir veröffentlichen, existiert in neun Sprachen, und das, was in einer Übersetzung am ehesten schiefgeht, ist kein Wort. Es ist eine Zahl. Eine Anzahl, die in einer Sprache 200 und in einer anderen 20 sagt, ist für einen Leser unsichtbar, der nur eine davon sieht, und es gibt keine Rechtschreibprüfung dafür.
Deshalb gibt es eine Wache. Sie nimmt die englische Quelle, zieht die Zahlen heraus und verlangt, dass jede Übersetzung mindestens ebenso viele Vorkommen desselben Wertes enthält. In dieser Runde brachte sie zwei rote Meldungen über zwei Übersetzungen hervor, die vollkommen korrekt waren, und der Grund ist es wert, aufgeschrieben zu werden.
Die Wache muss Wörter lesen, keine Ziffern
Die naheliegende Fassung dieser Prüfung vergleicht Ziffern, und die hatten wir zuerst. Sie ist hier fast nutzlos, denn unser englischer Hausstil schreibt Zahlen aus. Nicht 38 Tests, sondern achtunddreißig Tests; nicht 1440, sondern eintausendvierhundertvierzig.
Also gibt es eine zweite Wache mit einer Tabelle darin: für jeden prüfenswerten Wert, wie jede der neun Sprachen ihn schreibt. Die Vorkommen im Englischen zählen, sie in jeder Übersetzung zählen und alles melden, was zu kurz kommt.
Kleine Werte sind bewusst ausgeschlossen. In jeder einzelnen dieser Sprachen sind die Wörter für eins, zwei und drei auch Artikel, Präpositionen oder Teile längerer Wörter, und sie zu zählen würde Hunderte von Befunden erzeugen, die nichts bedeuten. Eine Wache, die falschen Alarm schlägt, wird übersprungen, und eine übersprungene Wache ist schlimmer als gar keine.
Zählen per Teilzeichenkette, und Zählen von oben nach unten
Zwei Mechaniken machen den Rest davon möglich, und beide erzeugen den Fehlschlag, um den es in diesem Artikel geht.
Die erste ist, dass der Abgleich ein Abgleich auf Teilzeichenketten sein muss. Das Niederländische schreibt sechzehntausend als ein Wort, und die einzige Möglichkeit, das sechzehn darin zu sehen, ist, hineinzuschauen. Mehrere dieser Sprachen setzen frei zusammen, ein Verankern an Wortgrenzen würde also die meisten echten Treffer verlieren.
Die zweite ist, dass Werte von groß nach klein gezählt werden und jeder Treffer aus dem Text herausgeschnitten wird, bevor der nächste Wert gezählt wird. Ohne das zählt einundvierzig einmal als einundvierzig und einmal als vierzig, und dann sieht eine Sprache, die dieselbe Zahl als ein einziges unteilbares Wort schreibt, so aus, als fehle ihr eine. Sieben der ersten siebenunddreißig Befunde, die die Wache je erzeugt hat, waren genau das, und keiner davon war ein Defekt.
Abgleich auf Teilzeichenketten plus Herausschneiden ist der richtige Entwurf. Er bedeutet zugleich, dass die Wache nach Buchstaben sucht, und Buchstaben sind keine Zahlen.
Das Wort, das keine Zahl ist
Der englische Satz, der sie brach, lautet: a guard on it names hundreds of non defects.
In diesem Satz steht keine Zahl. Hundreds of ist ein Mengenwort, dieselbe Art von Wort wie several oder plenty, und es ist keine Behauptung, dass irgendetwas hundertmal geschehen ist. Aber es enthält die Buchstaben des Zahlwortes, also zählte die Wache im Englischen ein Vorkommen von einhundert und suchte dann in acht Übersetzungen nach einhundert.
Zurück kam Folgendes. Das Italienische sagt centinaia, das Rumänische sagt sute de, und keines von beiden enthält das Zahlwort der Sprache für hundert. Zwei rote Meldungen, über zwei Sätze, die ein Muttersprachler perfekt nennen würde.
Die anderen sechs gingen durch, und nur vier davon gingen aus einem Grund durch. Das niederländische honderden enthält honderd, das deutsche Hunderte enthält hundert, das spanische cientos enthält ciento, das französische centaines enthält cent. Diese vier sind derselbe Defekt wie das Italienische und das Rumänische; die Wache konnte ihn nur nicht sehen, weil das vage Wort zufällig aus dem Zahlwort gebaut ist.
Die letzten beiden sind die unangenehmen. Das Portugiesische ging durch, weil das portugiesische Wort für hundert, cem, in parecem steckt, in einer Überschrift über zwei Dinge, die sich ähnlich sehen. Das Ukrainische ging mit 39 Treffern in einem einzigen Artikel durch, weil die kyrillischen Buchstaben für einhundert in den gewöhnlichen Wörtern für Seite und für Wache stecken.
Von acht Sprachen also: zwei scheiterten an einem Nichtdefekt, vier verbargen denselben Nichtdefekt hinter einem Zufall der Schreibung, und zwei waren grün wegen Wörtern, die mit Zahlen überhaupt nichts zu tun haben. Eine Wache ist nur so vertrauenswürdig wie die Gründe hinter ihren grünen Ergebnissen, und hier ging es nur bei zwei der acht Grüns ums Zählen.
Wohin das Entfernen gehört, und warum es nicht zuerst kommen kann
Die Korrektur ist eine zweite Tabelle: die vagen Plurale, je Sprache. Hundreds, honderden, Hunderte, cientos und centenares, centaines, centinaia, centenas, sute de und die ukrainischen Formen. Vor dem Zählen entfernen, denn sie sind keine Werte.
Das Interessante ist das Wann. Der Instinkt sagt, sie am Anfang zu entfernen, als Aufräumdurchlauf über den Text, und das würde die Wache auf eine Weise kaputtmachen, die viel schwerer zu bemerken ist als das, was sie repariert.
Das Rumänische für vierhundertmal ist patru sute de ori. Es enthält sute de wörtlich. Entfernen Sie die vagen Plurale vorab, dann haben Sie ein echtes vierhundert zerstört, während Sie ein falsches einhundert entfernt haben, und nun meldet die Wache das Rumänische als fehlend bei einer Zahl, die es offensichtlich hat.
Das Entfernen geschieht also innerhalb der Schleife, in dem Moment, in dem die Schleife den Wert einhundert erreicht. Bis dahin hat der Durchlauf für vierhundert patru sute bereits verbraucht, und was von sute de übrig ist, ist wirklich das vage Wort. Die Reihenfolge, die aus einem anderen Grund bestand, erweist sich als das, was dies sicher macht, und das ist ein gutes Argument dafür, den Grund neben dem Code aufzuschreiben.
Mit den entfernten vagen Pluralen ging der Vergleich von 224 Zählungen und zwei Befunden auf 216 Zählungen und keinen zurück. Die Anzahl sinkt, weil ein Wert, der im Englischen nullmal vorkommt, gar nicht mehr verglichen wird, und das ist genau richtig: dort war nie ein hundert.
Sechs Werte, die schlicht fehlten
Beim Beweisen all dessen stellte sich heraus, dass der Tabelle sechs der Werte fehlten, die die neuen Artikel benutzten, sodass diese Zahlen in je acht Sprachen ungeprüft blieben.
Das ist der gewöhnlichere Fehlschlag, und es ist der, der wieder passieren wird. Eine Wertetabelle wird für die Artikel der Runde geschrieben, die sie erzeugt hat, und die nächste Runde schreibt andere Zahlen. Eine fehlende Zeile scheitert nicht; sie prüft still gar nichts, und das ist dieselbe Gestalt wie ein Eintrag in einer Erlaubnisliste mit einem Tippfehler darin, und davon sind wir schon einmal gebissen worden.
Die ehrliche Beschreibung dieser Wache lautet daher: sie ist ein Netz mit bekannter Maschenweite, sie fängt die Fehlerklasse, für die sie gebaut wurde, und jede Runde muss ihre eigenen Werte hinzufügen oder bekommt nichts. Was in Ordnung ist, solange niemand ein grünes Ergebnis als Abdeckung liest.
Was wir aufschreiben würden
- Ein Mengenwort ist kein Wert. Hundreds of ist näher an several als an 100.
- Der Abgleich auf Teilzeichenketten ist hier richtig und zugleich die Quelle des Problems. Zusammensetzende Sprachen brauchen ihn.
- Fragen Sie, warum jedes grüne Ergebnis grün ist. Vier von unseren waren Zufall und zwei waren Rauschen.
- Ein kurzer Zahlwortstamm versteckt sich in gewöhnlichen Wörtern, und das kyrillische 100 steckt im Wort für Seite.
- Ordnen Sie die Durchläufe von groß nach klein und schneiden Sie jeden Treffer heraus, sonst zählen Zusammensetzungen doppelt.
- Wo ein Aufräumen geschieht, zählt genauso viel wie das, was es entfernt. Vage Plurale zuerst zu entfernen zerstört ein echtes vierhundert.
- Halten Sie den Grund neben der Reihenfolge, denn die Reihenfolge ist tragend und sieht nicht danach aus.
- Eine Wertetabelle deckt nur die Runde ab, die sie geschrieben hat. Hier fehlten sechs.
- Eine fehlende Zeile ist still, genau wie ein vertippter Eintrag in einer Erlaubnisliste.
- Sagen Sie, was eine Wache nicht abdeckt, damit niemand Grün als Abdeckung liest.
Zur Klarheit darüber, was das ist: der Vergleich lief über vier Artikel in acht Sprachen, 224 Zählungen mit zwei Befunden, bevor die vagen Plurale behandelt wurden, und 216 ohne danach, sechs Werte der Tabelle hinzugefügt, und das Entfernen der vagen Plurale in die Schleife gelegt statt davor, damit das Rumänische für vierhundert überlebt. Daneben erzeugte jene Runde 886 Artikel ohne Warnungen, eine Inhaltsprüfung von 887 von 887 Dateien Byte für Byte gleich, die Web-Suite bei 4594 grün mit den übrigen Suiten bei 7287, den Faktenvergleich bei 1144 Zählungen ohne Fehlschläge, Tokens bei 64 und Linknamen bei 72, sieben Skripte und vier Typografieregeln rot bewiesen, bevor ihnen grün geglaubt wurde, und einen Layoutdurchlauf von 108 Prüfungen bei 390 Pixeln gegen einen Produktionsbuild. Nicht bewiesen: das Rauschen bei Teilzeichenketten im Ukrainischen und Portugiesischen ist verstanden, aber nicht beseitigt, wofür ein morphologischer Leser nötig wäre und keine Tabelle, und jede Übersetzung hat weiterhin einen Leser.
Aus der Plattformarbeit an Provibr. Was neun Kataloge mit einem Satz fester Bedienelemente anstellen, steht in Sechzehntausend Schlüssel, neun Sprachen, die Wache, die einen gekürzten Linktext von einem ausgetauschten unterscheidet, steht in Zwei Namen für denselben Artikel, und die Leserdurchsicht, die diese ganze Reihe angestoßen hat, steht in Drei Fehler, die kein Skript sehen konnte.