---
# System prepended metadata

title: '[Youtube] [LLM] freeCodeCamp.org - LLM Course – Build a Semantic Book Recommender'
tags: [LLM, Youtube]

---

# 課程介紹與目標

* 學習用大型語言模型與 Python 建立書籍推薦系統
* 將書籍描述轉換為數學表示進行內容比對
* 完成能幫助讀者找到下一本愛書的推薦引擎
* 課程由 JetBrains 支持，Dr. Jod Bell 開發

# 教學內容與應用範圍
![image](https://hackmd.io/_uploads/Sk6b7Qdhlg.png)

* 理論簡介與實作導向
* 文字清理與資料前處理
* 使用向量搜尋找到最相似的書籍
* 用 LLM 判斷書籍主題與情感傾向
* 建立互動式推薦系統 Dashboard
* 可延伸應用於電影與商品等其他文字型推薦任務

# 適合對象

* 具備 Python 基礎與機器學習入門知識
* 不需深度學習或 NLP 背景即可跟上

# 講師背景

* Jody Burell 具備近十年 NLP 資料科學經驗
* 任職於 JetBrains
* 使用 PyCharm 示範開發流程


# 01. Preparing our text data
![image](https://hackmd.io/_uploads/HkXu77unxg.png)

## 資料來源
![image](https://hackmd.io/_uploads/BkwqQXunge.png)

* Kaggle 7K books dataset
* 欄位包含 ISBN、書名、副標題、作者、分類、封面縮圖、描述、出版日期、評分

## Starting a new PyCharm project
* 使用 PyCharm 建立 Python 專案與虛擬環境
![image](https://hackmd.io/_uploads/Syqa7Xu3ee.png)
![image](https://hackmd.io/_uploads/HkIgVmdhxx.png)
![image](https://hackmd.io/_uploads/HylbN7_hge.png)
![image](https://hackmd.io/_uploads/H14fVQu3le.png)


## 開發工具與環境
* 套件包含 kagglehub、pandas、matplotlib、seaborn、python-dotenv、langchain、transformers、gradio、jupyter、ipywidgets

## 資料集初步檢視
![image](https://hackmd.io/_uploads/ryLFVX_nle.png)

* 約 6,810 本書 ISBN 唯一無重複
* 副標題欄位缺失率高
* 分類欄位過於分散需清理與標準化
* 描述欄位缺失率約 4% 為最重要依據
* 其他欄位包含出版年份、平均評分、頁數、評價數

---
## 缺失值檢查與熱圖分析
![image](https://hackmd.io/_uploads/HytxH7_hxx.png)

* 使用 Seaborn 繪製缺失值熱圖觀察缺失模式
* 副標題欄位大多缺失可直接棄用
* 分類、縮圖、描述缺失情況看似隨機
* 評分、頁數、評價數三欄呈現聯合缺失可能來自不同來源資料

## 描述欄位缺失檢查
![image](https://hackmd.io/_uploads/HyPmS7uhgx.png)

* 建立二元欄位標記描述是否缺失
* 將出版年份轉換為書籍年齡
* 構建子集欄位頁數年齡描述缺失平均評分
* 使用 Spearman 相關係數與熱圖檢查關聯性
* 缺失描述與其他變數相關性弱不具偏差性

## 缺失值處理
![image](https://hackmd.io/_uploads/BkxDrmu2gx.png)

* 缺失描述將被刪除因其為推薦系統核心依據
* 總計刪除 303 筆資料占比低於 5%
* 建立新資料框保留完整欄位紀錄

## 分類欄位問題
![image](https://hackmd.io/_uploads/BJY2H7uhll.png)
![image](https://hackmd.io/_uploads/BJcaSQOhll.png)

* 刪除缺失值後仍有超過 500 個分類
* 分類分布極不均衡存在長尾問題
* 常見分類如 Fiction 與 Juvenile Fiction 稀有分類僅 1-2 筆
* 後續需利用 LLM 進行文本分類與標準化

## 描述欄位檢查與清理
![image](https://hackmd.io/_uploads/Hyg4LQu3lx.png)

![image](https://hackmd.io/_uploads/BkFGUQunlg.png)

* 發現無效描述如單字 donation 或極短內容
* 計算描述欄位詞數作為品質衡量標準
* 詞數 1–4 無效
![image](https://hackmd.io/_uploads/ByG_Lmuhel.png)

* 詞數 5–14 資訊不足
* 詞數 15–24 開始有意義但仍偏少
* 詞數 25 以上具足夠資訊可用於推薦

## 最終資料集
![image](https://hackmd.io/_uploads/BkOkPQdhxg.png)

* 設定描述最少需 25 詞的過濾條件
* 篩選後剩餘約 5200 本書
* 雖刪除大量紀錄但保留描述品質足以支持推薦系統

## 最後的資料清理
![image](https://hackmd.io/_uploads/BJJXDQ_hlx.png)

* 副標題欄位獨立使用價值不高，與書名合併生成新欄位 title_and_subtitle

![image](https://hackmd.io/_uploads/HyAwPQOnle.png)
* 新增欄位 tag_description，將 ISBN 與描述結合確保唯一性
* 移除清理過程用到的暫時欄位：subtitle、missing_description、age_of_book、words_in_description

![image](https://hackmd.io/_uploads/S1ouDmu2ee.png)

* 將乾淨資料存為 books_cleaned.csv 供後續使用

# 02. Vector Search
![image](https://hackmd.io/_uploads/rJuqvm_ngl.png)


---
## 向量化與語意相似度
![image](https://hackmd.io/_uploads/r1hZdXu3ex.png)
![image](https://hackmd.io/_uploads/rkdGuQdnel.png)

* 將文字轉換為數學向量，便於計算文本之間的相似性
* 向量資料可存入資料庫並用於檢索最相似的文件或書籍
* 最基礎概念來自詞向量 (word embeddings)，相似詞距離接近，不同詞距離遠

## 詞嵌入與 Word2Vec
![image](https://hackmd.io/_uploads/HkNU_7dhlg.png)
![image](https://hackmd.io/_uploads/HJzvuXdhgx.png)

* Word2Vec 模型透過上下文學習詞的語意表示
* skip-gram 架構嘗試預測某詞前後可能出現的詞
* 相似語境的詞會形成相似向量，如 best、worst、funniest
* 侷限在於無法區分多重語境的同一詞，例如 bank
![messageImage_1759160489615](https://hackmd.io/_uploads/Bk92Om_ngx.jpg)
![image](https://hackmd.io/_uploads/r1G1F7d3gg.png)


## Transformer 與自注意力機制
![image](https://hackmd.io/_uploads/rymmt7dnll.png)
![image](https://hackmd.io/_uploads/rkOVKQunel.png)

* Transformer 模型能理解詞在句子中的語境
* 透過自注意力機制計算一個詞與其他詞的關聯程度
* 編碼器 (encoder) 理解來源語言，解碼器 (decoder) 生成目標語言
* LLM 由此架構發展而來，可用於翻譯、生成與理解

## 編碼器模型與文件嵌入
![image](https://hackmd.io/_uploads/ByAitmOhxe.png)

* 編碼器模型適合理解完整序列語意
* RoBERTa 透過遮蔽詞預測 (masked word prediction) 學習語言表示
* 輸入句子後可提取文件向量 (document embeddings) 表示整段文字語意
* 書籍描述轉換為文件嵌入後可用於語意搜尋

## 向量資料庫與檢索
![image](https://hackmd.io/_uploads/Skc15Xd3ge.png)


* 書籍描述嵌入存入向量資料庫並附上唯一 ID
* 查詢文本同樣轉換為向量後計算與資料庫向量的相似度
* 常用距離度量為 cosine similarity
* ID 可連回原始描述與書籍資訊以供推薦

## 效率與演算法

* 線性搜尋效率低，資料庫增大時檢索速度變慢
* 向量資料庫透過分群索引減少搜尋範圍
* 演算法在速度與準確度之間取平衡
* 向量資料庫已內建這些優化演算法，使用者可直接應用

---
## LangChain 與向量搜尋
![image](https://hackmd.io/_uploads/S18z9md2lg.png)

* LangChain 是一個強大的 Python 框架，支援 RAG、聊天機器人、代理等應用
* 支援多家 LLM 供應商，也能直接使用 Hugging Face 開源模型
* 本專案使用 OpenAI Embeddings + Chroma 向量資料庫

## API 金鑰與環境設定

* 使用 `.env` 檔與 `dotenv` 套件乾淨地載入 API Key
* OpenAI 平台提供 API Key 與帳單功能，小額充值即可長期使用便宜模型

## 建立向量資料庫流程
![image](https://hackmd.io/_uploads/BJExim_hgx.png)

* 從清理後的 `books_cleaned.csv` 載入資料
* 使用 tag_description（ISBN + 描述）確保檢索結果能對應原始書籍
![image](https://hackmd.io/_uploads/SJGus7_hex.png)

* 將描述另存為純文字檔，每行一筆記錄
* 使用 `TextLoader` 載入資料並透過 `CharacterTextSplitter` 切分
* 使用 `OpenAIEmbeddings` 將描述轉換為向量

![image](https://hackmd.io/_uploads/rkhismdnlx.png)
* 將結果存入 Chroma 向量資料庫

## 查詢與推薦
* 使用 `similarity_search` 對查詢語句建立嵌入並比對資料庫
* 初步結果僅包含描述，不利於使用者顯示
* 利用 tag_description 前置的 ISBN 快速對應回原始 DataFrame


## 清理查詢結果

* 從檢索結果抽取 ISBN（處理引號與型別轉換）
* 在 Pandas DataFrame 中過濾出符合 ISBN 的書籍資訊
* 可準確獲得標題與作者，而非僅有描述

## 封裝函式
![image](https://hackmd.io/_uploads/rkF0i7Ohel.png)
![image](https://hackmd.io/_uploads/rJZrhmO3gg.png)
* 建立 `retrieve_semantic_recommendations(query, k)` 函式
* 輸入查詢與推薦數量 k
* 內部流程：檢索 → 解析 ISBN → 過濾 DataFrame
* 輸出為 Pandas DataFrame，包含完整的推薦書籍清單

## 成果

* 測試查詢「a book to teach children about nature」得到合理推薦
* 包含經典童書如 *The Very Hungry Caterpillar*
* 系統能返回符合語意的多筆書籍推薦，第一版語意型推薦器完成

---
# 03. Text Classification
![image](https://hackmd.io/_uploads/S1Bv27_nle.png)
## 問題背景

* 原始資料集中的 categories 欄位過於雜亂且細碎
* 為了能用於篩選，需要壓縮成較少且有意義的分類
* 使用 LLM 的零樣本分類 (Zero-shot Classification) 來自動分類書籍

## 文本分類概念

* 文本分類是將文字分配到不同離散群組的任務
* 傳統模型即可完成，但 LLM 在語意理解上表現更佳
* 零樣本分類可直接使用預訓練模型，無需額外訓練

## 零樣本分類原理

* 輸入待分類文本與可能的分類標籤
* 模型根據語意理解直接判斷分類結果
* LLM 在大規模訓練數據中已學會書籍主題與分類的關聯

## 分類範例

* 輸入「a heartwarming journey of love and friendship」模型判定為 fiction
* 輸入「Edward Gibbon’s masterpiece」模型判定為 non-fiction
* 模型能根據語境區分不同主題與類型

## 資料集準備

* 原始 categories 欄位太多，過於細碎
* 篩選出至少有 50 本書的主要類別
* 建立簡化映射表：將前 12 大類別映射為 fiction 或 non-fiction
* 保留 juvenile fiction 與 juvenile non-fiction，並重新命名為兒童類別

## 已知標籤基礎
![image](https://hackmd.io/_uploads/rkST6mOheg.png)

* 經過映射後，資料集中已有 3743 本書有已知標籤
* 這些資料可作為檢驗 LLM 分類結果的基準

## Hugging Face 與 Transformers
![messageImage_1759161867282](https://hackmd.io/_uploads/Bkqz07_nle.jpg)

* Hugging Face 提供多種開源 LLM 模型
* 在任務分類頁選擇「Zero-shot Classification」模型
* 使用 Transformers 套件與 Hugging Face 模型互動
* 最常用的模型：BART-large-MNLI

## 在 PyCharm 的操作
![image](https://hackmd.io/_uploads/rk0H0Q_2ge.png)

* 可透過 PyCharm 內建 Hugging Face 工具選擇與下載模型
* 模型會快取在本地，避免重複下載
* 模型檔案龐大，需定期清理不用的模型

## 實際應用範例
![image](https://hackmd.io/_uploads/S1zOCQdnle.png)

* 使用已知的 fiction 書籍描述測試分類器
* 輸入描述與分類標籤 (fiction, non-fiction)
* 模型輸出分類機率，fiction 機率遠高於 non-fiction
* 透過 numpy argmax 取得最高機率對應的分類標籤

## 函式封裝
![image](https://hackmd.io/_uploads/Skc507Ohll.png)

* 建立 generate_predictions 函式
* 輸入：文本序列與分類標籤
* 輸出：模型判斷的最可能標籤

---
## 驗證模型準確率
![image](https://hackmd.io/_uploads/SykhAX_hll.png)
![image](https://hackmd.io/_uploads/BkSa0QO3ll.png)

* 使用 fiction 與 non-fiction 各 300 本書進行測試
* 預測結果與實際標籤進行比對
* 正確率約 78%，約每 5 本錯 1 本
* 對於零樣本分類而言屬於不錯的表現

## 補全缺失分類
![image](https://hackmd.io/_uploads/By6CC7Ohle.png)
![image](https://hackmd.io/_uploads/Hk-lJ4d2gl.png)

* 建立 ISBN 與預測結果清單
* 篩選 simple category 為缺失的書籍子集
* 使用 generate_predictions 產生分類結果
* 建立新 DataFrame，包含 ISBN 與預測分類
* 透過 merge 合併回原始資料框
* 使用 np.where 在缺失值處補上預測結果
* 最終 simple category 欄位無缺失，共有四個分類

## 嘗試更細分類
![image](https://hackmd.io/_uploads/Bk_MyEO3le.png)

* Fiction 書籍佔比過半 (約 54%)，有細分需求
* 嘗試過濾 Romance、Sci-Fi、Fantasy、Horror、Mystery 等類別
* 僅得到 16 筆觀測值，資料不足以驗證模型效能
* 缺乏標註數據會增加分類結果的風險
* 強調 LLM 與傳統機器學習模型一樣，需要檢驗與驗證

## 準備情感分類任務

* 下一步任務：將書籍描述分類為情感類別
* 情感類別包含 anger、disgust、fear、joy、sadness、surprise、neutral
* 可讓推薦系統依情感過濾，例如尋找愉快或懸疑的書籍

# 04. Sentiment Analysis
![image](https://hackmd.io/_uploads/Sk2NkVO3gg.png)

## 微調模型概念

* 以 RoBERTa 為例：保留嵌入層與編碼層，替換輸出層為情感分類器
* 使用小型標註情感資料集進行微調
* 模型保留語言理解能力，新增針對情感的專屬權重

## 使用 Hugging Face 微調模型
![image](https://hackmd.io/_uploads/Syj6kEu2ex.png)

* 在 Hugging Face 選擇 Text Classification → Emotion 模型
* 最受歡迎的模型為微調後的 RoBERTa
* 支援 6 種基本情感與 neutral 分類


![image](https://hackmd.io/_uploads/rkvWeNOneg.png)
![image](https://hackmd.io/_uploads/HJsmxEO2ee.png)
![image](https://hackmd.io/_uploads/rkk4xVOhxx.png)

* 官方模型卡提供使用方式

![image](https://hackmd.io/_uploads/B1orl4u3xl.png)
* 評估準確率約 66%，顯著高於隨機基準 14%
* 可接受作為書籍描述的情感分類工具

---
## 修改情緒分類器參數
![image](https://hackmd.io/_uploads/SJ8wlVu2ge.png)

* 將 `return_all_scores` 改為 `top_k=None`
* 加入 `device="mps"` 以啟用 GPU

## 整體描述 vs 句子級別分析
![image](https://hackmd.io/_uploads/rJQqeNOhgg.png)

* 整體描述分類結果單一，可能失真
* 拆分成句子後可捕捉多樣情緒
* 支援同時處理多句輸入

## 範例觀察
![image](https://hackmd.io/_uploads/r1gieVu3ee.png)

* 第一個句子被分類為「驚訝」
* 涉及祖父衝突的句子被分類為「恐懼」
* 其他句子出現「悲傷」「喜悅」等不同結果
* 證實句子級別分析更符合內容

## 多情緒處理策略
![image](https://hackmd.io/_uploads/BJR3eVdnee.png)

* 每本書的描述可能包含多種情緒
* 為每個情緒建立獨立欄位
* 將整本描述中該情緒的最高機率作為最終值

## 資料處理方法
![image](https://hackmd.io/_uploads/HJY1-4dhxg.png)

* 使用 `numpy` 整理數據
* 建立情緒標籤清單與 ISBN 清單
* 撰寫 `calculate_max_emotion_scores` 函數
* 對每個句子排序情緒分數並提取最大值

## 實作流程
![image](https://hackmd.io/_uploads/Syqb-Ednlg.png)
![image](https://hackmd.io/_uploads/S1em-E_2xx.png)

* 針對每本書拆分句子並進行情緒分類
* 將分類結果傳入處理函數取最大值
* 結果以字典儲存並轉為 DataFrame
* ISBN 作為索引鍵合併回書籍資料框

## 最終數據與觀察
![image](https://hackmd.io/_uploads/Hk5NbNunxl.png)

* DataFrame 內含每本書的情緒最大機率分布
* 情緒分布合理，特別是「悲傷」機率偏高
* 結果適合作為推薦系統的輔助變數

---
# 05. Gradio Dashboard
![image](https://hackmd.io/_uploads/HJII-V_3ge.png)

# 建立儀表板介面
![image](https://hackmd.io/_uploads/HJfEM4_nlg.png)

* 使用 Gradio 建構展示界面
* 導入最新含情緒欄位的 DataFrame
* Gradio 適合展示 ML 模型與 LLM 應用
* 目標是讓使用者能透過介面獲取書籍推薦

---
# 縮圖處理

* 書籍資料集中提供 Google Books 縮圖 URL
* 預設封面大小不一致，需在 URL 加參數獲取最大解析度
* 缺少封面的書籍會報錯，需以預設封面替代
* 使用 `np.where` 判斷缺失並替換為預設封面

# 建立推薦函式
![image](https://hackmd.io/_uploads/SJlKGNO3lx.png)

* 重用向量資料庫建立流程：`text loader` → `text splitter` → `OpenAI embeddings` → `Chroma`
* 建立 `retrieve_semantic_recommendations` 函式
* 輸入：查詢 query、分類 category（預設 None）、情感 tone（預設 None）、Top K
* 初步取回 50 筆，再過濾分類與情感，最後取 16 筆作為輸出
* 分類過濾：四大類 fiction、non-fiction、children’s fiction、children’s non-fiction
* 情感排序：依情感機率排序（joy、surprise、anger、fear、sadness），對應 happy、surprising、angry、suspenseful、sad

# 建立展示函式

* 建立 `recommend_books` 函式
* 輸入：query、category、tone
* 取得推薦書籍 DataFrame 並處理展示格式
* 描述超過 30 個單詞時截斷並加上省略號
* 多作者情況下以分號分隔，顯示為「A and B」或「A, B, and C」
* 使用 F-string 建立 caption（書名 + 作者 + 截斷描述）
* 輸出格式：縮圖 + caption

# Gradio 儀表板設計
![image](https://hackmd.io/_uploads/BJg2f4_hxx.png)

* 類別與情感選項清單，均包含 "All" 作為預設值
* 使用 `Blocks` 建立 Dashboard，選擇 `glass` 主題
* 頂部使用 markdown 顯示標題 Semantic Book Recommender
* 使用者互動區域：文字輸入框（含 placeholder）、分類下拉選單、情感下拉選單、查詢按鈕
* 推薦展示區：以 Gallery 方式顯示 16 本書縮圖與描述

# 儀表板測試

* 查詢「World War I」：回傳相關封面與描述，分類篩選後僅保留 fiction 書籍
* 依情感篩選，Sad 類別返回 Virginia Woolf 書籍
* 測試「a story about a troubled family set across many generations」：推薦結果與主題高度相關
* 排序為 suspenseful 時，對應的懸疑家族劇書籍排名靠前

# 教程總結

* 涵蓋 LLM 核心概念與應用：向量資料庫、零樣本分類、情感分析
* 展示 Hugging Face、OpenAI API 與 LangChain 的整合實作
* PyCharm 與 Hugging Face 工具整合提升開發效率
* 範例顯示即便僅用少量程式碼，也能建構強大 NLP 應用

---
# Terminology
* 向量嵌入（Vector Embedding）：將文字或其他資料轉換為數值向量的過程，用於語意計算。
* 語意相似度（Semantic Similarity）：衡量兩段文字在語意上的相似程度。
* 向量檢索（Vector Search）：透過向量空間中距離比較，找出最相似的項目。
* 零樣本分類（Zero-shot Classification）：不需特定任務訓練即可進行分類的技術。
* 大型語言模型（Large Language Model, LLM）：基於深度學習，具備自然語言理解與生成能力的模型。
* 語意檢索（Semantic Search）：基於語意理解而非關鍵字比對的搜尋方法。
* 詞嵌入（Word Embedding）：將單詞表示為向量的技術。
* 文件嵌入（Document Embedding）：將整段文本轉換為向量表示。
* 餘弦相似度（Cosine Similarity）：衡量兩個向量之間角度相似度的數學方法。
* 歐式距離（Euclidean Distance）：衡量向量間距離的常用方法。
* 主題建模（Topic Modeling）：自動抽取文本中潛在主題的技術。
* 情感分析（Sentiment Analysis）：分析文本中所表達的情緒傾向。
* 自然語言處理（Natural Language Processing, NLP）：處理與理解人類語言的人工智慧領域。
* 資料前處理（Data Preprocessing）：清理與整理資料以便模型訓練的步驟。
* 特徵提取（Feature Extraction）：從原始資料中擷取有用特徵以供模型使用。
* 停用詞（Stop Words）：在分析中通常會移除的常見無意義詞彙。
* 詞幹提取（Stemming）：將單詞轉換為詞幹以減少詞形變化。
* 詞形還原（Lemmatization）：將單詞還原為詞典中的基本形式。
* 詞袋模型（Bag of Words, BoW）：一種忽略語序的文字表示方法。
* TF-IDF（Term Frequency-Inverse Document Frequency）：衡量詞語在文件中重要性的方法。
* 自注意力機制（Self-Attention）：Transformer 模型中的核心運算，用於捕捉上下文關係。
* Transformer 架構（Transformer Architecture）：基於注意力機制的深度學習模型結構。
* 編碼器（Encoder）：將輸入序列轉換為向量表示的模型部分。
* 解碼器（Decoder）：將向量表示轉換回輸出序列的模型部分。
* 文本分類（Text Classification）：將文本歸類到預定義類別的任務。
* 聚類分析（Clustering）：無監督地將資料分組的技術。
* 主成分分析（Principal Component Analysis, PCA）：用於降維的統計方法。
* UMAP（Uniform Manifold Approximation and Projection）：高維資料可視化與降維技術。
* t-SNE（t-Distributed Stochastic Neighbor Embedding）：常用於高維向量可視化的演算法。
* 召回率（Recall）：衡量模型找到所有相關結果的比例。
* 精確率（Precision）：衡量模型結果中相關項目的比例。
* F1 分數（F1 Score）：精確率與召回率的調和平均。
* 向量資料庫（Vector Database）：專門儲存與檢索向量的資料庫。
* Chroma 向量庫（Chroma Vector Store）：一種開源向量資料庫，用於語意檢索。
* LangChain 框架（LangChain Framework）：用於構建基於 LLM 應用的開發框架。
* Hugging Face Transformers：流行的開源 NLP 模型庫。
* Gradio 介面（Gradio Interface）：快速建立互動式機器學習應用的工具。
* API 金鑰（API Key）：驗證與授權使用外部服務的憑證。
* 虛擬環境（Virtual Environment）：隔離 Python 專案依賴的環境。
* Pandas 資料框（Pandas DataFrame）：處理結構化資料的 Python 資料結構。
* Matplotlib 繪圖（Matplotlib Plotting）：Python 的基礎視覺化工具。
* Seaborn 視覺化（Seaborn Visualization）：基於 Matplotlib 的高階統計視覺化工具。
* Kaggle 數據集（Kaggle Dataset）：由 Kaggle 社群分享的開放資料。
* CSV 檔案（CSV File）：以逗號分隔數值的常見資料儲存格式。
* Jupyter Notebook：互動式 Python 程式開發環境。
* IPyWidgets 控件（IPyWidgets）：Jupyter 中的互動式小工具。
* 書籍推薦系統（Book Recommendation System）：根據內容或偏好推薦書籍的系統。
* 內容型過濾（Content-Based Filtering）：根據物品特徵進行推薦的方法。
* 協同過濾（Collaborative Filtering）：根據使用者行為或偏好進行推薦的方法。
* 混合推薦系統（Hybrid Recommender System）：結合多種方法的推薦系統。
* 儀表板介面（Dashboard Interface）：用於呈現模型結果的互動式介面。
* 遺漏值模式（Missingness Pattern）：指資料集中遺漏值是否呈現規律，可能暗示偏差來源。
* 缺失值熱圖（Missingness Heatmap）：利用圖像顯示不同變數中遺漏值分佈的可視化方法。
* Seaborn 視覺化（Seaborn Visualization）：基於 Matplotlib 的統計資料視覺化工具。
* Matplotlib Pyplot：Python 中用於建立圖表的核心繪圖模組。
* 缺失值指標（isna Indicator）：用於標示資料中是否為缺失值的布林矩陣。
* 特徵標籤（Feature Label）：圖表軸上的欄位名稱與變數標註。
* 系統性缺失（Systematic Missingness）：當缺失值與特定特徵或群體相關時出現的模式。
* 偏差風險（Bias Risk）：由遺漏資料造成的分析或模型偏斜。
* 敘述欄位（Description Field）：書籍資料集中用來描述書本內容的核心文字欄位。
* 二元變數（Binary Variable）：僅有兩種取值（如 0 與 1）的變數。
* NumPy Where 方法（NumPy Where Method）：條件運算用於生成布林或指標變數。
* 書籍年齡（Book Age）：以當前年份減出版年份計算的特徵。
* 子集選擇（Subset Selection）：從資料框中擷取部分欄位進行分析。
* 相關矩陣（Correlation Matrix）：顯示變數間相關性的矩陣。
* Spearman 等級相關（Spearman Correlation）：適合處理非連續或等級資料的相關係數。
* Pearson 相關（Pearson Correlation）：適合處理連續變數的線性相關係數。
* 熱圖標籤（Heatmap Labeling）：在熱圖上標示變數名稱與數值。
* 解釋變數（Explanatory Variable）：可能影響缺失情況的特徵欄位。
* 代表性檢查（Representativeness Check）：確保保留下來的樣本能反映整體分布。
* 條件邏輯（Conditional Logic）：在 pandas 中透過布林條件篩選資料。
* 缺失值刪除（Listwise Deletion）：直接移除有缺失值的觀測。
* 書籍類別（Book Categories）：資料集中描述書籍分類的欄位。
* 長尾分布（Long Tail Distribution）：少數類別極度常見，多數類別極度稀少的分布。
* Value Counts 方法：pandas 中計算變數值頻率的函式。
* 類別正規化（Category Normalization）：將雜亂或過細的分類統整為可用類別。
* 條件過濾（Conditional Filtering）：依據自定義條件保留資料框內部資料。
* 樣本分布檢查（Sample Distribution Check）：檢視變數的數值頻率以確認分布特徵。
* 欄位描述（Column Statistics）：自動生成變數的統計摘要。
* 直方圖（Histogram）：顯示數值變數分布的圖形。
* 單詞長度分布（Word Count Distribution）：以直方圖檢視文字長度的變化。
* 描述欄位長度（Description Length）：衡量書籍描述文字的字數或詞數。
* 無用描述（Useless Descriptions）：過短或無資訊價值的描述內容。
* 分箱策略（Binning Strategy）：根據範圍劃分數值變數的群組方法。
* 任意截點（Arbitrary Cutoff）：根據直觀或檢視結果設定的分界點。
* 資料篩選（Data Filtering）：依據條件移除或保留特定資料列。
* 書籍數量統計（Book Count Statistics）：計算清理後剩餘的書籍數量。
* 樣本損失率（Sample Loss Rate）：因清理資料而刪除的觀測比例。
* 代表性描述（Representative Descriptions）：長度適中且包含足夠內容的描述。
* 偏差檢測（Bias Detection）：檢查遺漏或刪除資料是否導致偏差。
* 書籍屬性（Book Attributes）：書籍的年份、頁數、評分等欄位。
* 平均評分（Average Rating）：書籍在資料集中獲得的平均分數。
* 頁數（Number of Pages）：書籍的長度特徵。
* 評分數量（Rating Count）：書籍被評分的次數。
* 類別長尾問題（Category Long-tail Problem）：分類數據集中部分類別極少見的情況。
* 正規化類別（Normalized Categories）：經過清理或歸一化後的標準化類別。
* 資料清理（Data Cleaning）：處理遺漏值、錯誤值或無用資訊的過程。
* 可用樣本（Usable Samples）：清理後保留下來的資料集。
* 書籍推薦核心特徵（Core Features for Recommendation）：用於推薦的描述、類別與評分等欄位。
* 偏態檢查（Skewness Check）：檢視資料分布是否偏離常態。
* 核心描述欄位（Core Description Field）：推薦系統中最重要的書籍描述文字欄位。
* 副標題欄位（Subtitle Field）：書籍資料中常見的補充標題文字欄位。
* 合併標題（Title-Subtitle Concatenation）：將標題與副標題組合成單一字串的操作。
* NumPy Where 條件（NumPy Where Clause）：根據條件在欄位中建立新值的方法。
* 類型轉換（Type Casting）：將數值或缺失值轉換為字串或其他型別的過程。
* 書籍唯一識別碼（Book Unique Identifier）：如 ISBN-13，用於唯一標識每本書。
* 標記描述欄位（Tagged Description Field）：將書籍描述與唯一識別碼組合成的文字欄位。
* 欄位丟棄（Column Dropping）：移除不再需要的中間處理欄位。
* 清理後資料集（Cleaned Dataset）：完成清洗與篩選後的最終資料框。
* CSV 輸出（CSV Export）：將處理後的資料框儲存為逗號分隔檔案格式。
* 向量化處理（Vectorization）：將原始文字轉換為數值向量的過程。
* 向量空間（Vector Space）：向量表示所在的高維數學空間。
* 語意距離（Semantic Distance）：衡量兩段文字語意差異的數學值。
* 詞嵌入（Word Embedding）：將單詞轉換成向量表示以捕捉語意。
* 文件嵌入（Document Embedding）：將整段文本轉換為向量表示。
* Skip-gram 架構（Skip-gram Architecture）：Word2Vec 中用於預測上下文的訓練方法。
* Word2Vec 模型（Word2Vec Model）：早期流行的詞嵌入訓練模型。
* 上下文關聯（Contextual Relationship）：詞語意義依照周邊詞語變化的特性。
* 多義詞問題（Polysemy Problem）：同一單詞在不同語境下具有不同意義的情況。
* 自注意力（Self-Attention）：計算詞語間關聯程度的核心機制。
* 位置編碼（Positional Encoding）：為詞嵌入加入位置信息的技術。
* 注意力向量（Attention Vector）：表示模型關注其他詞語程度的向量。
* 編碼器區塊（Encoder Block）：Transformer 中由注意力與正規化組成的模組。
* Transformer 模型（Transformer Model）：基於注意力機制的神經網路架構。
* 編碼器（Encoder）：負責理解輸入語句的結構與語意。
* 解碼器（Decoder）：負責生成或翻譯目標語句的模組。
* 預訓練模型（Pre-trained Model）：已在大規模語料上訓練完成，可用於下游任務的模型。
* 下游任務（Downstream Task）：利用預訓練模型處理的實際應用問題。
* Roberta 模型（Roberta Model）：基於 Transformer 的語言理解模型，採用遮罩語言建模。
* 遮罩語言建模（Masked Language Modeling）：隨機隱藏詞語並訓練模型預測的任務。
* CLS Token：特殊符號，用於標記序列的開始並生成整體表示。
* SEP Token：特殊符號，用於分隔或結束輸入序列。
* 向量資料庫（Vector Database）：用於儲存與檢索向量的資料庫系統。
* 唯一 ID（Unique ID）：向量與原始資料的對應索引。
* 餘弦相似度（Cosine Similarity）：衡量兩向量相似度的常用方法。
* 線性檢索（Linear Search）：逐一比較查詢向量與資料庫中所有向量的方法。
* 近似最近鄰搜尋（Approximate Nearest Neighbor Search, ANN）：在大規模向量資料庫中快速查找相似向量的演算法。
* 向量索引（Vector Indexing）：建立加速檢索的資料結構。
* 搜尋速度與準確率權衡（Speed-Accuracy Tradeoff）：向量搜尋演算法中常見的效能折衷。
* 編碼器模型（Encoder Model）：僅用於理解與表示輸入文本的模型架構。
* 解碼器模型（Decoder Model）：專注於生成文本的模型架構。
* 編碼解碼器模型（Encoder-Decoder Model）：同時用於理解與生成的模型架構。
* 文件檢索（Document Retrieval）：從資料庫中找出與查詢最相關的文件。
* 向量查詢（Vector Query）：將查詢語句轉換為向量並與資料庫比對。
* 相似度分數（Similarity Score）：用於排序搜尋結果的數值。
* 書籍推薦（Book Recommendation）：根據描述向量相似度選擇推薦的書籍。
* 書籍元資料（Book Metadata）：如書名、作者、出版年份，用於補充檢索結果。
* 語意推薦（Semantic Recommendation）：利用語意相似度進行推薦的方法。
* 向量化查詢流程（Vectorized Query Pipeline）：從文字輸入到相似結果的完整處理過程。
* 大型語言模型（Large Language Model, LLM）：以 Transformer 為基礎，具備強大語言理解與生成能力的模型。
* LangChain 框架（LangChain Framework）：Python 中用於構建 LLM 應用的工具，支援向量搜尋、RAG、聊天機器人與代理。
* 向量搜尋（Vector Search）：利用文字向量表示進行相似度檢索的方法。
* RAG 管線（Retrieval-Augmented Generation Pipeline）：結合檢索與生成的自然語言處理流程。
* 專有模型供應商（Proprietary Model Provider）：如 OpenAI，提供付費的語言模型服務。
* 開源模型（Open-source Models）：如 Hugging Face 上的模型，可自由使用與實驗。
* 文本載入器（Text Loader）：LangChain 方法之一，用於載入原始文字。
* 字元文字分割器（Character Text Splitter）：將文件分割為可處理的片段。
* 文件嵌入（Document Embedding）：將文件轉換成數值向量以供語意比較。
* OpenAI Embeddings：由 OpenAI API 提供的文件向量化模型。
* 向量資料庫（Vector Database）：用於儲存與查詢文件向量的資料庫。
* Chroma 向量庫（Chroma Vector Store）：開源向量資料庫，與 LangChain 常搭配使用。
* API 金鑰（API Key）：與服務供應商溝通並計費的憑證。
* dotenv 套件（python-dotenv）：用於載入環境變數與 API 金鑰的 Python 套件。
* Pandas 資料框（Pandas DataFrame）：儲存書籍清理後資料的核心結構。
* 標記描述（Tagged Description）：書籍描述前附加 ISBN 的欄位。
* 書籍唯一識別碼（ISBN Identifier）：用來精確篩選書籍的欄位。
* 文字檔導出（Text Export）：將描述存為純文字檔，以便 LangChain 載入。
* 分隔符號（Separator）：設定文件分割的依據，如換行符號。
* 區塊重疊（Chunk Overlap）：分割文件時，片段間的重疊長度。
* 區塊大小（Chunk Size）：分割時的最大字元長度限制。
* 向量生成（Vector Generation）：將文件片段轉換成嵌入向量的過程。
* 相似度搜尋（Similarity Search）：根據向量相似度找出最相關的項目。
* 查詢變數（Query Variable）：儲存使用者檢索語句的變數。
* K 值（Top K）：控制相似度搜尋返回的推薦數量。
* 描述檢索結果（Description Result）：初始檢索時返回的僅包含描述的結果。
* 資料框過濾（DataFrame Filtering）：根據 ISBN 篩選推薦書籍的步驟。
* 字串拆分（String Split）：分割描述字串以提取 ISBN 的操作。
* 型別轉換（Type Conversion）：將提取的 ISBN 轉換為整數型別以比對。
* 條件過濾（Conditional Filtering）：使用布林條件篩選 Pandas 資料。
* 函數封裝（Function Encapsulation）：將檢索邏輯打包為可重複使用的函數。
* ISBN 清理（ISBN Cleaning）：處理描述中的額外符號以正確解析編號。
* 批量 ISBN 列表（Batch ISBN List）：收集所有推薦結果中的 ISBN。
* 書籍資料對應（Book Data Mapping）：用 ISBN 對應描述與完整書籍資訊。
* pandas 相容性（pandas Compatibility）：確保檢索結果與 DataFrame 型別一致。
* 環境變數載入（Environment Variable Loading）：將 API 金鑰寫入環境供程式存取。
* OpenAI 平台（OpenAI Platform）：提供 API 金鑰管理與計費的網頁。
* 使用限制（Usage Limit）：設定 API 使用量上限以避免超額消耗。
* 嵌入模型（Embedding Model）：專門將文本轉換成向量的語言模型。
* 成本效益模型（Cost-effective Model）：像 Ada Embedding，低成本高效能。
* 記憶體效能（Memory Performance）：處理大規模文件分割與嵌入的效率。
* 執行時間（Execution Time）：嵌入與索引過程耗時的衡量。
* 查詢流程（Query Workflow）：從輸入查詢到檢索結果的處理鏈。
* 書籍推薦（Book Recommendation）：最終輸出的以標題與作者為主的結果。
* 語意檢索（Semantic Retrieval）：利用語意相似度進行查詢的方法。
* 語意推薦（Semantic Recommendation）：基於語意的書籍推薦流程。
* 文件管線（Document Pipeline）：從載入、分割、嵌入到儲存的完整流程。
* 向量查詢函數（Vector Query Function）：將檢索邏輯包裝成函式以簡化使用。
* 清理匹配（Clean Matching）：避免全文匹配帶來的效能低落與不準確。
* 查詢結果映射（Query Result Mapping）：將檢索描述結果映射回完整書籍資料。
* 類別欄位（Category Field）：資料集中用來標示書籍分類的欄位
* 文本分類（Text Classification）：將文字內容自動歸屬到不同離散類別的技術
* 篩選條件（Filter Criteria）：設定用以過濾資料的限制條件
* 分面搜尋（Faceted Search）：利用多維屬性過濾檢索結果的方法
* 少樣本學習（Few-shot Learning）：模型僅用少量樣本即可適應新任務的能力
* 零樣本分類（Zero-shot Classification）：無需額外訓練即可將文字分類到指定類別的技術
* 提示設計（Prompt Design）：設計指令以引導模型完成任務的方法
* 先驗類別（Predefined Labels）：在分類前設定的目標類別清單
* 預訓練模型（Pre-trained Model）：已於大規模語料上訓練完成，可直接應用的模型
* 編碼器解碼器模型（Encoder-Decoder Model）：結合編碼器與解碼器的 Transformer 架構
* 語意相似度（Semantic Similarity）：衡量兩段文字語意接近程度的數值
* 標註資料（Labeled Data）：已具備正確類別標籤的訓練或測試資料
* 非監督分類（Unsupervised Classification）：無標註資料下自動分組文字的技術
* Hugging Face 模型庫（Hugging Face Model Hub）：提供開源模型的託管平台
* 模型卡（Model Card）：模型相關的文件與使用說明
* Transformers 套件（Transformers Library）：Hugging Face 提供的 Python 函式庫，用於處理 LLM
* 任務型篩選（Task Filtering）：依任務類型篩選 Hugging Face 模型的功能
* BART 模型（BART Model）：結合自回歸與自編碼的 Transformer 模型
* MNLI 資料集（Multi-Genre Natural Language Inference）：常用於訓練語言推理與分類的語料
* 文字序列（Text Sequence）：需要進行分類的原始字串
* 分類標籤（Classification Labels）：模型可輸出的目標類別集合
* 機率分數（Probability Score）：模型對每個類別的信心水準
* NumPy 最大值索引（NumPy Argmax）：回傳數值陣列中最大值的索引方法
* 後處理（Postprocessing）：將模型原始輸出轉換為最終結果的步驟
* 分類準確率（Classification Accuracy）：分類任務正確率的指標
* 二元分類（Binary Classification）：僅有兩個類別的分類問題
* 多類別分類（Multi-class Classification）：有三個或以上類別的分類問題
* 資料映射（Data Mapping）：將原始類別對應到新的簡化類別
* 類別不平衡（Class Imbalance）：某些類別樣本遠少於其他類別的問題
* 階層式分類（Hierarchical Classification）：根據層次結構進行多層分類的方法
* 上下文理解（Contextual Understanding）：模型對文字含義與情境的掌握能力
* 語言推理（Natural Language Inference）：判斷句子之間語意關係的任務
* GPU 加速（GPU Acceleration）：利用圖形處理器加快模型推理速度
* MPS 加速（Metal Performance Shaders）：蘋果裝置上用於模型加速的後端
* 模型快取（Model Caching）：下載後本地保存模型以避免重複下載
* 模型管理（Model Management）：刪除或保留快取模型的操作
* 預測標籤（Predicted Label）：模型輸出的最終分類結果
* 機率分布（Probability Distribution）：各類別對應的機率集合
* 信心分數（Confidence Score）：模型對預測結果的自信程度
* 驗證資料集（Validation Dataset）：用於調整模型或驗證效能的資料集
* 測試資料集（Test Dataset）：最終評估模型效能的資料集
* 訓練語料（Training Corpus）：模型訓練時使用的文本集合
* 向量表示（Vector Representation）：將文本轉換為數值向量的形式
* 語言模型（Language Model）：預測或理解自然語言的機器學習模型
* 自然語言處理（Natural Language Processing, NLP）：處理與分析人類語言的技術領域
* 評估指標（Evaluation Metrics）：衡量模型表現的各種數值標準
* 標籤對應表（Label Mapping Table）：原始標籤與簡化後標籤之間的對照表
* 書籍分類任務（Book Classification Task）：針對書籍描述進行類別歸屬的應用
* 分類器函數（Classifier Function）：將分類流程封裝成函式以便重複使用
* 輸入序列（Input Sequence）：餵入模型進行推理的文本資料
* 輸出解析（Output Parsing）：對模型輸出的結果進行格式化與解讀
* 驗證準確率（Validation Accuracy）：模型在驗證資料集上的分類正確率
* 混淆矩陣（Confusion Matrix）：顯示實際類別與預測類別差異的矩陣表
* 預測列表（Predicted List）：存放模型預測結果的陣列或清單
* 真實列表（Actual List）：存放已知標籤的陣列或清單
* 進度條（Progress Bar）：用於顯示迴圈執行進度的工具，如 tqdm
* 二元標籤化（Binary Labeling）：將正確與錯誤轉換為 1 與 0 的過程
* 正確率計算（Accuracy Calculation）：計算正確預測比例的過程
* 錯誤分類率（Misclassification Rate）：預測錯誤的比例
* 預測資料框（Prediction DataFrame）：保存實際與預測類別的 Pandas 結構
* 缺失類別（Missing Categories）：資料集中尚未標註或缺少的分類欄位
* 子集資料框（Subset DataFrame）：依條件篩選出的部分資料
* 索引重設（Reset Index）：重建資料框索引以便迴圈操作
* 迴圈預測（Loop Prediction）：逐一將資料傳入模型產生分類結果的過程
* 合併資料框（DataFrame Merge）：使用鍵值將兩個資料框合併為一個
* 左連接（Left Join）：保留左側資料框所有資料的合併方法
* 替換缺失值（Replace Missing Values）：以預測類別填補原始缺失欄位的步驟
* NumPy 條件語句（NumPy Where Clause）：根據條件選擇性地替換欄位值
* 資料清理（Data Cleaning）：移除不再需要的中間欄位或暫存欄位
* 完整類別欄位（Completed Category Column）：合併已知與預測標籤後的最終欄位
* 分佈檢查（Distribution Check）：檢查欄位值的統計分佈是否合理
* 擴展分類（Extended Classification）：將分類應用於更多子類別的嘗試
* 標註不足（Insufficient Labeling）：訓練或驗證樣本數量不足的情況
* 高風險預測（High-risk Prediction）：缺乏足夠數據驗證時的分類結果
* 資料稀疏性（Data Sparsity）：樣本分佈過於稀疏，難以驗證分類成效
* 模型假設（Model Assumption）：在數據不足時，假設模型能維持合理表現
* 模型限制（Model Limitation）：模型在特定條件下的能力邊界
* 範例數不足（Low Sample Size）：樣本量過小導致統計結論不可靠
* 情緒分析（Sentiment Analysis）：判斷文本的情緒或情感傾向
* 情緒分類（Emotion Classification）：將文字分類到特定情緒類別的任務
* 七情緒分類（Seven-class Emotion Categorization）：憤怒、厭惡、恐懼、喜悅、悲傷、驚訝、中立
* 支配情緒（Dominant Emotion）：文字描述中最強烈的情緒傾向
* 微調（Fine-tuning）：在小型資料集上調整模型最後幾層以適應特定任務
* 掩碼語言建模（Masked Language Modeling）：原始 Roberta 訓練任務，預測缺失詞彙
* 任務特定層（Task-specific Layers）：為新任務替換的輸出層
* 小型標註集（Small Labeled Dataset）：用於微調模型的少量帶標籤資料
* 權重調整（Weight Adjustment）：透過微調改變模型參數以學習新任務
* 情緒分類模型（Emotion Classification Model）：經過微調，專門判斷情緒的模型
* Hugging Face Hub：提供微調後模型下載與使用的開源平台
* 預測基準線（Prediction Baseline）：隨機猜測或簡單策略的預測基準值
* 隨機機率基準（Random Chance Baseline）：多分類情境下的隨機正確率，如 14%
* 任務適配（Task Adaptation）：將通用模型調整為特定應用的過程
* 模型卡評估指標（Model Card Evaluation Metrics）：模型開發者提供的效能數據
* 資料合併鍵（Merge Key）：用於合併資料框的唯一識別欄位，如 ISBN
* 儲存最終資料集（Save Final Dataset）：輸出處理後資料以便後續分析或建模
* 情緒特徵（Emotion Features）：將情緒分類結果作為新變數加入推薦系統
* 使用者過濾（User Filtering）：允許使用者依情緒特徵挑選推薦結果
* 情緒維度（Emotional Dimension）：推薦系統中新增的情緒屬性軸
* 書籍情感傾向（Book Emotional Tone）：書籍描述所呈現的主要情緒傾向
* 產品功能拓展（Feature Expansion）：利用情緒分析擴展推薦系統的功能
* 文本導向特徵（Text-derived Features）：從書籍描述文字中提取的分析特徵
* 向量資料庫（Vector Database）：一種用於儲存與檢索高維向量的資料庫，常用於相似度搜尋。
* 情感分類（Emotion Classification）：利用機器學習模型判斷文本的情緒類別。
* 預訓練模型（Pretrained Model）：在大規模資料上先訓練的模型，可遷移至特定任務。
* 推論（Inference）：使用訓練完成的模型對新資料進行預測的過程。
* GPU 加速（GPU Acceleration）：利用圖形處理器提升模型計算效率。
* MPS 裝置（MPS Device）：蘋果晶片上的 GPU 運算後端，支援 PyTorch 加速。
* 參數退化（Deprecation）：指 API 或函數將逐步停用，不建議再使用。
* Top-k 選擇（Top-k Selection）：選出機率最高的 k 個分類結果。
* 機率分佈（Probability Distribution）：模型對各分類輸出的機率集合。
* 文本分割（Text Splitting）：將長文本切分為句子或段落以進行分析。
* 批次處理（Batch Processing）：一次處理多筆資料以提升效率。
* 情感標籤（Emotion Labels）：預設的情緒分類類別，如喜悅、悲傷、恐懼等。
* 最大機率（Maximum Probability）：取每個情緒類別在描述中的最高預測值。
* 字典推導式（Dictionary Comprehension）：Python 語法，用於快速建立字典結構。
* 資料框（DataFrame）：Pandas 提供的二維表格資料結構。
* 欄位合併（Column Merge）：將不同資料框透過鍵值合併。
* 進度條（Progress Bar）：顯示長時間運算的即時進度，如 tqdm。
* 機率分布統計（Probability Statistics）：分析不同情緒類別的機率分布特性。
* 訓練語料（Training Corpus）：用於訓練模型的大量文本資料。
* 向量嵌入（Vector Embedding）：將文字轉換為數值向量以供模型處理。
* 相似度搜尋（Similarity Search）：依據向量距離找出最相近的資料。
* 分類模型（Classification Model）：輸出離散類別的機器學習模型。
* 文本描述（Text Description）：用於模型輸入的文字內容。
* 機率閾值（Probability Threshold）：設定分類結果的機率下限。
* 標籤順序化（Label Ordering）：統一不同句子中情緒標籤的排列。
* 字典歸併（Dictionary Aggregation）：整合多個字典以計算最大值或平均值。
* 監督學習（Supervised Learning）：透過帶標籤資料訓練模型的方法。
* 語意相似度（Semantic Similarity）：文本之間語意上的接近程度。
* 非監督學習（Unsupervised Learning）：無標籤資料的模型訓練方式。
* API 呼叫（API Call）：透過程式介面使用外部服務的過程。
* 遷移學習（Transfer Learning）：利用已有模型知識快速適應新任務。
* 過擬合（Overfitting）：模型在訓練資料表現好，但泛化能力差。
* 權重更新（Weight Update）：模型訓練時調整參數的過程。
* 機率分級（Probability Ranking）：依機率大小排列預測結果。
* 模型卡（Model Card）：描述模型用途、限制與使用方法的文件。
* 輸出後處理（Post-processing）：對模型輸出進行再處理以適配需求。
* 句子嵌入（Sentence Embedding）：將句子轉換為向量表徵。
* 迴圈處理（Loop Processing）：透過程式迴圈逐一處理資料。
* 書籍推薦系統（Book Recommender System）：根據使用者需求推薦書籍的系統。
* 分類準確率（Classification Accuracy）：衡量模型分類正確比例的指標。
* 機率分散（Probability Dispersion）：描述機率分布的離散程度。
* 語意檢索（Semantic Retrieval）：基於語意理解進行資訊檢索。
* Pandas 合併（Pandas Merge）：Pandas 提供的資料集合併函數。
* 標籤空間（Label Space）：模型可預測的所有分類集合。
* 開源套件（Open-source Package）：免費且公開原始碼的軟體模組。
* Gradio 介面（Gradio Interface）：一個快速建立機器學習應用介面的 Python 工具。
* 人機互動介面（Human-Computer Interface）：讓使用者與模型互動的前端。
* 儲存檔案（File Saving）：將運算結果寫入外部檔案的過程。
* 分類分數（Classification Score）：模型輸出的數值，表示某分類的可能性。
* 數據預處理（Data Preprocessing）：在訓練或推論前清理與轉換資料的步驟。
* 語言模型（Language Model）：透過學習語言模式進行生成或分類的模型。
* 縮圖（Thumbnail）：書籍封面的小型預覽圖，用於視覺展示
* 高解析度參數（High-resolution Parameter）：在 Google Books API URL 後添加的參數以獲取更高品質的封面
* 預設封面（Fallback Cover）：缺少封面時使用的替代圖像
* 向量資料庫（Vector Database）：儲存書籍描述向量嵌入的資料庫
* Chroma 向量庫（Chroma Vector Store）：一種常用的開源向量資料庫
* 語意推薦（Semantic Recommendation）：基於向量相似度檢索的推薦方法
* 篩選條件（Filter Conditions）：依類別或情緒篩選推薦結果的規則
* 排序條件（Sorting Conditions）：根據情緒分數排序結果的規則
* 初始 Top K（Initial Top K）：在進一步篩選前取出的前 K 個結果
* 最終 Top K（Final Top K）：篩選後用於展示的前 K 個結果
* ISBN 識別碼（ISBN Identifier）：書籍的唯一識別碼，用於資料合併與匹配
* Pandas 合併（Pandas Merge）：以鍵值方式合併資料框的操作
* If-Else 條件（If-Else Clause）：根據情緒條件動態排序的邏輯
* 書籍描述截斷（Description Truncation）：將描述縮短至限定字數並加上省略號
* 作者字串分割（Author String Split）：依分號切割多位作者的字串
* 作者串接格式（Author Join Format）：依作者數量以逗號或 and 串接姓名
* 書籍標題（Book Title）：書籍的名稱，用於顯示在標題列
* 書籍標註（Book Caption）：包含標題、作者與截斷描述的展示文字
* 圖文配對（Image-Text Pair）：封面與標註文字組成的展示元素
* Gradio 框架（Gradio Framework）：快速構建互動式 ML 應用的 Python 套件
* Markdown 元件（Markdown Component）：Gradio 中用於展示文字的元素
* 輸入文字框（Textbox Input）：Gradio 中的文字輸入元件
* 預設佔位符（Placeholder Text）：在文字框內提示輸入範例的字串
* 下拉選單（Dropdown Menu）：提供類別或情緒選項的互動元件
* 按鈕元件（Button Component）：觸發推薦運算的互動元件
* 圖庫展示（Gallery Display）：以圖片集形式呈現多個結果的 UI 元素
* 互動式篩選（Interactive Filtering）：依使用者選擇即時更新結果
* 情緒標籤（Emotion Labels）：喜悅、驚訝、憤怒、恐懼、悲傷等標籤
* 主程式入口（Main Method）：程式執行的進入點
* 儀表板主題（Dashboard Theme）：Gradio 提供的樣式選擇，如 Glass、Citrus
* 使用者查詢（User Query）：使用者輸入的搜尋語意描述
* 語意檢索（Semantic Retrieval）：透過向量搜尋回傳語意相關的書籍
* 向量嵌入（Vector Embeddings）：將文字轉換為數值向量的表示
* 書籍篩選（Book Filtering）：依使用者條件過濾推薦結果的過程
* 書籍排序（Book Sorting）：根據情緒分數調整推薦順序
* 視覺化展示（Visual Presentation）：將封面圖與標籤以圖形方式呈現
* 多作者處理（Multi-author Handling）：針對多作者情境的字串格式化
* 單作者情境（Single-author Case）：針對僅有一位作者的情境處理
* 兩作者情境（Two-author Case）：以 “A and B” 格式顯示兩位作者
* 多作者情境（Multi-author Case）：以 “A, B, and C” 格式顯示多位作者
* 空值替換（Null Replacement）：將缺失封面替換為預設封面
* 查詢函式（Recommendation Function）：執行檢索與篩選邏輯的函式
* 儀表板啟動（Dashboard Launch）：執行 Gradio 介面並開放互動
* 使用者介面（User Interface, UI）：使用者與系統互動的界面
* 體驗優化（Experience Optimization）：透過截斷與格式化改善顯示效果
* 書籍情感排序（Emotion-based Sorting）：依情感分數調整推薦優先順序
* 中立選項（Neutral Option）：代表不篩選情緒的預設選項
* 書籍推薦系統（Book Recommendation System）：基於 LLM 與向量檢索的完整解決方案
