Tốc ký chữ Việt không dấu thời công nghệ số
Sau khi học xong giáo trình tóm lược này, người học có thể:
ASCII chuẩn: 0–127 (7-bit), gồm A–Z, a–z, 0–9 và ký tự điều khiển.
Unicode quy định mã ký tự (code point). UTF-8/UTF-16 là cách biến code point thành dãy byte để lưu/truyền.
Điểm thực chiến: Một chữ tiếng Việt có thể có 2 dạng tương đương về hiển thị:
Normalize(x) = NFC(x)
Code point là "mã", glyph là "hình" font vẽ ra. Hai chuỗi Unicode khác nhau vẫn có thể "trông giống nhau" nếu render khéo.
Chữ VN Song Song 4.0 (CVNSS4.0) là hệ chữ tốc ký tiếng Việt không dùng dấu phụ và dấu thanh trên mặt chữ, chỉ sử dụng 26 ký tự Latin cơ bản (A–Z) theo bàn phím Anh–Mỹ.
CVNSS4.0 = "tiếng Việt viết không dấu, nhưng dấu được mã hóa bằng chữ cái hậu tố" + rút gọn cấu trúc vần để tối ưu số phím
CVNSS4.0 không hiển thị â/ă/ơ/ư… và sắc/huyền/hỏi/ngã/nặng, nhưng mã hóa bằng hậu tố (KHD) để:
Rút gọn hệ thống: phụ âm đầu/cuối, rút vần dài → ngắn.
Khi tích hợp kiểu gõ: thường "gõ nhanh hơn" vì ít thao tác đặt dấu.
Rút gọn theo quy tắc: phụ âm đầu, phụ âm cuối, Y/UY, rút vần dài, tối ưu một số trường hợp.
KHD dùng hậu tố chữ cái để mã hóa: dấu phụ (â/ê/ô; ă/ơ/ư…) và dấu thanh (sắc/huyền/hỏi/ngã/nặng/ngang)
Một số mẫu "ngắn quá" có thể trùng/nhầm → thêm P theo quy tắc.
Gọi một âm tiết CQN là:
S = (O, R, T, D)
Trong đó:
f₁(S): CVN rút vần + đổi âm cuối (coda map)
f₂(S): mã hóa dấu KHD (phụ + thanh)
f₃(S): quy đổi phụ âm đầu/cuối + luật Y/UY + luật đặc biệt
f₄(S): thêm P nếu rơi vào mẫu dễ trùng
CVNSS(S) = f₁(S) ‖ f₂(S) ‖ f₃(S) ‖ f₄(S)
(‖ là phép nối chuỗi)
| CQN | CVN |
|---|---|
| PH | F |
| QU | Q |
| K | C |
| KH | K |
| D | Z |
| Đ | D |
| GI | J |
| GH | G |
| NG / NGH | W |
| CQN | CVN |
|---|---|
| NG | G |
| NH | H |
| CH | K |
| Vần gốc | Vần rút gọn |
|---|---|
| UYÊ | Y |
| IÊ/YÊ | I |
| UÔ | U |
| ƯƠ | Ư |
| UÂ | Â |
| UƠ | Ơ |
| OĂ | Ă |
| OE | E |
| OA | O |
| OAY | A (chỉ vần "oay") |
| Âm cuối gốc | Âm cuối mới |
|---|---|
| T | D |
| P | F |
| C | S |
| N | L |
| M | V |
| NG | Z |
| O/U | W |
| I/Y | J |
KHD chia nhóm theo loại nguyên âm trong CQN:
| Dấu thanh | Hậu tố KHD |
|---|---|
| sắc | B |
| huyền | D |
| hỏi | Q |
| ngã | G |
| nặng | F |
| ngang | Y |
| Dấu thanh | Hậu tố KHD |
|---|---|
| sắc | X |
| huyền | K |
| hỏi | V |
| ngã | W |
| nặng | H |
| ngang | O |
| Dấu thanh | Hậu tố KHD |
|---|---|
| sắc | J |
| huyền | L |
| hỏi | Z |
| ngã | S |
| nặng | R |
P không mã hóa dấu; chỉ dùng để khử trùng/giảm nhầm cho một số mẫu nhất định.
Quy tắc: Kiểm tra vần không dấu phụ + không dấu thanh, nếu rơi vào tập "dễ trùng" → thêm P.
Lưu ý: Các ví dụ khác khi triển khai IME nên kèm test theo từng pass: rút vần / KHD / phụ âm / P.
function CVNSS_Encode(syllable):
x = UnicodeNormalizeNFC(syllable)
(O, R, T, D) = VietnameseSyllableParse(x)
part1 = CompressCVN(R, O) # Lần 1 (rút vần + coda map)
part2 = EncodeKHD(R, T, D) # Lần 2 (mã dấu)
part3 = MapOnsetCoda(O, R, T) # Lần 3 (phụ âm + Y/UY + luật đặc biệt)
part4 = DisambiguateP(R, T, D) # Lần 4 (chống nhầm)
return Concat(part1, part2, part3, part4)
Chat, form quốc tế, thiết bị lạ
Gõ CVNSS bung ra CQN (engine/IME)
Log/định danh/đường dẫn – tránh lỗi encoding/font
Biểu diễn phụ ASCII, token hóa dễ, vẫn giữ thông tin dấu (nhờ KHD)
Mô hình "ASCII hóa có quy tắc + mã hóa dấu" cho ngôn ngữ cần giải pháp gõ/hiển thị đơn giản
Với bảng chữ cái A–Z (mã hóa base26), đặt A=0, …, Z=25
Eₖ(p) = (p + k) mod 26
Dₖ(c) = (c − k) mod 26
Với khối độ dài n, chọn hoán vị π trên {1..n}:
Cᵢ = Pπ(i)
Đây là lớp "đảo vị trí", khác Caesar là "dịch giá trị".
Ánh xạ v(A)=0, v(B)=1, …, v(Z)=25.
Với chuỗi L₀L₁…Lₙ₋₁:
N = Σ v(Lᵢ) · 26n-1-i
(với i từ 0 đến n-1)
Morse là bảng ánh xạ ký tự → chuỗi . và - (ví dụ A=.-, B=-...).
function MorseEncode(text):
out = []
for ch in text:
if ch is space: out.append("//")
else out.append(MORSE_TABLE[ch.upper()])
out.append("/")
return join(out).trim_end("/")
Một pipeline liên ngành minh họa:
CVNSS4.0 là hệ tốc ký tiếng Việt dựa trên CQN, tối ưu cho thời đại số bằng hai ý tưởng then chốt:
Rút gọn có hệ thống (CVN) để giảm độ dài và số phím.
Mã hóa dấu bằng ASCII (KHD) để "không dấu nhưng vẫn khôi phục được", đồng thời dùng P để khử mơ hồ trong các mẫu đặc biệt.