Nhóm và thành phố
Mỗi nhóm có 4-5 sinh viên và một thành phố (không trùng với nhóm khác), giao ngay từ đầu kỳ. Phân công chính thức sẽ được đăng trên Canvas Portal.
IAI · UET · VNU
Xây dựng quy trình phân tích thị trường Airbnb của một thành phố
Môn học: Lập trình xử lý dữ liệu (UET.DSE2049). Học kì 1, năm học 2026-2027. Trọng số: 60% điểm học phần.
Bối cảnh: nhóm sinh viên môn Lập trình xử lý dữ liệu đóng vai một đội phân tích dữ liệu Airbnb. Nhóm tự chọn bên đặt hàng phân tích dữ liệu, ghi rõ trong báo cáo (ví dụ: chính quyền thành phố, quỹ đầu tư, hiệp hội du lịch, ...). Sản phẩm cần nộp là mã nguồn chạy được và một báo cáo về quá trình xử lý dữ liệu và kết quả đạt được. Mọi thành viên phải giải thích được mọi thứ nhóm mình nộp (code, số liệu, quyết định), không chỉ phần mình phụ trách.
Mỗi nhóm có 4-5 sinh viên và một thành phố (không trùng với nhóm khác), giao ngay từ đầu kỳ. Phân công chính thức sẽ được đăng trên Canvas Portal.
2627-LTXLDL-Airbnb-<TenNhom>.
Mời cả nhóm cùng tài khoản giảng viên.git add → commit → push).
Nộp mốc bằng git tag rồi git push origin <tên-tag>.data/raw/ vào .gitignore.Hạn 23:59 Chủ nhật, theo giờ GitHub commit. Lịch vấn đáp theo lịch thi của Trường.
Không cần tag · 23:59 Chủ nhật 20/09/2026 (tuần 2)
Lập nhóm, tạo repo, nhận thành phố, điền liên kết vào bảng tính.
git tag final · 23:59 Chủ nhật 22/11/2026 (tuần 11)
Nộp bản cuối. Ghi mã commit vào báo cáo.
Theo lịch thi của Trường
Vấn đáp khoảng 20 phút. Hỏi riêng từng thành viên trong nhóm.
AI_USAGE.md.
Nguồn: Inside Airbnb, giấy phép CC BY 4.0. Báo cáo phải ghi nguồn và ngày của từng mốc chụp (snapshot); không commit dữ liệu thô lên Github. Cấu trúc từng tệp, kiểu dữ liệu và các điểm lạ của mỗi bản chụp: nhóm tự khảo sát và ghi vào phần QA.
data/listings.csv.gz — chỗ ởdata/calendar.csv.gz — lịch trống / đã đặt theo ngàydata/reviews.csv.gz — đánh giá văn bản (đầu vào phần LLM)visualisations/neighbourhoods.geojson — ranh giới khu vựchttps://data.insideairbnb.com/<country>/<region>/<city>/<YYYY-MM-DD>/data/<bảng>.csv.gz
https://data.insideairbnb.com/<country>/<region>/<city>/<YYYY-MM-DD>/visualisations/neighbourhoods.geojson
Mỗi nhóm một thành phố, phân tích sâu trên bốn mốc chụp.
Bốn mốc bản chụp dưới đây là bắt buộc sử dụng với thành phố tương ứng (các mốc cách nhau khoảng một quý). Thành phố thu thập hàng tháng được dùng thêm mốc khác, nhưng vẫn phải đủ bốn mốc này.
spain/catalonia/barcelona
spain/comunidad-de-madrid/madrid
portugal/lisbon/lisbon
portugal/norte/porto
france/ile-de-france/paris
united-kingdom/england/london
the-netherlands/north-holland/amsterdam
germany/be/berlin
italy/lazio/rome
greece/attica/athens
czech-republic/prague/prague
canada/qc/montreal
canada/on/toronto
canada/bc/vancouver
united-states/ny/new-york-city
united-states/la/new-orleans
united-states/il/chicago
argentina/ciudad-autónoma-de-buenos-aires/buenos-aires
chile/rm/santiago
brazil/rj/rio-de-janeiro
south-africa/wc/cape-town
australia/vic/melbourne
thailand/central-thailand/bangkok
singapore/sg/singapore
taiwan/northern-taiwan/taipei
japan/kantō/tokyo
Đề bài chỉ nêu sản phẩm phải nộp. Nhóm tự lựa chọn QA, KPI và cách trình bày, sau đó bảo vệ các lựa chọn đó khi vấn đáp.
Sau khi cài môi trường theo README.md, một lệnh chạy toàn bộ quy trình, ví dụ:
python run_pipeline.py --config configs/lisbon.yaml
data/raw/ (gitignore); chỉ commit data/processed/ khi dưới 50 MB.reports/qa_report.csv các tác động (số dòng; KPI trước và sau).neighbourhood_cleansed) và theo thời gian; ít nhất một KPI dùng kết quả LLM.data/processed/kpi_*.csv.figures/.reports/.Dùng LLM biến một mẫu bảng reviews thành dữ liệu có cấu trúc, rồi tự đo chất lượng kết quả.
positive / mixed / negative), khía cạnh khen/chê, ngôn ngữ.
Đầu ra có cấu trúc.AI_USAGE.md.AI_USAGE.mdĐây là tệp bắt buộc ở gốc GitHub repo, cần cập nhật suốt kì. Khai báo đầy đủ không bị trừ điểm. Giấu hoặc khai man là vi phạm chính sách AI.
# AI_USAGE.md
## Công cụ đã dùng (vào việc gì)
## Prompt then chốt (5-10): bước nào, vào tệp nào
## AI sai ở đâu (ví dụ thật)
## Nhóm kiểm chứng thế nào
.python-version: một dòng, phiên bản Python đã chạy thử (3.x.y).requirements.txt ghim == đủ để chạy quy trình (hoặc lockfile tương đương).README.md: cách cài, lệnh chạy, tên biến môi trường chứa khoá API, tệp kết quả để đối chiếu..
├── configs/
│ └── <city>.yaml # mỗi thành phố một tệp: dataRoot, danh sách mốc chụp, tham số QA/KPI/LLM
├── data/
│ ├── raw/ # dữ liệu thô: KHÔNG commit (gitignore), do script tải sinh ra
│ ├── processed/ # dữ liệu sạch, kpi_*.csv, kết quả LLM đã lưu (commit nếu <50 MB)
│ └── samples/ # mẫu nhỏ để test nhanh + tệp ≥100 nhãn tay (review_id, nhãn)
├── src/ # mã nguồn quy trình, tách mô-đun (gợi ý):
│ ├── download.py # tải + kiểm toàn vẹn
│ ├── qa.py # làm sạch + bộ quy tắc QA, xuất qa_report.csv
│ ├── kpi.py # tính KPI
│ ├── llm.py # trích xuất bằng LLM (có cache, --skip-llm)
│ ├── baseline.py # phương pháp đối chứng không LLM
│ ├── evaluate.py # chấm LLM vs đối chứng trên nhãn tay
│ └── viz.py # sinh hình vào figures/
├── figures/ # hình sinh tự động từ quy trình
├── reports/ # report.pdf, qa_report.csv, từ điển dữ liệu
├── notebooks/ # notebook khám phá (nếu có), không phải quy trình chính
├── run_pipeline.py # (hoặc Makefile) một lệnh gọi các mô-đun theo thứ tự
├── .python-version # một dòng: phiên bản Python đã kiểm thử (3.x.y)
├── .env.example # tên biến môi trường cho khoá API (KHÔNG chứa khoá thật)
├── .gitignore # loại data/raw/, .venv/, .env và mọi tệp chứa khoá
├── AI_USAGE.md # khai báo AI (bắt buộc)
├── README.md # tham chiếu .python-version; môi trường, cài đặt, cách chạy/chấm lại
└── requirements.txt # thư viện ghim phiên bản (hoặc bộ tệp lockfile tương đương)
configs/<city>.yamlGiá trị dưới đây là minh hoạ.
city: santiago
data_root: chile/rm/santiago # dựng URL: data.insideairbnb.com/<data_root>/<mốc>/...
currency: CLP
snapshots: [2025-09-27, 2025-12-29, 2026-03-30, 2026-06-29]
qa:
price_max_clp: 5000000 # ngưỡng ngoại lai giá
min_nights_cap: 365
dedupe_keys: [id, last_scraped]
kpi:
area_col: neighbourhood_cleansed
llm:
provider: gemini # model tuỳ chọn
sample_size: 3000 # nhóm giải thích cỡ mẫu
aspects: [vị trí, sạch sẽ, chủ nhà, giá trị, tiện nghi, độ ồn, an toàn]
cache: data/processed/llm_cache.jsonl
seed: 42
Bốn tiêu chí: thiết kế và tái lập quy trình · lưu trữ và thao tác dữ liệu · trực quan hoá và phát hiện · làm việc nhóm, đạo đức và minh bạch AI. Điểm nhóm (thang 10) được điều chỉnh từng người qua vấn đáp.
Trọng số và mô tả các mức điểm: công bố dần.
Hết đề bài. Chúc các nhóm hoàn thành tốt bài tập lớn.