Мені цікаво, як можна дуже компактно стиснути домен довільного імені хоста IDN (як визначено RFC5890 ) і підозрювати, що це може стати цікавою проблемою. Ім'я хоста або доменного імені Unicode (U-label) складається з рядка символів Unicode, як правило, обмежених однією мовою залежно від домену верхнього рівня (наприклад, грецькі літери під .gr
), кодованого у рядок ASCII, починаючи з xn--
(відповідний A-label).
Можна будувати моделі даних не лише з формальних вимог, які цього вимагають
кожна метка, яка не є Unicode, повинна відповідати рядку
^[a-z\d]([a-z\d\-]{0,61}[a-z\d])?$
;кожна A-мітка має відповідати рядок
^xn--[a-z\d]([a-z\d\-]{0,57}[a-z\d])?$
; ізагальна довжина всього домену (A-мітки та не-IDN-мітки, з'єднані з '.' роздільниками), не повинна перевищувати 255 символів
а також з різних евристик, зокрема:
U-мітки нижнього порядку часто є лексично, синтаксично та семантично дійсними словосполученнями на якійсь природній мові, включаючи власні іменники та числівники (без знаків, за винятком дефісів, позбавлених пробілів та складених на Nameprep ), з перевагою коротших фраз; і
Мітки вищого порядку витягуються зі словника SLD та TLD та забезпечують контекст для прогнозування того, яка натуральна мова використовується в мітках нижчого порядку.
Я побоююсь, що досягти хорошого стиснення таких коротких рядків буде складно без врахування цих специфічних особливостей даних і, крім того, що існуючі бібліотеки створюватимуть непотрібні накладні витрати, щоб пристосувати їх більш загальні випадки використання.
Онлайн читання книги Метта Махоні в Стиснення даних Роз'яснення , то ясно , що ряд існуючих методів може бути використаний , щоб скористатися вище (і / або інших) моделювання припущень , які повинні привести до значно перевершує стиснення по порівнянні з менш специфічними інструментами.
З точки зору контексту, це питання є відхиленням від попереднього запитання про SO .
Початкові думки
Мене вражає, що ця проблема є прекрасним кандидатом для навчання в режимі офлайн, і я передбачаю стислий формат даних у наступних рядках:
Хаффман, що кодує " загальнодоступний суфікс ", з ймовірностями, отриманими з якогось опублікованого джерела реєстрації домену або обсягів трафіку;
Хаффман, кодування якої (мова натуральної мови) використовується для решти U-міток, з ймовірністю, отриманими з якогось опублікованого джерела реєстрації домену або обсягів трафіку з урахуванням контексту суфіксу домену;
Застосовувати деякі перетворення на основі словника із заданої моделі природної мови; і
Арифметичне кодування кожного символу на U-мітках, з ймовірностями, отриманими з контекстно адаптивних моделей природної мови, отриманих з офлайн-тренувань (а можливо, і в Інтернеті, хоча я підозрюю, що дані можуть бути занадто короткими, щоб забезпечити будь-яке змістовне розуміння?).
.in-addr.arpa
; також порушується, якщо IP колись змінюється.