我們今天的目標是構造一個 structured_output_dataset 讓我們後續可以 benchmark llm 的 structured_output 功能
還有一個副產物是 exam_dataset
關於考題是怎麼來的,以及什麼是 structured_output,可以看我們昨天的文章: Day16: Pydantic 與 Structured Output
pdfplumber 的 extract_table 來解
for page in pdf.pages ,就用 page.extract_tables() 來提取 tablelist,長度代表這頁抓到的 table 數量table 形如 [[row1], [row2], [row3],...]
structured_output_dataset 的 reference_context
"數字. " 這個 pattern 把題目文字 chunk 切出來。
r"\n\d+\.\s"
reference_context → 一段完整可提取的文字。reference_answer → 提取好的 dictionary。llama-index 的 LabelledRagDataset 來做
save_json 存出來的中文字不可讀,我還要繞過這個問題dict 但他規定型別要是 str
Dataset 現在就固定有以下欄位:
structured_output_dataset
reference_context: 是純文字片段,包含了考題與選項資訊reference_answer: 是 parse 後的考題 dictionary
exam_dataset
query: 單選題的題目reference_answer: 單選題答案Non-measurable set),要求他去查網路回傳定義、概念、應用