CVNSS 4.0

Tốc ký chữ Việt không dấu thời công nghệ số

Kiều Trường Lâm & Trần Tư Bình
📚 Mục lục

0 Mục tiêu học tập và phạm vi

Sau khi học xong giáo trình tóm lược này, người học có thể:

1
Hiểu đúng CVNSS4.0 là gì (phiên mã/tốc ký ASCII), và khác gì với "bỏ dấu thường" hay "mật mã"
2
Nắm mô hình âm tiết tiếng Việt: Onset–Rime–Tone–DiacriticType và cách CVNSS4.0 mã hóa dấu bằng hậu tố
3
Triển khai pipeline chuẩn: Unicode Normalize → Parse âm tiết → 4 lần xử lý → Ghép kết quả
4
Dùng CVNSS4.0 trong: chat/log/định danh/NLP/IME; và hiểu các lớp mở rộng như Caesar/hoán vị/base26/Morse

1 Nền tảng bắt buộc: "Biểu diễn chữ" trong máy tính

1.1 ASCII (7-bit) và lý do "ASCII-safe"

ASCII chuẩn: 0–127 (7-bit), gồm A–Z, a–z, 0–9 và ký tự điều khiển.

Ưu điểm: Ổn định trong log, URL/path, định danh, giao thức cũ, môi trường "chỉ ASCII".

CVNSS4.0 tận dụng ưu điểm này: chỉ dùng 26 chữ cái Latin cơ bản để đảm bảo đi đâu cũng "sống".

1.2 Unicode: code point ≠ bytes (UTF-8/UTF-16)

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ị:

  • NFC: ký tự dựng sẵn (precomposed)
  • NFD: chữ cái + dấu kết hợp (combining mark)
Pipeline chuẩn của CVNSS phải có bước:
Normalize(x) = NFC(x)

1.3 Glyph (hình vẽ) và Font

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.

Kết luận kỹ thuật: CVNSS4.0 là lớp biểu diễn (representation/transliteration) để ổn định nhập liệu & truyền dẫn, không phụ thuộc glyph/font.

2 Định nghĩa chuẩn

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 không nhằm thay thế Chữ Quốc Ngữ (CQN)
  • CVNSS4.0 dùng song song như một lớp biểu diễn ASCII gọn, gõ nhanh, truyền ổn định
  • Chuyển đổi qua lại với CQN theo quy tắc
Tóm gọn:
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

3 Đặc điểm cốt lõi

Core 1 "Không dấu" nhưng không mất thông tin

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) để:

  • Giảm mơ hồ so với "bỏ dấu thường"
  • Phù hợp môi trường chỉ ASCII (log, path, định danh…)

Core 2 "Tốc ký" = tối ưu số phím

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.

Core 3 "Song song": 2 chế độ dùng

  • Chế độ bộ chữ: viết CVNSS4.0 trực tiếp
  • Chế độ kiểu gõ: gõ CVNSS4.0 nhưng bung ra CQN (IME/engine)

4 Cấu trúc hệ thống CVNSS4.0

2 tầng + 1 cơ chế khử mơ hồ

A
Tầng 1 — CVN (rút gọn chữ)

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.

B
Tầng 2 — KHD (mã hóa dấu bằng hậu tố)

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)

C
Ký hiệu P — chống hiểu nhầm

Một số mẫu "ngắn quá" có thể trùng/nhầm → thêm P theo quy tắc.

5 Mô hình hóa âm tiết và công thức tổng quát

5.1 Mô hình âm tiết tiếng Việt

Gọi một âm tiết CQN là:

S = (O, R, T, D)

Trong đó:

  • O = Onset (phụ âm đầu)
  • R = Rime/Vần (âm chính + âm cuối)
  • T = Tone (dấu thanh)
  • D = DiacriticType (loại dấu phụ của nguyên âm: nón / trăng-móc / không)

5.2 Bốn lần xử lý (4 hàm độc lập)

Định nghĩa:
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
Khi đó:
CVNSS(S) = f₁(S) ‖ f₂(S) ‖ f₃(S) ‖ f₄(S)

(‖ là phép nối chuỗi)

6 Lưu đồ tổng quan

📊 Sơ đồ chuẩn triển khai
Input: Tiếng Việt (CQN/Unicode)
Bước 1: Normalize Unicode NFC
Bước 2: Tách âm tiết: O/R/T/D
Lần 1: CVN rút vần + coda map
Lần 2: KHD mã hóa dấu
Lần 3: Quy đổi phụ âm đầu/cuối + Y/UY
Lần 4: P chống nhầm
Ghép kết quả: 4 nhánh
Output: Chuỗi CVNSS4.0 (ASCII)
Tuỳ chọn: Caesar/Hoán vị/base26/Morse (giáo trình liên ngành)

7 Bảng công thức trọng tâm (học nhanh)

7.1 Thay phụ âm đầu (CQN → CVN)

CQN CVN
PHF
QUQ
KC
KHK
DZ
ĐD
GIJ
GHG
NG / NGHW

7.2 Thay phụ âm cuối (CQN → CVN)

CQN CVN
NGG
NHH
CHK

7.3 Thay Y/UY

  • Y → I (trừ các vần AY, ÂY giữ nguyên)
  • UY → Y

7.4 Rút gọn "vần dài" theo 2 bước đồng thời

Bước 1 – Rút gọn nguyên âm ghép (nucleus):
Vần gốc Vần rút gọn
UYÊY
IÊ/YÊI
U
ƯƠƯ
Â
Ơ
Ă
OEE
OAO
OAYA (chỉ vần "oay")
Bước 2 – Đổi chữ cuối (coda map):
Âm cuối gốc Âm cuối mới
TD
PF
CS
NL
MV
NGZ
O/UW
I/YJ
Kết quả: Nhiều vần 3–4 chữ rút xuống 2 chữ.

8 KHD: Mã hóa dấu

Cốt lõi "không dấu mà không mơ hồ"

KHD chia nhóm theo loại nguyên âm trong CQN:

Nhóm 1 Có dấu nón: â, ê, ô

Dấu thanh Hậu tố KHD
sắcB
huyềnD
hỏiQ
ngãG
nặngF
ngangY

Nhóm 2 Có trăng/móc: ă, ơ, ư

Dấu thanh Hậu tố KHD
sắcX
huyềnK
hỏiV
ngãW
nặngH
ngangO

Nhóm 3 Không dấu phụ: a, e, i, o, u, y

Dấu thanh Hậu tố KHD
sắcJ
huyềnL
hỏiZ
ngãS
nặngR
Tối ưu: Nếu âm tiết kết thúc bằng c/p/t thì dấu sắc không thêm J để ngắn hơn.

9 Ký hiệu P: Chống hiểu nhầm

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.

10 Ví dụ minh họa

Ví dụ 1: tuyết → tydb
• Rút vần: uyêt → yd
• KHD: "ê + sắc" (dấu nón + sắc) → B
• Kết quả: tydb
Ví dụ 2: nguyễn → wylg
• NG/NGH → W
• uyên → yl
• "ê + ngã" → G
• Kết quả: wylg

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.

11 Khung thuật toán

Pseudocode chuẩn triển khai

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)

Ghi chú triển khai quan trọng:

  • Normalize Unicode (NFC) trước khi parse để tránh sai do NFD
  • Thiết kế parse âm tiết ổn định (O/R/T/D) là "xương sống" của engine

12 Ứng dụng (5 nhóm tình huống)

1️⃣ Giao tiếp số không phụ thuộc IME

Chat, form quốc tế, thiết bị lạ

2️⃣ Tích hợp vào bộ gõ

Gõ CVNSS bung ra CQN (engine/IME)

3️⃣ Tối ưu dữ liệu

Log/định danh/đường dẫn – tránh lỗi encoding/font

4️⃣ AI/NLP

Biểu diễn phụ ASCII, token hóa dễ, vẫn giữ thông tin dấu (nhờ KHD)

5️⃣ Khung thiết kế chữ viết

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

13 Phần liên ngành bắt buộc phân biệt

Mã hóa/phiên mã ≠ Mật mã

Ba lớp biến đổi:
  1. Biểu diễn: Unicode code point → bytes (UTF-8) → hiển thị glyph
  2. Phiên mã/tốc ký: CQN ↔ CVNSS (mục tiêu nhập liệu & chuẩn hóa)
  3. Mật mã: che giấu nội dung (Caesar, hoán vị, AES…)
CVNSS4.0 thuộc lớp (2). Caesar/hoán vị/Morse ở đây là phần giáo trình để hiểu hệ biến đổi nói chung.

14 Mật mã Caesar

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í dụ: "HELLO", k=3
Kết quả: "KHOOR"

15 Hoán vị (Transposition/Permutation)

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ị".

16 Base26 (biểu diễn số bằng chữ)

Á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)

Ứng dụng: Tạo mã ngắn dạng chữ, nén ID, nhãn kỹ thuật dễ nhập.

17 Mã Morse

Morse là bảng ánh xạ ký tự → chuỗi . và - (ví dụ A=.-, B=-...).

Thuật toán dạng codebook:
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("/")

18 Xếp chồng lớp biến đổi

Một bài học rất "đại học"

Một pipeline liên ngành minh họa:

CQN (Unicode)
Normalize NFC
CVNSS (ASCII)
(Tuỳ chọn) Caesar/Hoán vị/base26 để minh họa mật mã/toán rời rạc
(Tuỳ chọn) Morse để truyền qua kênh tín hiệu
Lưu ý học thuật: Các mật mã toy (Caesar/hoán vị) không bảo mật trong thực tế.

19 Ghi chú sư phạm: học theo "8 bài"

📚 Bài 1-3: Nền tảng

  1. Học KHD theo 3 nhóm nguyên âm + ngang
  2. Học phụ âm đầu
  3. Học phụ âm cuối

📚 Bài 4-5: Vần

  1. Học Y/UY
  2. Học "vần dài → 2 ký tự" (nucleus + coda map)

📚 Bài 6-7: Tối ưu

  1. Học luật sắc không thêm J khi cuối c/p/t
  2. Học P chống nhầm

📚 Bài 8: Thực hành

  1. Luyện chuyển đổi câu/đoạn thực tế + kiểm thử theo từng pass

20 Kết luận

Đúng tinh thần

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:

💡 Ý tưởng 1

Rút gọn có hệ thống (CVN) để giảm độ dài và số phím.

💡 Ý tưởng 2

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.