Tôi tò mò về việc làm thế nào người ta có thể nén rất gọn tên miền của tên máy chủ IDN tùy ý (như được định nghĩa bởi RFC5890 ) và nghi ngờ điều này có thể trở thành một thách thức thú vị. Máy chủ hoặc tên miền Unicode (nhãn U) bao gồm một chuỗi các ký tự Unicode, thường bị ràng buộc với một ngôn ngữ tùy thuộc vào tên miền cấp cao nhất (ví dụ: các chữ cái Hy Lạp bên dưới .gr
), được mã hóa thành chuỗi ASCII bắt đầu bằng xn--
(tương ứng A-nhãn).
Người ta có thể xây dựng các mô hình dữ liệu không chỉ từ các yêu cầu chính thức mà
mỗi nhãn không Unicode là một chuỗi khớp
^[a-z\d]([a-z\d\-]{0,61}[a-z\d])?$
;mỗi nhãn A là một chuỗi khớp
^xn--[a-z\d]([a-z\d\-]{0,57}[a-z\d])?$
; vàtổng chiều dài của toàn bộ miền (nhãn A và nhãn không IDN được nối với dấu phân cách '.') không vượt quá 255 ký tự
mà còn từ các heuristic khác nhau, bao gồm:
Các nhãn chữ U theo thứ tự thấp hơn thường là các cụm từ có giá trị về mặt từ vựng, cú pháp và ngữ nghĩa trong một số ngôn ngữ tự nhiên bao gồm các danh từ và chữ số thích hợp (không được đánh dấu trừ dấu gạch nối, tước khoảng trắng và gấp lại theo Nameprep ), với ưu tiên cho các cụm từ ngắn hơn; và
nhãn thứ tự cao hơn được rút ra từ một từ điển SLD và TLD và cung cấp ngữ cảnh để dự đoán ngôn ngữ tự nhiên nào được sử dụng trong nhãn thứ tự thấp hơn.
Tôi sợ rằng việc đạt được việc nén tốt các chuỗi ngắn như vậy sẽ khó khăn nếu không xem xét các tính năng cụ thể này của dữ liệu và hơn nữa, các thư viện hiện tại sẽ tạo ra chi phí không cần thiết để chứa các trường hợp sử dụng chung hơn của họ.
Đọc cuốn sách trực tuyến Nén dữ liệu của Matt Mahoney Giải thích , rõ ràng có thể sử dụng một số kỹ thuật hiện có để tận dụng các giả định mô hình hóa trên (và / hoặc khác) mà dẫn đến nén vượt trội so với các công cụ ít cụ thể hơn.
Theo ngữ cảnh, câu hỏi này là một câu trả lời từ câu hỏi trước trên SO .
Suy nghĩ ban đầu
Tôi nhận ra rằng vấn đề này là một ứng cử viên tuyệt vời cho đào tạo ngoại tuyến và tôi dự tính một định dạng dữ liệu nén dọc theo các dòng sau:
Một Huffman mã hóa " hậu tố công cộng ", với xác suất được rút ra từ một số nguồn đăng ký tên miền hoặc lưu lượng truy cập được công bố;
Mô hình mã hóa Huffman sử dụng mô hình (ngôn ngữ tự nhiên) được sử dụng cho các nhãn U còn lại, với xác suất được rút ra từ một số nguồn đăng ký tên miền hoặc khối lượng lưu lượng truy cập được đưa ra theo ngữ cảnh của hậu tố tên miền;
Áp dụng một số biến đổi dựa trên từ điển từ mô hình ngôn ngữ tự nhiên đã chỉ định; và
Mã hóa số học của từng ký tự trong nhãn U, với xác suất được rút ra từ các mô hình ngôn ngữ tự nhiên thích ứng theo ngữ cảnh bắt nguồn từ đào tạo ngoại tuyến (và có lẽ trực tuyến cũng vậy, mặc dù tôi nghi ngờ dữ liệu có thể quá ngắn để cung cấp bất kỳ thông tin chi tiết có ý nghĩa nào?).
.in-addr.arpa
; cũng bị hỏng nếu IP thay đổi.