我們今天的目標是構造一個 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
),要求他去查網路回傳定義、概念、應用