Từ hơn 200 quy luật âm vận đến Quizzman Fanqie Engine: Máy tính học ngôn ngữ lịch sử như thế nào?
Series 2 · Nền tảng học thuật — Bài 6
- ← Bài 1: Quảng Vận → Nguyễn Tài Cẩn
- ← Bài 2: Phục dựng MC không phải đoán
- ← Bài 3: Vương Lực · Âm hệ
- ← Bài 4: Parser Khang Hy
- ← Bài 5: Không hardcode 50.000 chữ
- Chuyên mục: Phiên thiết
Khi nhìn vào Quizzman Fanqie Engine, nhiều người thường nghĩ rằng hệ thống chỉ đơn giản là "ghép" thanh mẫu với vận mẫu rồi tạo ra một âm Hán Việt. Thực tế hoàn toàn khác. Đằng sau mỗi kết quả là hàng trăm quy luật âm vận được xây dựng từ các công trình nghiên cứu về tiếng Hán Trung Cổ, âm Hán Việt và lịch sử phát triển của ngôn ngữ Đông Á. Điều quan trọng hơn, những quy luật này không được viết ra một cách ngẫu nhiên. Chúng được hình thành thông qua một quá trình nghiên cứu, thống kê, trừu tượng hóa và kiểm chứng nhiều lần trước khi trở thành một phần của engine.
Một quy luật âm vận không được viết từ trực giác
Giả sử chúng ta quan sát một số chữ Hán.
| Chữ | Hán Việt |
|---|---|
| 國 | quốc |
| 谷 | cốc |
| 木 | mộc |
| 德 | đức |
| 學 | học |
Điểm chung là gì?
Tất cả đều kết thúc bằng:
-c
Nếu chỉ nhìn vài ví dụ, có thể nghĩ đây chỉ là sự trùng hợp.
Nhưng khi khảo sát hàng trăm hoặc hàng nghìn chữ Hán thuộc cùng một nhóm vận, một quy luật bắt đầu xuất hiện.
Thông nhiếp
+
Nhập thanh
↓
-c
Lúc này, điều được lưu trong engine không còn là năm chữ Hán.
Điều được lưu là quy luật.
Quy trình xây dựng một quy luật
Trong Quizzman Fanqie Engine, một quy luật mới thường trải qua nhiều bước.
Khảo sát dữ liệu
↓
Thống kê
↓
Tìm Pattern
↓
Đối chiếu học thuật
↓
Viết Rule
↓
Regression Test
Đây cũng là quy trình được áp dụng cho phần lớn các module của engine.
Bước 1. Khảo sát dữ liệu
Mọi quy luật đều bắt đầu từ dữ liệu.
Nguồn dữ liệu có thể đến từ:
- Quảng Vận;
- Tập Vận;
- Khang Hy Tự Điển;
- Thiều Chửu;
- corpus Hán Việt;
- các báo cáo audit.
Ví dụ.
Nếu muốn nghiên cứu Giang nhiếp.
Nhóm phát triển sẽ thu thập toàn bộ các chữ thuộc Giang nhiếp thay vì chỉ xem một vài ví dụ.
Mục tiêu là nhìn thấy toàn bộ bức tranh.
Bước 2. Thống kê
Sau khi thu thập dữ liệu, bước tiếp theo không phải viết code.
Mà là thống kê.
Ví dụ.
Giả sử khảo sát 500 chữ.
Có thể thu được:
-c
82%
-ch
17%
Ngoại lệ
1%
Đến lúc này mới bắt đầu xuất hiện câu hỏi.
Vì sao lại có hai nhóm lớn như vậy?
Bước 3. Tìm Pattern
Nếu chỉ nhìn tỷ lệ.
Chúng ta vẫn chưa có quy luật.
Bước tiếp theo là tìm xem:
17% còn lại có điểm gì giống nhau?
Ví dụ.
Có thể phát hiện:
Nguyên âm trước
↓
-ch
Trong khi:
Nguyên âm sau
↓
-c
Lúc này.
Một quy luật mới được hình thành.
Đó chính là quá trình abstraction.
Từ hàng trăm dữ liệu cụ thể, rút ra một nguyên tắc tổng quát.
Bước 4. Đối chiếu với âm vận học
Đây là bước rất quan trọng.
Không phải mọi pattern đều trở thành quy luật.
Có những pattern chỉ là:
- ngẫu nhiên;
- lỗi dữ liệu;
- ảnh hưởng của lớp đọc hiện đại.
Do đó.
Mỗi giả thuyết đều phải được đối chiếu với:
- Quảng Vận;
- các nghiên cứu của Nguyễn Tài Cẩn;
- Vương Lực;
- Baxter;
- các công trình về Middle Chinese.
Nếu không có cơ sở học thuật đủ mạnh, quy luật sẽ không được đưa vào engine.
Bước 5. Viết thành thuật toán
Chỉ sau khi quy luật đã được xác nhận.
Nó mới được chuyển thành mã nguồn.
Ví dụ.
Thay vì:
谷
↓
cốc
國
↓
quốc
木
↓
mộc
Engine chỉ cần:
if she == 通 and tone == 入:
coda = "c"
Một quy luật ngắn.
Nhưng có thể xử lý hàng nghìn chữ Hán.
Đây chính là sức mạnh của việc mô hình hóa.
Bước 6. Regression Test
Một quy luật mới không bao giờ được xem là hoàn thành ngay sau khi viết.
Nó phải vượt qua:
- Golden Fixture;
- Corpus Audit;
- Batch Test;
- Regression Test.
Nếu quy luật mới làm hỏng những quy luật cũ.
Nó sẽ bị sửa hoặc loại bỏ.
Điều này giúp toàn bộ engine luôn duy trì tính nhất quán.
Không phải quy luật nào cũng độc lập
Một đặc điểm thú vị của Quizzman Fanqie Engine là:
Các quy luật thường tác động lẫn nhau.
Ví dụ.
Một thay đổi ở:
Thanh mẫu
có thể ảnh hưởng đến:
Thanh điệu
Một thay đổi ở:
Nhiếp
có thể làm thay đổi:
Âm cuối
Do đó.
Engine không hoạt động như một danh sách gồm hàng trăm quy tắc độc lập.
Nó hoạt động như một mạng lưới các quy luật có quan hệ với nhau.
Khi quy luật xung đột
Trong thực tế.
Không hiếm những trường hợp:
Hai quy luật đều có vẻ đúng.
Ví dụ.
Một quy luật dự đoán:
-c
Trong khi quy luật khác lại cho:
-ch
Lúc này.
Engine phải xét thêm:
- đẳng;
- khai hợp;
- nguyên âm;
- thanh mẫu;
- lớp đọc.
Đây là lý do nhiều module của Quizzman Fanqie Engine không chỉ có một quy tắc duy nhất.
Chúng là cả một hệ thống điều kiện nhiều tầng.
Quy luật cũng có ngoại lệ
Một điều Quizzman luôn thừa nhận là:
Không có quy luật nào mô tả được 100% ngôn ngữ.
Lý do rất đơn giản.
Ngôn ngữ không phải toán học.
Trong hơn một nghìn năm phát triển.
Âm Hán Việt chịu ảnh hưởng của:
- nhiều đợt vay mượn;
- nhiều lớp đọc;
- nhiều phương ngữ;
- sự biến đổi của tiếng Việt.
Do đó.
Một quy luật có thể đúng với:
95%
thậm chí:
99%
nhưng vẫn còn những ngoại lệ.
Thay vì sửa quy luật để bao phủ mọi trường hợp.
Quizzman giữ nguyên quy luật.
Ngoại lệ được chuyển sang tầng Lexical Normalization.
Đây là triết lý xuyên suốt của engine.
Từ hàng nghìn ví dụ đến vài trăm quy luật
Điều thú vị là.
Mặc dù Quizzman Fanqie Engine có thể xử lý hàng chục nghìn chữ Hán.
Nhưng số lượng quy luật cốt lõi lại không quá lớn.
Điều đó phản ánh bản chất của ngôn ngữ.
Ngôn ngữ không được tạo nên từ hàng chục nghìn ngoại lệ.
Nó được tạo nên từ một số lượng hữu hạn các quy luật cùng với một tập ngoại lệ lịch sử.
Nhiệm vụ của Quizzman không phải ghi nhớ từng chữ Hán.
Mà là tìm ra những quy luật đó và biến chúng thành các thuật toán có thể thực thi.
Máy tính không "học" như con người
Trong thời đại AI, nhiều người nghĩ rằng máy tính có thể tự học mọi thứ từ dữ liệu.
Quizzman Fanqie Engine đi theo một hướng khác.
Engine không tự phát minh ra quy luật.
Các quy luật được xây dựng dựa trên:
- nghiên cứu học thuật;
- thống kê;
- kiểm chứng;
- và kinh nghiệm của các nhà ngôn ngữ học.
Máy tính chỉ thực hiện những quy luật đó một cách chính xác và nhất quán trên quy mô rất lớn.
Đó cũng là khác biệt giữa một mô hình thống kê thuần túy và một Historical Phonology Rule Engine.
Hơn 200 quy luật không phải là đích đến
Con số hơn hai trăm quy luật không phải là mục tiêu cuối cùng của Quizzman Fanqie Engine.
Khi có thêm tư liệu mới, các quy luật cũ có thể được điều chỉnh, hợp nhất hoặc thay thế bằng những mô hình tốt hơn.
Điều quan trọng không nằm ở số lượng quy luật, mà ở khả năng biến những tri thức của âm vận học thành một hệ thống có thể tính toán, kiểm chứng và tiếp tục phát triển.
Đó cũng là tinh thần cốt lõi của Quizzman Fanqie Engine: thay vì ghi nhớ hàng chục nghìn cách đọc riêng lẻ, engine cố gắng hiểu những quy luật đã tạo nên chúng.
→ Series 2 · Bài 7: Vì sao thuật toán không thể suy ra 100% âm Hán Việt? Hiểu đúng về Pure Projection và Lexical Normalization