# 課程介紹與目標 * 學習用大型語言模型與 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 與向量檢索的完整解決方案