{"slug":"kiem-thu-engine-am-van-hoc-quy-trinh-qa-quizzman-fanqie","title":"Kiểm thử một Engine âm vận học khó như thế nào? Bên trong quy trình QA của Quizzman Fanqie Engine","summary":"QA đa tầng Fanqie Engine: kiểm toàn pipeline (MC→Projection→Hybrid), Golden Fixture, Regression, Tone/Rime Audit, phân loại True Rule Error vs biến thể — không chỉ đúng/sai.","excerpt":"QA đa tầng Fanqie Engine: kiểm toàn pipeline (MC→Projection→Hybrid), Golden Fixture, Regression, Tone/Rime Audit, phân loại True Rule Error vs biến thể — không chỉ đúng/sai.","markdown":"Chuỗi Quizzman Fanqie Engine — Phần 13. [MC → Pinyin & Hán Việt](https://wiki.quizzman.com/wiki/tu-middle-chinese-den-pinyin-va-han-viet-nhieu-he-doc)\n\n# Kiểm thử một Engine âm vận học khó như thế nào? Bên trong quy trình QA của Quizzman Fanqie Engine\nPhần mềm thông thường có thể kiểm thử bằng cách so sánh đầu ra với kết quả mong đợi. Nhưng đối với một engine âm vận học lịch sử, bài toán phức tạp hơn rất nhiều. Một chữ Hán có thể có nhiều phản thiết, nhiều lớp đọc, nhiều nguồn tư liệu và nhiều biến thể lịch sử. Nếu chỉ dùng tiêu chí \"đúng\" hoặc \"sai\", rất nhiều kết quả sẽ bị đánh giá sai bản chất. Chính vì vậy, Quizzman Fanqie Engine được xây dựng cùng với một hệ thống kiểm thử nhiều tầng, nơi mỗi quyết định của thuật toán đều có thể được kiểm chứng, phân loại và truy vết.\n# Tại sao kiểm thử một Fanqie Engine lại khó?\nHãy thử tưởng tượng một bài toán rất đơn giản.\n\n國\n\n↓\n\nquốc\nNếu đây là một từ điển điện tử, việc kiểm thử rất dễ.\n\nExpected\n\n↓\n\nquốc\n\nActual\n\n↓\n\nquốc\nNếu hai kết quả giống nhau, bài kiểm thử thành công.\n\nNhưng đối với Quizzman Fanqie Engine, mọi thứ không đơn giản như vậy.\n\nEngine không chỉ tạo ra:\n\nquốc\nNó còn phải quyết định:\n\nphản thiết nào được sử dụng;\nMiddle Chinese được phục dựng ra sao;\nthanh mẫu nào được chọn;\nvận nào được chọn;\nthanh điệu phát triển như thế nào;\nvì sao kết quả cuối cùng lại là \"quốc\".\nChỉ cần một bước trong số đó sai, toàn bộ chuỗi suy luận có thể bị ảnh hưởng.\n\n# Một kết quả đúng chưa chắc thuật toán đúng\nGiả sử engine trả về:\n\nquốc\nĐiều này chưa đủ để kết luận thuật toán đúng.\n\nCó thể engine:\n\nphục dựng sai Middle Chinese;\nchọn nhầm phản thiết;\náp dụng sai quy luật;\nnhưng vô tình vẫn tạo ra \"quốc\".\nĐây được gọi là **đúng do trùng hợp**.\n\nNếu không phát hiện, những lỗi như vậy sẽ lan sang hàng trăm chữ Hán khác.\n\nĐó là lý do Quizzman Fanqie Engine không chỉ kiểm tra đầu ra cuối cùng.\n\nEngine kiểm tra **toàn bộ quá trình**.\n\n# Kiểm thử theo từng tầng\nPipeline của Quizzman Fanqie Engine được chia thành nhiều bước.\n\nPhản thiết\n\n↓\n\nMiddle Chinese\n\n↓\n\nProjection\n\n↓\n\nLexical\n\n↓\n\nHybrid\nMỗi tầng đều có bộ kiểm thử riêng.\n\nVí dụ:\n\nParser Test\nMiddle Chinese Test\nTone Test\nRime Test\nProjection Test\nCandidate Ranking Test\nAPI Test\nNhờ đó, khi xuất hiện lỗi, nhóm phát triển có thể biết chính xác vấn đề nằm ở đâu.\n\n# Golden Fixture\nMột trong những thành phần quan trọng nhất của hệ thống QA là **Golden Fixture**.\n\nĐây là tập dữ liệu chuẩn được kiểm chứng thủ công.\n\nKhác với benchmark thông thường, Golden Fixture không cố gắng bao phủ thật nhiều chữ.\n\nThay vào đó, nó lựa chọn những trường hợp đại diện cho từng quy luật.\n\nVí dụ:\n\nBình thanh;\nThưởng thanh;\nKhứ thanh;\nNhập thanh;\nthanh mẫu thanh;\nthanh mẫu trọc;\nnhập thanh kết thúc bằng **-p**, **-t**, **-c**, **-ch**;\ncác ngoại lệ lịch sử.\nNếu một thay đổi làm hỏng chỉ một quy luật nhỏ, Golden Fixture sẽ phát hiện ngay.\n\n# Regression Test\nMột trong những nỗi lo lớn nhất của bất kỳ Rule Engine nào là:\n\nSửa đúng một chỗ nhưng làm hỏng mười chỗ khác.\nVí dụ.\n\nMột thay đổi nhằm cải thiện:\n\n江攝\ncó thể vô tình ảnh hưởng tới:\n\n宕攝\nHoặc:\n\n次濁平\n\n↓\n\nNgang\ncó thể làm hỏng hàng trăm chữ khác nếu triển khai sai.\n\nDo đó, sau mỗi thay đổi, toàn bộ bộ kiểm thử đều được chạy lại.\n\nNếu xuất hiện lỗi hồi quy (Regression), thay đổi sẽ bị xem xét trước khi được đưa vào phiên bản chính thức.\n\n# Kiểm thử thanh điệu\nThanh điệu là một trong những thành phần dễ phát sinh lỗi nhất.\n\nMột bài kiểm thử không chỉ xác nhận:\n\nsắc\nhay\n\nnặng\nMà còn xác nhận:\n\nslot lịch sử;\nâm hay dương;\nBình, Thưởng, Khứ hay Nhập;\nđiều kiện thanh mẫu.\nVí dụ.\n\nMột chữ thuộc:\n\nThứ trọc\n\n+\n\nBình thanh\nphải được kiểm tra xem có rơi vào đúng quy luật phát triển sang **ngang** hay không.\n\nĐiều này giúp tránh việc những thay đổi nhỏ trong thuật toán thanh điệu làm phá vỡ các quy luật lịch sử đã được xác nhận.\n\n# Kiểm thử vận mẫu\nTương tự, hệ thống vận mẫu cũng được kiểm thử độc lập.\n\nVí dụ:\n\nThông nhiếp;\nGiang nhiếp;\nCảnh nhiếp;\nLưu nhiếp;\nThâm nhiếp.\nĐối với Nhập thanh, engine còn phải kiểm tra:\n\n-p\n\n-t\n\n-c\n\n-ch\nKhông chỉ đúng âm cuối.\n\nMà còn đúng điều kiện phát sinh âm cuối đó.\n\nVí dụ:\n\n-k\n\n↓\n\n-c\nkhác với:\n\n-k\n\n↓\n\n-ch\ndù kết quả đều xuất phát từ cùng một phụ âm cuối của tiếng Hán Trung Cổ.\n\n# Candidate Audit\nMột chữ Hán có thể tồn tại:\n\nnhiều phản thiết;\nnhiều nguồn;\nnhiều cách phục dựng.\nDo đó, chỉ kiểm thử kết quả cuối cùng là chưa đủ.\n\nQuizzman Fanqie Engine còn kiểm thử:\n\nthứ tự xếp hạng ứng viên;\nđiểm số của từng ứng viên;\nlý do một ứng viên được chọn.\nĐiều này giúp Candidate Ranking hoạt động ổn định ngay cả khi dữ liệu ngày càng lớn.\n\n# Batch Audit\nNgoài các bài kiểm thử đơn lẻ, engine còn được chạy trên những tập dữ liệu lớn.\n\nVí dụ:\n\nRandom Corpus;\nBenchmark;\nCorpus chuẩn;\nAudit hàng nghìn chữ Hán.\nMục tiêu không chỉ là đo độ chính xác.\n\nQuan trọng hơn là phát hiện:\n\nquy luật mới bị phá vỡ;\nvùng dữ liệu có nhiều lỗi;\nnhững thay đổi bất thường sau mỗi bản cập nhật.\nĐây là cách nhóm phát triển theo dõi chất lượng của toàn bộ hệ thống theo thời gian.\n\n# Phân loại lỗi thay vì chỉ đếm lỗi\nMột trong những điểm khác biệt của Quizzman Fanqie Engine là:\n\nKhông phải mọi sai khác đều được xem là \"lỗi\".\n\nSau khi chạy audit, hệ thống sẽ phân loại.\n\nVí dụ:\n\n**True Rule Error** – thuật toán âm vị thực sự sai.\n**Colloquial Variant** – khác do lớp khẩu ngữ.\n**Polyphonic Character** – chữ đa âm.\n**Orthographic Difference** – khác cách ghi chính tả.\n**Historical Variant** – biến thể lịch sử.\n**Lexical Difference** – khác lớp từ vựng.\nNhờ cách phân loại này, nhóm phát triển biết chính xác nên sửa thuật toán hay chỉ cần cập nhật dữ liệu.\n\n# Kiểm thử API\nNgoài thuật toán, toàn bộ giao diện lập trình cũng được kiểm thử.\n\nVí dụ:\n\nphân tích phản thiết;\nsinh Hán Việt;\nsinh Pinyin;\ntruy vấn ngược;\nprojection;\nhealth check.\nMục tiêu là đảm bảo người dùng luôn nhận được kết quả ổn định bất kể họ sử dụng giao diện web, CLI hay API.\n\n# Vì sao QA lại quan trọng?\nMột engine âm vận học có thể chứa hàng trăm quy luật.\n\nMỗi quy luật lại tác động đến hàng nghìn chữ Hán.\n\nNếu không có hệ thống kiểm thử, chỉ một thay đổi nhỏ cũng có thể làm giảm chất lượng của toàn bộ engine mà rất khó phát hiện.\n\nDo đó, QA không phải công việc diễn ra sau khi lập trình xong.\n\nNó là một phần của kiến trúc.\n\nMỗi khi một quy luật mới được bổ sung, hệ thống kiểm thử cũng được mở rộng tương ứng.\n\n# Kiểm thử để phục vụ nghiên cứu\nMục tiêu cuối cùng của Quizzman Fanqie Engine không chỉ là tạo ra một phần mềm hoạt động ổn định.\n\nĐiều quan trọng hơn là xây dựng một nền tảng có thể **kiểm chứng các giả thuyết âm vận học**.\n\nKhi mỗi bước của pipeline đều có bài kiểm thử riêng, các nhà nghiên cứu có thể:\n\nthay đổi một quy luật;\nchạy lại toàn bộ corpus;\nquan sát ảnh hưởng của thay đổi đó;\nvà đánh giá bằng dữ liệu thay vì cảm tính.\nĐó cũng là lý do hệ thống QA của Quizzman Fanqie Engine không chỉ phục vụ phát triển phần mềm, mà còn trở thành một công cụ hỗ trợ nghiên cứu ngôn ngữ học lịch sử.\n\n# Bài tiếp theo\nSau khi khám phá kiến trúc, thuật toán, benchmark và hệ thống kiểm thử, chúng ta sẽ khép lại series bằng một góc nhìn rộng hơn: **tương lai của Quizzman Fanqie Engine**. Từ một engine suy diễn âm Hán Việt, nền tảng này có thể mở rộng sang Hán Nhật, Hán Hàn, các phương ngữ tiếng Hán, xử lý văn bản cổ, OCR và các ứng dụng AI trong nghiên cứu lịch sử ngôn ngữ Đông Á.\n","html":"<nav class=\"series-nav\" aria-label=\"Chuỗi bài Fanqie\"><p><strong>Chuỗi Quizzman Fanqie Engine</strong> — Phần 13</p><ul><li>← Phần 1: <a href=\"https://wiki.quizzman.com/wiki/quizzman-fanqie-engine-la-gi-phan-thiet-trung-co-den-han-viet\">Quizzman Fanqie Engine là gì?</a></li><li>← Phần 2: <a href=\"https://wiki.quizzman.com/wiki/lich-su-phan-thiet-va-su-ra-doi-he-thong-thiet-van-quang-van\">Lịch sử phản thiết</a></li><li>← Phần 3: <a href=\"https://wiki.quizzman.com/wiki/am-han-viet-duoc-hinh-thanh-nhu-the-nao-tu-truong-an-thoi-duong\">Âm Hán Việt hình thành</a></li><li>← Phần 4: <a href=\"https://wiki.quizzman.com/wiki/tai-dung-tieng-han-trung-co-trai-tim-quizzman-fanqie-engine\">Tái dựng Middle Chinese</a></li><li>← Phần 5: <a href=\"https://wiki.quizzman.com/wiki/thuat-toan-suy-dien-han-viet-tu-thanh-mau-van-mau\">Thuật toán suy diễn Hán Việt</a></li><li>← Phần 6: <a href=\"https://wiki.quizzman.com/wiki/thuat-toan-thanh-dieu-han-viet-tu-thanh-trung-co-eight-tone-slot\">Eight Tone Slot</a></li><li>← Phần 7: <a href=\"https://wiki.quizzman.com/wiki/he-thong-van-mau-han-viet-tu-16-nhiep-trung-co\">Hệ thống vận mẫu · 16 nhiếp</a></li><li>← Phần 8: <a href=\"https://wiki.quizzman.com/wiki/tu-quy-luat-den-thuc-te-lexical-normalization-fanqie-engine\">Lexical Normalization</a></li><li>← Phần 9: <a href=\"https://wiki.quizzman.com/wiki/do-chinh-xac-quizzman-fanqie-engine-danh-gia-engine-am-van-hoc\">Độ chính xác · Benchmark</a></li><li>← Phần 10: <a href=\"https://wiki.quizzman.com/wiki/vi-sao-quizzman-fanqie-engine-khong-phai-la-tu-dien-han-viet\">Không phải từ điển Hán Việt</a></li><li>← Phần 11: <a href=\"https://wiki.quizzman.com/wiki/hanh-trinh-phat-trien-quizzman-fanqie-engine-tu-tra-cuu-den-nen-tang\">Hành trình phát triển · V6</a></li><li>← Phần 12: <a href=\"https://wiki.quizzman.com/wiki/tu-middle-chinese-den-pinyin-va-han-viet-nhieu-he-doc\">MC → Pinyin &amp; Hán Việt</a></li><li>Chuyên mục: <a href=\"https://wiki.quizzman.com/category/phien-thiet\">Phiên thiết</a></li></ul></nav>\n<blockquote class=\"ai-answer\"><p>Phần mềm thông thường có thể kiểm thử bằng cách so sánh đầu ra với kết quả mong đợi. Nhưng đối với một engine âm vận học lịch sử, bài toán phức tạp hơn rất nhiều. Một chữ Hán có thể có nhiều phản thiết, nhiều lớp đọc, nhiều nguồn tư liệu và nhiều biến thể lịch sử. Nếu chỉ dùng tiêu chí &quot;đúng&quot; hoặc &quot;sai&quot;, rất nhiều kết quả sẽ bị đánh giá sai bản chất. Chính vì vậy, Quizzman Fanqie Engine được xây dựng cùng với một hệ thống kiểm thử nhiều tầng, nơi mỗi quyết định của thuật toán đều có thể được kiểm chứng, phân loại và truy vết.</p></blockquote>\n<h2>Tại sao kiểm thử một Fanqie Engine lại khó?</h2>\n<p>Hãy thử tưởng tượng một bài toán rất đơn giản.</p>\n<pre><code>國\n\n↓\n\nquốc</code></pre>\n<p>Nếu đây là một từ điển điện tử, việc kiểm thử rất dễ.</p>\n<pre><code>Expected\n\n↓\n\nquốc\n\nActual\n\n↓\n\nquốc</code></pre>\n<p>Nếu hai kết quả giống nhau, bài kiểm thử thành công.</p>\n<p>Nhưng đối với Quizzman Fanqie Engine, mọi thứ không đơn giản như vậy.</p>\n<p>Engine không chỉ tạo ra:</p>\n<pre><code>quốc</code></pre>\n<p>Nó còn phải quyết định:</p>\n<ul>\n<li>phản thiết nào được sử dụng;</li>\n<li>Middle Chinese được phục dựng ra sao;</li>\n<li>thanh mẫu nào được chọn;</li>\n<li>vận nào được chọn;</li>\n<li>thanh điệu phát triển như thế nào;</li>\n<li>vì sao kết quả cuối cùng lại là &quot;quốc&quot;.</li>\n</ul>\n<p>Chỉ cần một bước trong số đó sai, toàn bộ chuỗi suy luận có thể bị ảnh hưởng.</p>\n<h2>Một kết quả đúng chưa chắc thuật toán đúng</h2>\n<p>Giả sử engine trả về:</p>\n<pre><code>quốc</code></pre>\n<p>Điều này chưa đủ để kết luận thuật toán đúng.</p>\n<p>Có thể engine:</p>\n<ul>\n<li>phục dựng sai Middle Chinese;</li>\n<li>chọn nhầm phản thiết;</li>\n<li>áp dụng sai quy luật;</li>\n<li>nhưng vô tình vẫn tạo ra &quot;quốc&quot;.</li>\n</ul>\n<p>Đây được gọi là <strong>đúng do trùng hợp</strong>.</p>\n<p>Nếu không phát hiện, những lỗi như vậy sẽ lan sang hàng trăm chữ Hán khác.</p>\n<p>Đó là lý do Quizzman Fanqie Engine không chỉ kiểm tra đầu ra cuối cùng.</p>\n<p>Engine kiểm tra <strong>toàn bộ quá trình</strong>.</p>\n<h2>Kiểm thử theo từng tầng</h2>\n<p>Pipeline của Quizzman Fanqie Engine được chia thành nhiều bước.</p>\n<pre><code>Phản thiết\n\n↓\n\nMiddle Chinese\n\n↓\n\nProjection\n\n↓\n\nLexical\n\n↓\n\nHybrid</code></pre>\n<p>Mỗi tầng đều có bộ kiểm thử riêng.</p>\n<p>Ví dụ:</p>\n<ul>\n<li>Parser Test</li>\n<li>Middle Chinese Test</li>\n<li>Tone Test</li>\n<li>Rime Test</li>\n<li>Projection Test</li>\n<li>Candidate Ranking Test</li>\n<li>API Test</li>\n</ul>\n<p>Nhờ đó, khi xuất hiện lỗi, nhóm phát triển có thể biết chính xác vấn đề nằm ở đâu.</p>\n<h2>Golden Fixture</h2>\n<p>Một trong những thành phần quan trọng nhất của hệ thống QA là <strong>Golden Fixture</strong>.</p>\n<p>Đây là tập dữ liệu chuẩn được kiểm chứng thủ công.</p>\n<p>Khác với benchmark thông thường, Golden Fixture không cố gắng bao phủ thật nhiều chữ.</p>\n<p>Thay vào đó, nó lựa chọn những trường hợp đại diện cho từng quy luật.</p>\n<p>Ví dụ:</p>\n<ul>\n<li>Bình thanh;</li>\n<li>Thưởng thanh;</li>\n<li>Khứ thanh;</li>\n<li>Nhập thanh;</li>\n<li>thanh mẫu thanh;</li>\n<li>thanh mẫu trọc;</li>\n<li>nhập thanh kết thúc bằng <strong>-p</strong>, <strong>-t</strong>, <strong>-c</strong>, <strong>-ch</strong>;</li>\n<li>các ngoại lệ lịch sử.</li>\n</ul>\n<p>Nếu một thay đổi làm hỏng chỉ một quy luật nhỏ, Golden Fixture sẽ phát hiện ngay.</p>\n<h2>Regression Test</h2>\n<p>Một trong những nỗi lo lớn nhất của bất kỳ Rule Engine nào là:</p>\n<blockquote class=\"ai-answer\"><p>Sửa đúng một chỗ nhưng làm hỏng mười chỗ khác.</p></blockquote>\n<p>Ví dụ.</p>\n<p>Một thay đổi nhằm cải thiện:</p>\n<pre><code>江攝</code></pre>\n<p>có thể vô tình ảnh hưởng tới:</p>\n<pre><code>宕攝</code></pre>\n<p>Hoặc:</p>\n<pre><code>次濁平\n\n↓\n\nNgang</code></pre>\n<p>có thể làm hỏng hàng trăm chữ khác nếu triển khai sai.</p>\n<p>Do đó, sau mỗi thay đổi, toàn bộ bộ kiểm thử đều được chạy lại.</p>\n<p>Nếu xuất hiện lỗi hồi quy (Regression), thay đổi sẽ bị xem xét trước khi được đưa vào phiên bản chính thức.</p>\n<h2>Kiểm thử thanh điệu</h2>\n<p>Thanh điệu là một trong những thành phần dễ phát sinh lỗi nhất.</p>\n<p>Một bài kiểm thử không chỉ xác nhận:</p>\n<pre><code>sắc</code></pre>\n<p>hay</p>\n<pre><code>nặng</code></pre>\n<p>Mà còn xác nhận:</p>\n<ul>\n<li>slot lịch sử;</li>\n<li>âm hay dương;</li>\n<li>Bình, Thưởng, Khứ hay Nhập;</li>\n<li>điều kiện thanh mẫu.</li>\n</ul>\n<p>Ví dụ.</p>\n<p>Một chữ thuộc:</p>\n<pre><code>Thứ trọc\n\n+\n\nBình thanh</code></pre>\n<p>phải được kiểm tra xem có rơi vào đúng quy luật phát triển sang <strong>ngang</strong> hay không.</p>\n<p>Điều này giúp tránh việc những thay đổi nhỏ trong thuật toán thanh điệu làm phá vỡ các quy luật lịch sử đã được xác nhận.</p>\n<h2>Kiểm thử vận mẫu</h2>\n<p>Tương tự, hệ thống vận mẫu cũng được kiểm thử độc lập.</p>\n<p>Ví dụ:</p>\n<ul>\n<li>Thông nhiếp;</li>\n<li>Giang nhiếp;</li>\n<li>Cảnh nhiếp;</li>\n<li>Lưu nhiếp;</li>\n<li>Thâm nhiếp.</li>\n</ul>\n<p>Đối với Nhập thanh, engine còn phải kiểm tra:</p>\n<pre><code>-p\n\n-t\n\n-c\n\n-ch</code></pre>\n<p>Không chỉ đúng âm cuối.</p>\n<p>Mà còn đúng điều kiện phát sinh âm cuối đó.</p>\n<p>Ví dụ:</p>\n<pre><code>-k\n\n↓\n\n-c</code></pre>\n<p>khác với:</p>\n<pre><code>-k\n\n↓\n\n-ch</code></pre>\n<p>dù kết quả đều xuất phát từ cùng một phụ âm cuối của tiếng Hán Trung Cổ.</p>\n<h2>Candidate Audit</h2>\n<p>Một chữ Hán có thể tồn tại:</p>\n<ul>\n<li>nhiều phản thiết;</li>\n<li>nhiều nguồn;</li>\n<li>nhiều cách phục dựng.</li>\n</ul>\n<p>Do đó, chỉ kiểm thử kết quả cuối cùng là chưa đủ.</p>\n<p>Quizzman Fanqie Engine còn kiểm thử:</p>\n<ul>\n<li>thứ tự xếp hạng ứng viên;</li>\n<li>điểm số của từng ứng viên;</li>\n<li>lý do một ứng viên được chọn.</li>\n</ul>\n<p>Điều này giúp Candidate Ranking hoạt động ổn định ngay cả khi dữ liệu ngày càng lớn.</p>\n<h2>Batch Audit</h2>\n<p>Ngoài các bài kiểm thử đơn lẻ, engine còn được chạy trên những tập dữ liệu lớn.</p>\n<p>Ví dụ:</p>\n<ul>\n<li>Random Corpus;</li>\n<li>Benchmark;</li>\n<li>Corpus chuẩn;</li>\n<li>Audit hàng nghìn chữ Hán.</li>\n</ul>\n<p>Mục tiêu không chỉ là đo độ chính xác.</p>\n<p>Quan trọng hơn là phát hiện:</p>\n<ul>\n<li>quy luật mới bị phá vỡ;</li>\n<li>vùng dữ liệu có nhiều lỗi;</li>\n<li>những thay đổi bất thường sau mỗi bản cập nhật.</li>\n</ul>\n<p>Đây là cách nhóm phát triển theo dõi chất lượng của toàn bộ hệ thống theo thời gian.</p>\n<h2>Phân loại lỗi thay vì chỉ đếm lỗi</h2>\n<p>Một trong những điểm khác biệt của Quizzman Fanqie Engine là:</p>\n<p>Không phải mọi sai khác đều được xem là &quot;lỗi&quot;.</p>\n<p>Sau khi chạy audit, hệ thống sẽ phân loại.</p>\n<p>Ví dụ:</p>\n<ul>\n<li><strong>True Rule Error</strong> – thuật toán âm vị thực sự sai.</li>\n<li><strong>Colloquial Variant</strong> – khác do lớp khẩu ngữ.</li>\n<li><strong>Polyphonic Character</strong> – chữ đa âm.</li>\n<li><strong>Orthographic Difference</strong> – khác cách ghi chính tả.</li>\n<li><strong>Historical Variant</strong> – biến thể lịch sử.</li>\n<li><strong>Lexical Difference</strong> – khác lớp từ vựng.</li>\n</ul>\n<p>Nhờ cách phân loại này, nhóm phát triển biết chính xác nên sửa thuật toán hay chỉ cần cập nhật dữ liệu.</p>\n<h2>Kiểm thử API</h2>\n<p>Ngoài thuật toán, toàn bộ giao diện lập trình cũng được kiểm thử.</p>\n<p>Ví dụ:</p>\n<ul>\n<li>phân tích phản thiết;</li>\n<li>sinh Hán Việt;</li>\n<li>sinh Pinyin;</li>\n<li>truy vấn ngược;</li>\n<li>projection;</li>\n<li>health check.</li>\n</ul>\n<p>Mục tiêu là đảm bảo người dùng luôn nhận được kết quả ổn định bất kể họ sử dụng giao diện web, CLI hay API.</p>\n<h2>Vì sao QA lại quan trọng?</h2>\n<p>Một engine âm vận học có thể chứa hàng trăm quy luật.</p>\n<p>Mỗi quy luật lại tác động đến hàng nghìn chữ Hán.</p>\n<p>Nếu không có hệ thống kiểm thử, chỉ một thay đổi nhỏ cũng có thể làm giảm chất lượng của toàn bộ engine mà rất khó phát hiện.</p>\n<p>Do đó, QA không phải công việc diễn ra sau khi lập trình xong.</p>\n<p>Nó là một phần của kiến trúc.</p>\n<p>Mỗi khi một quy luật mới được bổ sung, hệ thống kiểm thử cũng được mở rộng tương ứng.</p>\n<h2>Kiểm thử để phục vụ nghiên cứu</h2>\n<p>Mục tiêu cuối cùng của Quizzman Fanqie Engine không chỉ là tạo ra một phần mềm hoạt động ổn định.</p>\n<p>Điều quan trọng hơn là xây dựng một nền tảng có thể <strong>kiểm chứng các giả thuyết âm vận học</strong>.</p>\n<p>Khi mỗi bước của pipeline đều có bài kiểm thử riêng, các nhà nghiên cứu có thể:</p>\n<ul>\n<li>thay đổi một quy luật;</li>\n<li>chạy lại toàn bộ corpus;</li>\n<li>quan sát ảnh hưởng của thay đổi đó;</li>\n<li>và đánh giá bằng dữ liệu thay vì cảm tính.</li>\n</ul>\n<p>Đó cũng là lý do hệ thống QA của Quizzman Fanqie Engine không chỉ phục vụ phát triển phần mềm, mà còn trở thành một công cụ hỗ trợ nghiên cứu ngôn ngữ học lịch sử.</p>\n<h2>Bài tiếp theo</h2>\n<p>Sau khi khám phá kiến trúc, thuật toán, benchmark và hệ thống kiểm thử, chúng ta sẽ khép lại series bằng một góc nhìn rộng hơn: <strong>tương lai của Quizzman Fanqie Engine</strong>. Từ một engine suy diễn âm Hán Việt, nền tảng này có thể mở rộng sang Hán Nhật, Hán Hàn, các phương ngữ tiếng Hán, xử lý văn bản cổ, OCR và các ứng dụng AI trong nghiên cứu lịch sử ngôn ngữ Đông Á.</p><p class=\"series-next\">→ Phần 14 (kết): <a href=\"https://wiki.quizzman.com/wiki/tuong-lai-quizzman-fanqie-engine-nen-tang-nghien-cuu-ngon-ngu-dong-a\">Tương lai của Quizzman Fanqie Engine: Từ một engine Hán Việt đến nền tảng nghiên cứu ngôn ngữ Đông Á</a></p>","tags":["Chữ Hán","Công nghệ","Phiên thiết","Thuật toán"],"author":"System Legacy","publishedAt":"2026-07-15T08:52:32.443Z","updatedAt":"2026-07-17T02:35:24.713Z","published_at":"2026-07-15T08:52:32.443Z","updated_at":"2026-07-17T02:35:24.713Z","view_count":7,"canonical":"https://wiki.quizzman.com/wiki/kiem-thu-engine-am-van-hoc-quy-trinh-qa-quizzman-fanqie","url":"https://wiki.quizzman.com/wiki/kiem-thu-engine-am-van-hoc-quy-trinh-qa-quizzman-fanqie","markdownUrl":"https://wiki.quizzman.com/api/articles/kiem-thu-engine-am-van-hoc-quy-trinh-qa-quizzman-fanqie.md","apiUrl":"https://wiki.quizzman.com/api/articles/kiem-thu-engine-am-van-hoc-quy-trinh-qa-quizzman-fanqie"}