ielts-grader-api / src /explore.py
diminch's picture
Deploy V15 Clean (Removed binary files history)
d939bae
# File: src/explore.py (SỬA LỖI - CHỈ CHẠY hai2131)
import json
import os
import sys
from datasets import load_dataset
from itertools import islice
import traceback
DATASET_LIST = {
# "trantac": "TraTacXiMuoi/Ielts_writing_task1_academic", # Tạm thời tắt do lỗi mạng
"hai2131": "hai2131/IELTS-essays-task-1"
}
NUM_SAMPLES_TO_VIEW = 2
SPLIT_NAME = "train"
def safe_value_to_string(value):
"""Chuyển đổi value thành string an toàn"""
if value is None:
return None
if isinstance(value, (str, int, float, bool)):
return value
if isinstance(value, dict):
return value
if isinstance(value, list):
return value
# Đối với các object khác (ảnh, audio, etc)
return f"<{type(value).__name__}>"
def explore_dataset(name: str, path: str, split: str, n: int):
"""
Tải N mẫu đầu tiên của một dataset từ Hugging Face và in cấu trúc của nó.
"""
print("="*80)
print(f"🕵️ Đang khám phá dataset: {name}")
print(f" Path: {path}")
print(f" Split: {split}")
print("="*80)
try:
# Tải N mẫu đầu tiên (không dùng streaming nữa,
# vì dataset hai2131 chỉ 8MB, tải luôn cho nhanh)
dataset = load_dataset(path, split=f"{split}[:{n}]")
print(f"\n✅ Tải thành công. Cấu trúc (Features):")
# In ra các cột và kiểu dữ liệu
print(dataset.features)
print(f"\n--- Đang xem {n} mẫu đầu tiên ---")
for i, item in enumerate(dataset):
print(f"\n--- Mẫu {i+1} ---")
printable_item = {}
for key, value in item.items():
printable_item[key] = safe_value_to_string(value)
print(json.dumps(printable_item, ensure_ascii=False, indent=2))
except Exception as e:
print(f"\n❌ LỖI khi tải hoặc đọc dataset '{name}':")
print(f" {e}")
traceback.print_exc()
def list_available_splits(path):
# Hàm này không cần thiết nữa nếu chúng ta tải trực tiếp
pass
def main():
print("🚀 BẮT ĐẦU KHÁM PHÁ IELTS DATASETS (CHỈ hai2131)")
print("="*80)
for name, path in DATASET_LIST.items():
try:
explore_dataset(name, path, SPLIT_NAME, NUM_SAMPLES_TO_VIEW)
except KeyboardInterrupt:
print("\n⚠️ Bị gián đoạn bởi người dùng")
break
except Exception as e:
print(f"\n❌ Lỗi không mong muốn: {e}")
traceback.print_exc()
print("\n" + "-"*80)
print("\n" + "="*80)
print("✅ KHÁM PHÁ HOÀN TẤT")
print("="*80)
if __name__ == "__main__":
main()