什麼是 RAG|就像讓裸考的你 open book 考試
什麼是 RAG|就像讓裸考的你 open book 考試這次希望和大家介紹:
RAG 是什麼,為什麼要使用 RAG
簡單使用 Hugging Face 實作具有檢索功能的聊天機器人
RAG(Retrieval-Augmented Generation)由 Patrick Lewis 等人於 2020 年提出,是一種 AI 框架,旨在通過提供外部資料知識來提升 LLM(大型語言模型)的回答質量和準確性。這有點像在沒有學習過相關知識的情況下進行考試的考生,在考試中使用開卷答題的方式來彌補知識的不足。具體來說,當 LLM 對某些特定資料的回覆不足時,RAG 可以提供外部資料來輔助回答問題。
舉一個簡單的例子來說明,假設我們問 LLM「為什麼 ML 需要正規化?」如果這個模型沒有學過機器學習的相關知識,它可能不知道正規化是什麼意思,以及正規化對機器學習建模的影響。但如果我們能夠提供一份關於機器學習的書籍,LLM 就能夠在回答「為什麼 ML 需要正規化?」這個問題時,檢索書籍中語意最相近的段落,並基於這些段落來回答問題。這個過程就是 RAG 的工作流程:提供額外資訊給 LLM,讓它進行檢索並 ...
淺談中文斷詞|中文斷詞的辛酸血淚與新詞偵測
今天想分享關於斷詞的一些辛酸血淚,相信早期從事 NLP 相關任務的人,作法差不多會是斷詞後,再做建模分析等應用,所以都經歷過斷詞不準確帶來的困擾。在傳統的 NLP 任務中,斷詞的品質直接影響後續分析的效果,特別是在中文文本分析中更是如此。因此,雖然斷詞工作看似枯燥且乏味,它卻是 NLP 中極為重要的一環,許多研究和工具都在不斷嘗試改善斷詞的效能。
今天我將分享以下三個要點:
常見的斷詞技術與工具
斷詞時常遇到的問題
新詞偵測的方法
為什麼要做斷詞?如何理解一種語言?想象一下我們學習語言的過程:我們先學習個別的字詞,再學習如何將它們組合起來形成具有意義的句子。例如,從「爸爸、媽媽、玩具…」到「爸爸給我買了玩具」。
對機器來說也是一樣,我們不會要求機器直接讀懂每句話,而是要將其拆分為更小的單位,例如單字(charactor)、詞(word)再做排列組合。
常見的斷詞方法與套件斷詞可分為兩大方法:1. Ruled Based 2. Learning Based
Ruled Based這種方法依靠預定義的詞典,通過從句子的前端或後端開始匹配來進行斷詞,常見的方法包括正向最大匹配法、逆 ...
Building Tweet Classification Models with BERT 🤗
文本分類是最初接觸 NLP 領域大概最先會碰到的任務類型,其中傳統的做法會使用詞頻、TF-IDF、Word2vec 等方法將文本項量化後再接 SVM, XGBoost 等分類器進行實作。隨著 Transformers 架構出現,大家開始嘗試使用 BERT 等模型來進行文本分類,並且得到不錯的結果,而隨著開源社群的茁壯貢獻,現在想要調用 Bert 進行推理、訓練都已經不是難事,今天以 Hugging Face 的 transformers 套件來進行實作。所以今天的 Tutorial 為實作以 Bert 進行文本分類,其中用到的資料集為來自 Kaggle 公開競賽「Natural Language Processing with Disaster Tweets」,競賽目的希望透過人們在 X 上的推文預測內容是否正在描述災難(disaster)的情況。
🤗 你將在本篇文了解:
如何從 Hugging Face 載入各種大型語言模型
transformers、Tokenizer、Dataset 功能與使用方法
如何使用 Trainer API 微調模型
requirements💻 資 ...
Dive into Multithreading in Python!
隨著寫程式經驗越來越多,我們開始會碰到一些需要等待一段時間才能完成任務,例如 1. 利用 API 或是 request 批量下載大量資料 2. 需要大量使用 CPU 進行數學運算的工作。這時候我們就可以考慮是否適合使用平行運算技術進行加速。常見的有多線程(multithreading)以及多進程(multiprocessing)。本文主要介紹以下三點:
多進程與多線程的差異
Python 實作多線程
以多線程改寫加速現有爬蟲程式
What are Multiprocessing and Multithreading?Difference between process and threads首先,什麼是進程 Process?什麼是執行緒 Threads?如果讀者是使用的 Mac 的話,可以在「活動監視器」的 CPU 中,看到右下角呈現目前執行的執行緒與程序數量。
Process 簡單來說進程就是正在運行中的程式,例如 App, 軟體等。
Thread 則是在 Process 運行中,因為需要同時進行運算、介面互動、資料庫搜索等工作,這些任務即可稱作執行緒 Threads。
...
PySpark MacOS Installation: Step-by-Step Guide 🐍
分為兩部分介紹如何安裝 pyspark,
安裝:介紹使用 pyspark 前所需安裝的所有工具與軟體。
檢查:安裝完畢後,測試是否能順利開啟 spark 與 pyspark。話不多說,開始來安裝吧~
安裝在安裝階段,我們需要安裝 Java、Scala 與 Apache Spark,並且安裝 pyspark 套件。而在安裝這些軟體前,我們需要 Xcode 與 Homebrew 這兩項工具。
Xcode: Apple’s Command Line Tools在終端機輸入
1xcode-select --install
接者在彈跳視窗點按 install 即可。
安裝 HomebrewHomebrew 是一個開源的套件管理器,其使用非常簡單所以可以節省很多的精力。我們後續也會使用 homebrew 安裝 Java、Scala 與 spark。到 homebrew 的頁面造著指示安裝即可。官網連結:Homebrew Downloads|Homebrew如果不確定自己是否有安裝 homebrew 或是安裝完成想檢查是否成功的話,可以輸入 brew 或是 which brew,如果有成功出 ...
Quickly Debug Python Code with ipdb!
在程式世界裡,抓蟲(debug)是個不可避免的坑,能不能高效的除錯技巧更是每位工程師和資料科學家痛 🥲。最近因為工作的關係,接手程式需要進行優化,在嘗試理解的過程中碰到一個除錯強大工具 ipdb,跟大家分享!ipdb 是一個第三方互動式除錯工具。ipdb 建立了一個互動式 shell 讓我們可以輕鬆地進行程式測試與除錯,非常方便。
How to Debug相信大家都有遇過:「程式有 error 但不知道為什麼出錯 … 程式跑起來了!… WHY!!!」的囧境 Orz
初學者在 debug 時可能會使用 print 、logging 打印出段落中的訊息以判斷程式是否如預期運作,或是加入 Exception Handling 、assertions 做異常處理,更有經驗的工程師可能能更善用如 PyCharm、VSCode 這些 IDE 所提供的除錯功能或是撰寫單元測試。而我們也可以透過 ipdb 這個工具來幫助我們了解目前環境變數的變化。那,ipdb 究竟是什麼?
What’s ipdbipdb 全名 IPython-enables python debugger,其透過 IPyth ...
Getting Started with Regexp, Simple and Clear 🤗
正則表達式(RegExp)是一種用於字符串搜索和替換的強大模式匹配語言。通過定義特定的模式,它可以快速識別和提取文本數據中的關鍵信息,從而使數據處理變得更加高效和精確。無論是數據清洗、日誌分析還是自然語言處理,正則表達式都是不可或缺的工具,幫助我們從繁雜的數據中提煉出有價值的信息。
什麼情況會使用到 RegExp|以車禍案件篩選為例以 找到車禍案件為例,下面整理出 7 則在判決中會出現的片段,我們的任務是要找到車禍案件,首先,我們先觀察一下是否有一定的規律可以進行歸納。
就本件車禍之發生自有過失,應就原告所受損害負賠償責任
足見被告對系爭車禍之發生,顯有過失
原告看到被告之機車停放於原告與陳明風同住之系爭住所外,原告早已耳聞兩人之間有曖昧關係
在前開191號房屋車庫門邊又拿了一條拉鐵門用的鐵條
隨即緊急煞車暫停於車道,致陳維德煞車不及,撞及上訴人車輛後端(下稱系爭事故)
被告由後方追撞原告之車輛,原告因而受有左側足部壓砸傷
甚至遭原告吐口水及左肩碰撞陸續之挑釁,…,該鐵條不但影響車輛進出 …
❓ 我們發現 …
不一定每篇車禍判決皆會提及車禍 → 只用車禍去篩選會漏掉許多資料 ...