title: Hệ thống sinh câu hỏi
emoji: ⚡
colorFrom: green
colorTo: blue
sdk: gradio
sdk_version: 5.38.0
app_file: app.py
pinned: false
📘 Hệ thống sinh câu hỏi từ Context (Seq2Seq Transformer + spaCy NER)
Dự án này triển khai một hệ thống sinh câu hỏi tự động dựa trên một đoạn văn bản (context) và các thực thể được trích xuất từ đó. Nó sử dụng mô hình ProphetNet đã được fine-tuned để sinh câu hỏi và thư viện spaCy cho việc trích xuất thực thể có tên (Named Entity Recognition - NER). Giao diện người dùng được xây dựng bằng Gradio, cho phép tương tác dễ dàng.
🚀 Tính năng chính
- Sinh câu hỏi: Dựa trên một đoạn văn bản (context) và các câu trả lời (entities) được trích xuất.
- Trích xuất thực thể (NER): Sử dụng
en_core_web_mdcủa spaCy để xác định các thực thể tiềm năng làm câu trả lời. - Hỗ trợ nhiều mô hình: Cho phép lựa chọn giữa các phiên bản mô hình ProphetNet đã được huấn luyện.
- Giao diện web thân thiện: Được xây dựng bằng Gradio, dễ dàng sử dụng và kiểm tra.
- Khả năng tái tạo: Hướng dẫn chi tiết để bạn có thể cài đặt và chạy dự án này trên máy của mình.
🛠️ Yêu cầu hệ thống
- Python 3.8+ (nên sử dụng môi trường ảo như Conda hoặc
venv). - Ít nhất 8GB RAM (để tải các mô hình ngôn ngữ lớn).
- Đề xuất có GPU với VRAM đủ lớn (ví dụ: 8GB+) để có hiệu suất sinh câu hỏi nhanh hơn. Nếu không có GPU, mô hình sẽ chạy trên CPU nhưng có thể chậm hơn đáng kể.
📦 Hướng dẫn cài đặt và chạy dự án
Bạn có thể sử dụng conda (nếu đã cài Anaconda) hoặc venv để tạo môi trường ảo.
Phương pháp 1: Sử dụng Conda (Khuyến nghị)
Nếu bạn đã cài đặt Anaconda hoặc Miniconda:
Tạo và kích hoạt môi trường Conda mới:
conda create -n qg_env python=3.9 conda activate qg_env(Bạn có thể chọn phiên bản Python khác như 3.8 hoặc 3.10 nếu muốn, nhưng 3.9 là một lựa chọn tốt).
Cài đặt các thư viện từ
requirements.txt: Quan trọng: Bạn cần filerequirements.txtchứa danh sách các thư viện được sử dụng trong dự án này. Nếu bạn chưa có, hãy tạo nó:# Điều hướng đến thư mục gốc của dự án này cd path/to/your/project_folder # Tạo file requirements.txt pip freeze > requirements.txtSau khi có file
requirements.txttrong thư mục gốc của dự án, hãy chạy:pip install -r requirements.txtTải mô hình ngôn ngữ
en_core_web_mdcủa spaCy:python -m spacy download en_core_web_mdTải và đặt các mô hình ProphetNet: Dự án này sử dụng các mô hình ProphetNet đã được fine-tuned. Bạn cần tải chúng về và đặt vào các đường dẫn chính xác như đã khai báo trong code (hoặc chỉnh sửa code cho phù hợp với đường dẫn của bạn). Theo code mẫu:
prophetnet1:/Users/trantieuman/Downloads/prophetnet_1epoch/prophetnet_context_to_question_finetunedprophetnet2:/Users/trantieuman/Downloads/prophetnet_2epoch_final/final_model- (Nếu có)
prophetnet3:/path/to/prophetnet_model_3
Lưu ý: Để dễ dàng quản lý, bạn nên tạo một thư mục con trong dự án (ví dụ:
models/prophetnet_1epoch_finetuned) và đặt các mô hình vào đó, sau đó cập nhậtMODEL_PATHStrong code của bạn thành các đường dẫn tương đối. Ví dụ:MODEL_PATHS = { "prophetnet1": "./models/prophetnet_1epoch_finetuned", "prophetnet2": "./models/prophetnet_2epoch_final", # ... }Đảm bảo các thư mục mô hình này chứa các tệp như
config.json,pytorch_model.bin,tokenizer_config.json,vocab.json, v.v.
Phương pháp 2: Sử dụng venv
Tạo và kích hoạt môi trường ảo mới:
# Điều hướng đến thư mục gốc của dự án này cd path/to/your/project_folder # Tạo môi trường ảo python -m venv venv_qg # Kích hoạt môi trường ảo source venv_qg/bin/activate # Trên Linux/macOS # Hoặc: .\venv_qg\Scripts\activate # Trên WindowsCài đặt các thư viện từ
requirements.txt: Tương tự như bước 2 của phương pháp Conda, tạo filerequirements.txtnếu chưa có:pip freeze > requirements.txtSau đó cài đặt:
pip install -r requirements.txtTải mô hình ngôn ngữ
en_core_web_mdcủa spaCy:python -m spacy download en_core_web_mdTải và đặt các mô hình ProphetNet: Tương tự như bước 4 của phương pháp Conda, đảm bảo các file mô hình ProphetNet đã fine-tuned được đặt đúng đường dẫn.
🏃 Cách chạy dự án
Sau khi đã hoàn thành các bước cài đặt và kích hoạt môi trường ảo:
Đảm bảo bạn đang ở trong thư mục gốc của dự án.
Chạy script chính:
python demo.pyMở trình duyệt: Khi ứng dụng Gradio khởi chạy, bạn sẽ thấy một URL trong terminal (thường là
http://127.0.0.1:7860hoặc tương tự). Sao chép URL này và dán vào trình duyệt web của bạn để tương tác với giao diện hệ thống sinh câu hỏi.
⚠️ Lưu ý quan trọng
- Đường dẫn mô hình: Hãy kiểm tra và điều chỉnh các đường dẫn trong biến
MODEL_PATHStrong code của bạn (demo.pyhoặc tên file tương ứng) để chúng trỏ đến đúng vị trí các thư mục mô hình ProphetNet đã được tải về trên máy của bạn. - Hiệu suất GPU: Việc sử dụng GPU sẽ cải thiện đáng kể tốc độ sinh câu hỏi. Đảm bảo cài đặt CUDA và PyTorch với hỗ trợ CUDA nếu bạn muốn tận dụng GPU.
- Kiểm tra cache: Việc sử dụng quá nhiều model co thể gây tràn cache.
du -sh ~/.cache/huggingface/hub - Xoá cache: Việc sử dụng quá nhiều model co thể gây tràn cache hãy xoá nếu không sử dụng.
huggingface-cli delete-cache
Hy vọng hướng dẫn này sẽ giúp bạn và những người khác dễ dàng thiết lập và chạy dự án của mình!