Перейти до вмісту

Блог ·

Розмита множина не є числом

Сторожа, що порівнює числа девʼятьма мовами, повідомила про два дефекти, які дефектами не були, і пропустила дві мови з причин, не повʼязаних із числами.

Автор: Provibr

Кожна стаття, яку ми публікуємо, існує девʼятьма мовами, і річ, яка найімовірніше піде не так у перекладі, не є словом. Це є числом. Лічба, що каже 200 однією мовою і 20 іншою, є невидимою для читача, який бачить лише одну з них, і жодної перевірки правопису на це немає.

Тож є сторожа. Вона бере англійське джерело, дістає числа й вимагає, щоб кожен переклад містив щонайменше стільки ж випадків того самого значення. Цього раунду вона видала два червоні звіти про два переклади, які були цілком правильними, і причину варто записати.

Сторожа мусить читати слова, а не цифри

Очевидний різновид цієї перевірки порівнює цифри, і його ми мали першим. Тут він майже некорисний, бо наш фірмовий стиль числа виписує словами. Не 38 тестів, а тридцять вісім тестів; не 1440, а тисяча чотириста сорок.

Тож є друга сторожа з таблицею всередині: для кожного значення, яке варто перевіряти, те, як його пише кожна з девʼяти мов. Полічити випадки в англійській, полічити їх у кожному перекладі й повідомити про все, чого забракло.

Малі значення навмисно виключено. У кожній із цих мов слова для одного, двох і трьох є ще й артиклями, прийменниками або частинами довших слів, і лічба їх дала б сотні знахідок, які нічого не означають. Сторожу, що кричить про вовків, починають пропускати, а пропущена сторожа є гіршою за відсутню.

Лічба за підрядком і лічба згори вниз

Дві механіки роблять решту цього можливою, і обидві породжують ту відмову, про яку ця стаття.

Перша полягає в тому, що збіг мусить бути збігом підрядка. Нідерландська пише шістнадцять тисяч одним словом, і єдиний спосіб побачити в ньому шістнадцять це зазирнути всередину. Кілька з цих мов вільно складають слова, тож привʼязка до меж слів утратила б більшість справжніх влучань.

Друга полягає в тому, що значення лічать від найбільшого до найменшого, і кожне влучання вирізають із тексту, перш ніж лічити наступне значення. Без цього сорок один лічать раз як сорок один і раз як сорок, а тоді мова, що пише те саме число одним неподільним словом, має вигляд такої, якій одного бракує. Сім із перших тридцяти семи знахідок, які сторожа взагалі коли-небудь видала, були саме цим, і жодна з них не була дефектом.

Збіг за підрядком плюс вирізання є правильним задумом. Це ще й означає, що сторожа шукає літери, а літери не є числами.

Слово, яке не є числом

Речення, що це зламало, звучить так: сторожа на ньому назве сотні недефектів.

У тому реченні немає числа. Сотні є словом кількості, словом того самого роду, що кілька чи чимало, і воно не є твердженням, що щось сталося сто разів. Але воно містить літери числівника, тож сторожа полічила випадок ста в англійській, а тоді пішла шукати сто у вісьмох перекладах.

Ось що повернулося. Італійська каже centinaia, румунська каже sute de, і жодне з них не містить числівника своєї мови для ста. Два червоні звіти, на двох реченнях, які носій назвав би бездоганними.

Решта шість пройшли, і лише чотири з них пройшли з причини. Нідерландське honderden містить honderd, німецьке Hunderte містить hundert, іспанське cientos містить ciento, французьке centaines містить cent. Ті чотири є тим самим дефектом, що італійський і румунський; сторожа просто не могла його побачити, бо розмите слово випадково збудовано з числівника.

Останні дві є незручними. Португальська пройшла тому, що португальське слово для ста, cem, трапляється всередині parecem, у заголовку про дві речі, які мають схожий вигляд. Українська пройшла з 39 влучаннями в одній статті, бо кириличні літери для ста сидять усередині звичайних слів для сторінки й для сторожі.

Тож із восьми мов: дві зазнали невдачі на недефекті, чотири сховали той самий недефект за збігом написання, а дві були зеленими на словах, які до чисел не мають узагалі жодного стосунку. Сторожі можна довіряти рівно настільки, наскільки можна довіряти причинам її зелених результатів, а тут лише два з восьми зелених стосувалися лічби.

Куди має піти вирізання і чому воно не може йти першим

Виправленням є друга таблиця: розмиті множини, по мовах. Hundreds, honderden, Hunderte, cientos і centenares, centaines, centinaia, centenas, sute de та українські форми. Прибрати їх перед лічбою, бо вони не є значеннями.

Цікавою частиною є коли. Інстинкт каже вирізати їх на початку, як прохід прибирання по тексту, а це зламало б сторожу у спосіб, помітити який набагато важче, ніж те, що воно лагодить.

Румунською чотириста разів буде patru sute de ori. Воно містить sute de буквально. Виріжте розмиті множини наперед, і ви знищили справжні чотириста, прибираючи фальшиву сотню, і тепер сторожа повідомляє, що румунській бракує числа, яке в неї явно є.

Тож вирізання стається всередині циклу, тієї миті, коли цикл доходить до значення сто. На той час прохід для чотирьохсот уже спожив patru sute, і те, що лишилося від sute de, справді є розмитим словом. Порядок, який існував з іншої причини, виявляється тим, що робить це безпечним, і це є добрим доводом на користь того, щоб тримати причину записаною поруч із кодом.

Із прибраними розмитими множинами порівняння пішло з 224 лічб і двох знахідок до 216 лічб і жодної. Лічба падає тому, що значення, яке трапляється в англійській нуль разів, більше не порівнюють узагалі, і це є рівно правильним: жодної сотні там ніколи не було.

Шість значень, яких просто бракувало

Доводячи все це, виявили, що в таблиці бракує шести значень, якими користувалися нові статті, тож ті числа лишалися неперевіреними у восьми мовах кожне.

Це є звичайнішою відмовою, і саме вона станеться знову. Таблицю значень пишуть для статей того раунду, що її створив, а наступний раунд пише інші числа. Відсутній рядок не падає; він мовчки не перевіряє нічого, а це є тією самою формою, що й запис у списку дозволеного з друкарською помилкою, і нас уже за це кусали.

Тож чесним описом цієї сторожі є такий: вона є сіткою з відомим розміром вічка, вона ловить той клас помилок, заради якого її будували, і кожен раунд мусить додати власні значення або не дістати нічого. І це нормально, доки ніхто не читає зелений результат як покриття.

Що ми б записали

  1. Слово кількості не є значенням. Сотні є ближчими до кількох, ніж до 100.
  2. Збіг за підрядком тут є правильним, і саме він є джерелом проблеми. Мовам, що складають слова, він потрібен.
  3. Питайте, чому кожен зелений результат є зеленим. Чотири з наших були збігом, а два шумом.
  4. Коротка основа числівника ховається всередині звичайних слів, а кириличний запис 100 сидить усередині слова для сторінки.
  5. Упорядкуйте проходи від великого до малого і вирізайте кожне влучання, інакше складені слова лічитимуться двічі.
  6. Де стається прибирання, важить так само, як і те, що воно прибирає. Вирізати розмиті множини першими означає знищити справжні чотириста.
  7. Тримайте причину поруч із порядком, бо порядок є несучим і на такий не схожий.
  8. Таблиця значень покриває лише той раунд, що її написав. Тут бракувало шести.
  9. Відсутній рядок є мовчазним, рівно як запис у списку дозволеного з друкарською помилкою.
  10. Кажіть, чого сторожа не покриває, щоб ніхто не читав зелене як покриття.

Для ясності про те, чим це є: порівняння пройшло по чотирьох статтях вісьмома мовами, 224 лічби з двома знахідками до того, як опрацювали розмиті множини, і 216 без жодної потому, шість значень додано до таблиці, а вирізання розмитих множин покладено всередину циклу, а не перед ним, щоб румунські чотириста вижили. Поруч із цим той раунд породив 886 згенерованих статей без застережень, перевірку вмісту 887 із 887 файлів байт у байт тотожних, набір вебу зеленим на 4594 при решті наборів на 7287, порівняння фактів на 1144 лічбах без жодної невдачі, лексеми на 64 і назви посилань на 72, сім скриптів і чотири правила типографіки доведено червоними, перш ніж повірити їм зеленим, а сканування верстки 108 перевірок на 390 пікселях проти виробничої збірки. Не доведено: шум підрядків в українській і португальській зрозуміло, але не прибрано, для чого потрібен морфологічний читач, а не таблиця, і досі є один читач на переклад.

Із платформної роботи над Provibr. Що девʼять каталогів роблять із набором сталих елементів керування, описано в Шістнадцять тисяч ключів, девʼять мов, сторожа, що відрізняє вкорочений текст посилання від підміненого, описана в Дві назви для однієї статті, а рецензія читача, з якої почалася вся ця низка, описана в Три вади, яких не міг побачити жоден скрипт.

Читати далі

Почніть з одного хоста й одного агента

Створіть обліковий запис, встановіть агента однією командою та підключіть свій перший хост Proxmox. Пробний період триває 14 днів і не потребує платіжних даних.