Sono curioso di sapere come si possa comprimere in modo molto compatto il dominio di un nome host IDN arbitrario (come definito da RFC5890 ) e sospetto che questo potrebbe diventare una sfida interessante. Un host Unicode o un nome di dominio (etichetta U) è costituito da una stringa di caratteri Unicode, in genere vincolati a una lingua a seconda del dominio di primo livello (ad esempio lettere greche sotto .gr
), che è codificato in una stringa ASCII che inizia con xn--
(il corrispondente Un'etichetta).
Uno può costruire modelli di dati non solo dai requisiti formali che
ogni etichetta non Unicode deve corrispondere a una stringa
^[a-z\d]([a-z\d\-]{0,61}[a-z\d])?$
;ogni etichetta A deve corrispondere a una stringa
^xn--[a-z\d]([a-z\d\-]{0,57}[a-z\d])?$
; ela lunghezza totale dell'intero dominio (etichette A e etichette non IDN concatenate con i delimitatori '.') non deve superare 255 caratteri
ma anche da varie euristiche, tra cui:
le etichette a U di ordine inferiore sono spesso frasi valide dal punto di vista lessicale, sintattico e semantico in un linguaggio naturale compresi nomi e numeri propri (non punteggiati tranne il trattino, spogliato di spazi bianchi e piegati per Nameprep ), con una preferenza per frasi più brevi; e
le etichette di ordine superiore sono tratte da un dizionario di SLD e TLD e forniscono un contesto per prevedere quale linguaggio naturale viene utilizzato nelle etichette di ordine inferiore.
Temo che ottenere una buona compressione di stringhe così brevi sia difficile senza considerare queste caratteristiche specifiche dei dati e, inoltre, che le librerie esistenti produrranno spese generali non necessarie al fine di soddisfare i loro casi d'uso più generali.
Leggendo il libro online di Matt Mahoney spiegato Compressione dei dati , è chiaro che un certo numero di tecniche esistenti potrebbero essere impiegate per trarre vantaggio dalle ipotesi di modellazione sopra (e / o altre) che dovrebbero tradursi in una compressione di gran lunga superiore rispetto a strumenti meno specifici.
A titolo di contesto, questa domanda è una derivazione da una precedente su SO .
Pensieri iniziali
Mi sembra che questo problema sia un ottimo candidato per la formazione offline e immagino un formato di dati compresso secondo le seguenti linee:
Una codifica Huffman del " suffisso pubblico ", con probabilità tratte da alcune fonti pubblicate di registrazione del dominio o volumi di traffico;
Una codifica Huffman di cui viene utilizzato il modello (linguaggio naturale) per le rimanenti etichette a U, con probabilità tratte da alcune fonti pubblicate di registrazione del dominio o volumi di traffico dati il contesto del suffisso del dominio;
Applicare alcune trasformazioni basate su dizionario dal modello di linguaggio naturale specificato; e
Una codifica aritmetica di ciascun personaggio nelle etichette a U, con probabilità tratte da modelli di linguaggio naturale contestualmente adattivi derivati dall'addestramento offline (e forse anche online, anche se sospetto che i dati potrebbero essere troppo brevi per fornire una visione significativa?).
.in-addr.arpa
; si rompe anche se l'IP cambia mai.