Phụ lục: chạy lại thí nghiệm#
code/ungdung/
├── experiments.py # Hình 2, 5, 7, 10, 13 và số liệu không cần mô hình học sâu lớn
├── experiments_output.txt
├── experiments_llm.py # Hình 4, 6, 12 và số liệu có dùng e5-small, Qwen2.5-0.5B
├── experiments_llm_output.txt
├── fig_diagrams.py # Hình 1, 3, 8, 9, 11, 14, 15 (sơ đồ khái niệm)
├── kho_van_ban.json # bản chụp 332 mục và 254 câu hỏi của các giáo trình
├── kho_trac_nghiem.json # bản chụp các câu trắc nghiệm 4 phương án
└── cau_hoi_dien_dat_lai.json # 50 câu hỏi diễn đạt lại kèm mục đúng
pip install numpy scipy scikit-learn matplotlib nltk transformers tokenizers torch
python code/ungdung/experiments.py # vài phút; tải ba tokenizer và hai kho văn bản NLTK
python code/ungdung/experiments_llm.py # 1 tới 2 giờ trên CPU; tải khoảng 1,5 GB mô hình
python code/ungdung/fig_diagrams.py
Trên Windows, đặt PYTHONIOENCODING=utf-8 khi ghi kết quả ra tệp. Nếu ổ đĩa mặc định không đủ chỗ cho các mô hình tải về, đặt biến môi trường HF_HOME trỏ tới thư mục khác. Môi trường đã dùng: Python 3.13, PyTorch 2.10 (CPU), Transformers 4.57, scikit-learn 1.7, NLTK 3.9.
Kho văn bản và các câu trắc nghiệm được chụp một lần từ nội dung các giáo trình tại thời điểm viết. Các lần chạy sau đọc lại bản chụp, nên số liệu không đổi khi nội dung giáo trình được sửa; chạy experiments.py --chup-lai để chụp lại từ nội dung hiện tại. Văn bản song ngữ là Tuyên ngôn Quốc tế Nhân quyền trong kho dữ liệu udhr của NLTK; kho văn bản tiếng Anh để huấn luyện tokenizer là bốn cuốn tiểu thuyết trong kho gutenberg của NLTK.
Mô hình ngôn ngữ trong thí nghiệm có 0,5 tỉ tham số, nhỏ hơn hàng chục tới hàng trăm lần so với mô hình dùng trong sản phẩm. Các thí nghiệm cho thấy cơ chế và hướng của hiệu ứng; mức độ cụ thể với mô hình lớn có thể khác nhiều. Vì vậy mỗi chương đều nhấn mạnh việc đo trên hệ thống thật của mình.