天天看點

獨家 |大語言模型如何化繁為簡,開創資料清洗新時代!

作者:資料派THU
獨家 |大語言模型如何化繁為簡,開創資料清洗新時代!
作者:Naresh Ram翻譯:王闖(Chuck)校對:zrx
本文約6600字,建議閱讀10+分鐘本文通過執行個體展示了大語言模型(LLM)在資料清洗中的驚豔之處。文章詳細介紹了如何利用提示、API調用和自動化代碼,以低成本實作資料清洗,并展示了其在提升資料品質和發掘洞察方面的巨大潛力。           

标簽:資料科學、資料清洗、大語言模型、LLM

使用OpenAI的GPT模型清理調查問卷回報。完整代碼已上傳至Github連結(https://github.com/aaxis-nram/data-cleanser-llm-node)。

獨家 |大語言模型如何化繁為簡,開創資料清洗新時代!

圖檔由Dall-E 2生成并由作者修改

在數字時代,準确可靠的資料對企業來說至關重要。這些資料為企業提供個性化的體驗,并幫助他們做出明智的決策[1]。然而,由于龐大的資料量和複雜度,處理資料常常面臨重大挑戰,需要進行大量枯燥且手動的工作。在這種情況下,大語言模型(LLM)應運而生,這項變革性技術具備了自然語言處理和模式識别的能力,有望徹底改變資料清洗的過程,使資料更具可用性。

在資料科學家的工具箱中,LLM就像是扳手和螺絲刀,能夠重塑活動并發揮作用,以提升資料品質。就像諺語中說的一錘定音,LLM将揭示出可行的洞見,最終為創造更好的客戶體驗鋪平道路。

現在,讓我們直接進入今天的案例。

獨家 |大語言模型如何化繁為簡,開創資料清洗新時代!

圖檔由Scott Graham上傳至Unsplash

案例

當對學生進行調查問卷時,将事實字段設為自由形式的文本是最糟糕的選擇!你可以想象我們收到的一些回答。

開個玩笑,我們的客戶之一是Study Fetch(https://www.studyfetch.com/),這是一個AI驅動的平台,利用課程材料為學生建立個性化的全方位學習套件。他們在大學生中進行了一項調查,收到了超過10,000個回報。然而,他們的首席執行官兼聯合創始人Esan Durrani遇到了一個小問題。原來,在調查中,"主修"字段是一個自由形式的文本框,這意味着回答者可以輸入任何内容。作為資料科學家,我們知道這對于進行統計計算來說絕對不是一個明智的選擇。是以,從調查中獲得的原始資料看起來像這樣...

獨家 |大語言模型如何化繁為簡,開創資料清洗新時代!

天了噜,讓你的Excel準備好吧!準備好花上一個小時,甚至三個小時的冒險來對付這些資料異類。

但是,别擔心,我們有一把大語言模型(LLM)的錘子。

正如一位長者所言,假如你隻有一把錘子,那麼所有的問題都會像是釘子。而資料清洗工作難道不正是最适合這把錘子的任務嗎?

我們隻需要簡單地使用我們友好的大語言模型将它們歸類到已知的類别中。特别是,OpenAI的生成式預訓練Transformer(GPT)模型,正是當下流行的聊天機器人應用ChatGPT背後的LLM。GPT模型使用了高達1750億個參數,并且已經通過對來自公開資料集Common Crawl的26億個存儲網頁進行訓練。此外,通過一種稱為從人類回報中的強化學習(RLHF)的技術,訓練者可以推動并激勵模型提供更準确和有用的回答[2]。

對于我們的目标來說,我相信超過1750億個參數應該足夠了,隻要我們能給出正确的提示(prompt)。

獨家 |大語言模型如何化繁為簡,開創資料清洗新時代!

圖檔由Kelly Sikkema上傳至Unsplash

關鍵在于提示語

來自某AI公司的Ryan和Esan,他們的主要業務是編寫出色的提示語。他們提供了我們的提示語的第一個版本。這個版本很棒,使用語言推斷[3]效果非常好,但有兩個可以改進的地方:

  • 首先,它僅适用于單個記錄。
  • 其次,它使用了達芬奇模型的'Completion'方法(一提到它,我的銀行賬戶就開始恐慌)。

這導緻了過高的成本,這是我們無法接受的。是以,Ryan和我分别使用'gpt-3.5-turbo'重新編寫了提示語,以便進行批量操作。對我來說,OpenAI的提示語最佳實踐(https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-openai-api)和ChatGPT Prompt Engineering for Developers課程(https://www.deeplearning.ai/short-courses/chatgpt-prompt-engineering-for-developers/)非常有幫助。經過一系列思考、實施、分析和改進的疊代,我們最終獲得了一個出色的工作版本。

現在,讓我們馬上展示經過第二次修訂後的提示語:

獨家 |大語言模型如何化繁為簡,開創資料清洗新時代!

對這個提示語,LLM給的回應是:

獨家 |大語言模型如何化繁為簡,開創資料清洗新時代!

這個方法或多或少會有些效果。但我并不太喜歡那些重複的、長篇大論的項目名稱。在LLM中,文本就是tokens,tokens就是真金白銀啊。你知道,我的程式設計技能是在網際網路泡沫破裂的火熱深淵中鍛煉出來的。讓我告訴你,我從不放過任何一次節省成本的機會。

是以,我在“期望的格式”部分略微修改了提示語。我要求模型隻輸出調查回報的序數(例如,上面的戲劇為1)和項目的序數(例如,文學為1)。然後Ryan建議我應該要求輸出JSON格式而不是CSV,以便更簡單地解析。他還建議我添加一個“示例輸出”部分,這是一個極好的建議。

最終的提示語如下(為清晰起見,已簡化):

獨家 |大語言模型如何化繁為簡,開創資料清洗新時代!

我們使用的完整提示語可以在這裡的GitHub連結(https://github.com/aaxis-nram/data-cleanser-llm-node)上檢視。

模型的輸出結果是:

獨家 |大語言模型如何化繁為簡,開創資料清洗新時代!

是以,正如我們之前讨論的,模型的輸出是我們定義的類别與調查響應的序數之間的映射。以第一行為例:1,1。這意味着1是響應編号,1是相應的映射程式編号。調查響應1是“戲劇”,映射的程式1是“文學與人文”。這看起來很正确!戲劇在它應有的#1位置,成為了所有人的焦點。

雖然輸出結果乍看之下像是嵌入的輸出(用于聚類和降維),但它們隻是相同的映射資訊,隻不過是序數位置。除了在token使用上提供一些成本優勢外,這些數字還更容易解析。

我們現在可以把原始的調查回報檔案轉換為有意義的專業,做聚合,獲得有價值的可操作的洞察。

但等等,我不打算坐在電腦前,把每一塊調查回報輸入浏覽器并計算映射。這除了令人頭腦麻木,錯誤率也是無法接受的。

我們需要的是一些好的自動化工具。讓我們來看看API...

獨家 |大語言模型如何化繁為簡,開創資料清洗新時代!

圖檔由Laura Ockel上傳至Unsplash

API救世主

可能你已經知道,應用程式接口(API)使我們的程式能夠高效地與第三方服務進行互動。盡管許多人通過使用ChatGPT實作了令人印象深刻的成果,但語言模型的真正潛力在于利用API将自然語言能力無縫地內建到應用程式中,使使用者感覺不到它的存在。就像你正在用來閱讀這篇文章的手機或電腦背後的令人難以置信的科學技術。

如果你還沒有API權限,你可以在這裡申請,https://openai.com/blog/openai-api [4]。一旦你注冊并獲得你的API密鑰,規格可以在這裡(https://platform.openai.com/docs/api-reference/chat)找到。一些非常有幫助的例子和代碼樣本可以在這裡(https://platform.openai.com/examples)找到。在你實際應用前,playground(API測試平台,https://platform.openai.com/playground)是一個很好的功能,用來在各種設定下測試提示語 [5]。

我們将使用REST來調用chat completion API。調用的示例如下:

獨家 |大語言模型如何化繁為簡,開創資料清洗新時代!

我們快速看一下參數及其效果。

模型

到目前為止,對公衆開放的聊天完成模型隻有gpt-3.5-turbo。Esan可以使用GPT 4模型,我對此非常嫉妒。雖然gpt-4更準确,且出現錯誤的可能性更小[2],但它的成本大約是gpt-3.5-turbo的20倍,對于我們的需求來說,gpt-3.5-turbo完全足夠了,謝謝。

溫度(temperature)

temperature是我們可以傳遞給模型的最重要的設定之一,僅次于提示。根據API文檔,它可以設定在0和2之間的值。它有着顯著的影響[6],因為它控制輸出中的随機性,有點像你開始寫作前體内的咖啡因含量。你可以在這裡找到一個對于每個應用可以使用的值的指南[7]。

對于我們的用例,我們隻想要沒有變化的輸出。我們希望引擎給我們原封不動的映射,每次都是相同的。是以,我們使用了0的值。

N值

生成多少個聊天完成選擇?如果我們是為了創造性寫作并希望有多個選擇,我們可以使用2或者3。對于我們的情況,n=1(預設)會很好。

角色

角色可以是system(系統)、user(使用者)或assistant(助手)。系統角色提供指令和設定環境。使用者角色代表來自最終使用者的提示。助手角色是基于對話曆史的響應。這些角色幫助構造對話,并使使用者和AI助手能夠有效地互動。

模型最大Token

這不一定是我們在請求中傳遞的參數,盡管另一個參數max_tokens限制了從聊天中擷取的響應的總長度。

首先,token可以被認為是一個詞的一部分。一個token大約是英語中的4個字元。例如,被歸于亞伯拉罕·林肯(Abraham Lincoln)和其他人的引語“The best way to predict the future is to create it”包含了11個token。

獨家 |大語言模型如何化繁為簡,開創資料清洗新時代!

圖檔來自Open AI Tokenizer,由作者生成

如果你認為一個token就是一個詞,那麼這裡有一個64個token的例子,可以顯示它并非那麼簡單。

獨家 |大語言模型如何化繁為簡,開創資料清洗新時代!

圖檔來自Open AI Tokenizer,由作者生成

做好準備,因為現在要揭示一個令人震驚的事實:每個你在消息中使用的表情符号都會額外增加高達6個重要令牌的成本。沒錯,你喜愛的笑臉和眨眼都是偷偷摸摸的小令牌竊賊!

模型的最大token視窗是一種技術限制。你的提示(包括其中的任何額外資料)和答案必須适應模型的最大限制。在對話完成的情況下,内容、角色和之前的所有消息都會占用token。如果你從輸入或輸出(助手消息)中删除一條消息,模型将完全失去對它的了解[8]。就像多麗在尋找奇科時,沒有法比奧,沒有賓果,沒有哈波,沒有艾爾莫?... 尼莫!

對于gpt-3.5-turbo,模型的最大限制是4096個token,或大約16000個字元。對于我們的示例來說,提示大約占用2000個字元,每個調查回報平均約20個字元,映射回報約為7個字元。是以,如果我們在每個提示中放入N個調查回報,最大字元數應為:

2000 + 20N + 7N應小于16000。

解這個等式後,我們得到一個小于518或大約500的N值。從技術角度來說,我們可以在每個請求中放入500個調查回報,并處理我們的資料20次。然而,我們選擇在每個回報中放入50個回報,并進行200次處理,因為如果我們在單個請求中放入超過50個調查回報,我們會偶爾收到異常響應。有時候,服務可能會出現問題!我們不确定這是一個系統的長期問題,還是我們碰巧遇到了不幸的情況。

那麼,我們該如何使用我們擁有的API呢?讓我們進入精彩部分,代碼。

獨家 |大語言模型如何化繁為簡,開創資料清洗新時代!

圖檔由Markus Spiske上傳至Unsplash

代碼的方法

Node.js是一個JavaScript運作環境[9]。我們将編寫一個Node.js/JavaScript程式,它将按照這個流程圖所描述的動作執行操作:

獨家 |大語言模型如何化繁為簡,開創資料清洗新時代!

程式的流程圖,由作者繪制

我的Javascript技能并不是那麼出色。我可以寫更好的Java,PHP,Julia,Go,C#,甚至Python。但是Esan堅持使用Node,是以就用Javascript吧。

完整的代碼,提示和樣本輸入可以在這個GitHub連結(https://github.com/aaxis-nram/data-cleanser-llm-node)中找到。然而,讓我們先看一下最吸引人的部分:

首先,讓我們看看我們如何使用“csv-parser” Node庫來讀取CSV檔案。

獨家 |大語言模型如何化繁為簡,開創資料清洗新時代!

接下來,我們調用分類器來生成映射。

獨家 |大語言模型如何化繁為簡,開創資料清洗新時代!

然後,我們從類别、主提示文本以及CSV中的資料構造出提示。接着,我們使用他們的 OpenAI Node 庫将提示發送給服務。

獨家 |大語言模型如何化繁為簡,開創資料清洗新時代!

最後,當所有疊代都完成後,我們可以将 srcCol 文本(即調查回報)轉換為 targetCol(即标準化的項目名稱),并寫出CSV。

獨家 |大語言模型如何化繁為簡,開創資料清洗新時代!

這點 JavaScript 并沒有我預期的那麼複雜,而且在2到3小時内就完成了。我想,任何事情在你開始做之前總是看起來令人生畏的。

是以,現在我們已經準備好了代碼,是時候進行最終的執行了…

獨家 |大語言模型如何化繁為簡,開創資料清洗新時代!

圖檔由Alexander Grey上傳至Unsplash

執行過程

現在,我們需要一個地方來運作這個代碼。在争論是否應該在雲執行個體上運作負載之後,我做了一些快速的計算,意識到我可以在我的筆記本電腦上在不到一個小時内跑完。這還不算太糟糕。

我們開始進行一輪測試,并注意到該服務在10次請求中有1次會傳回提供給它的資料,而不是映射資料。是以,我們隻會收到調查回報的清單。由于沒有找到映射,CSV檔案中的這些回報将被映射為空字元串。

為了避免在代碼中檢測并重試,我決定重新運作腳本,但隻處理目标列為空的記錄。

腳本會先将所有行的目标列設為空,并填入規範化的程式名稱。由于響應中的錯誤,一些行的目标列不會被映射,保持為空。當腳本第二次運作時,它隻會為第一次運作中未處理的響應建構提示。我們運作了幾次程式,并将所有内容都映射出來。

多次運作大約花費了30分鐘左右,并且不需要太多監督。以下是模型中一些更有趣的映射的精選:

獨家 |大語言模型如何化繁為簡,開創資料清洗新時代!

輸入與程式名稱之間的樣例映射,圖表由作者繪制

大多數看起來都對。不确定組織行為(Organizational Behavior)是否屬于社會科學(Social Sciences)或商業(Business)?我想任何一個都可以。

每個大約50條記錄的請求總共需要大約800個token。整個練習的成本是40美分。我們可能在測試、重新運作等方面花費了10美分。是以,總成本大約是50美分,大約2.5小時的編碼/測試時間,半小時的運作時間,我們完成了任務。

總成本:大約不到1美元

總時間:大約3小時

或許手動使用Excel進行轉換,排序,正規表達式,和拖拽複制,我們可能在相同的時間内完成它,并節省了一點小錢。但是,這樣做更有趣,我們學到了東西,我們有了可以重複的腳本/流程,并且還産出了一篇文章。而且,我覺得StudyFetch可以負擔得起50美分。

這是我們以高效率,高收益的方式實作的一個很好的應用,但LLM還可以用于哪些其他用途呢?

獨家 |大語言模型如何化繁為簡,開創資料清洗新時代!

圖檔由Marcel Strauß上傳至Unsplash

探索更多的用例

将語言功能添加到你的應用程式中可能有比我上面所示更多的用例。以下是與我們剛剛檢視的評論資料相關的更多用例:

資料解析和标準化:LLM可以通過識别和提取非結構化或半結構化資料源(如我們剛剛看到的資料源)中的相關資訊,幫助解析和标準化資料。

資料去重:LLM可以通過比較各種資料點來幫助識别重複記錄。例如,我們可以在評論資料中比較姓名、專業和大學,以标記潛在的重複記錄。

資料摘要:LLM可以對不同的記錄進行摘要,以了解回答的概況。例如,對于問題“在學習過程中你面臨的最大挑戰是什麼?”,一個大語言模型可以對來自同一專業和大學的多個回答進行摘要,以檢視是否存在任何模式。然後,我們可以将所有的摘要放入一個請求中,得到一個整體的清單。但我猜每個客戶細分的摘要可能會更有用。

情感分析:LLM可以分析評論以确定情感,并提取有價值的見解。對于問題“你願意為幫助你學習的服務付費嗎?”,LLM可以将情感分類為0(非常負面)到5(非常正面)。然後,我們可以利用這一點通過細分分析學生對付費服務的興趣。

盡管學生評論隻是一個微小的示例,但這項技術在更廣泛的領域中有着多種應用。在我所在的AAXIS公司,我們專注于企業和消費者數字商務解決方案。我們的工作包括将大量資料從現有的舊系統遷移到具有不同資料結構的新系統。為了確定資料的一緻性,我們使用各種資料工具對源資料進行分析。這篇文章中介紹的技術對于這個目标非常有幫助。

其他數字商務用例包括檢查産品目錄中的錯誤、編寫産品說明、掃描評論回複和生成産品評論摘要等等。相比詢問學生的專業,編寫這些用例的代碼要簡單得多。

然而,需要注意的是,盡管LLM在資料清洗方面是強大的工具,但它們應與其他技術和人工監督相結合使用。資料清洗過程通常需要領域專業知識、上下文了解和人工稽核,以做出明智的決策并保持資料的完整性。LLM并不是推理引擎[10],它們隻是下一個詞的預測器。它們往往以極大的自信和說服力提供錯誤的資訊(幻覺)[2][11]。在我們的測試中,由于我們主要涉及分類,我們沒有遇到任何幻覺的情況。

如果您謹慎行事并了解其中的陷阱,LLM可以成為您工具箱中強大的工具。

獨家 |大語言模型如何化繁為簡,開創資料清洗新時代!

圖檔由Paul Szewczyk上傳至Unsplash

尾聲

在這篇文章中,我們首先研究了資料清洗的一個具體應用案例:将調查問卷回報規範化為一組特定的值。這樣做可以将回報進行分組并獲得有價值的見解。為了對這些回報進行分類,我們使用了OpenAI的GPT 3.5 Turbo,一個強大的LLM。我們詳細介紹了使用的提示、如何利用API調用來處理提示以及實作自動化的代碼。最終,我們成功地将所有元件整合在一起,以不到一美元的成本完成了任務。

我們是不是像拿着一把傳說中的LLM錘子,找到了在自由文本形式的調查回報中那顆完美閃亮的釘子?也許吧。更可能的是,我們拿出了一把瑞士軍刀,用它剝皮并享用了一些美味的魚肉。雖然LLM不是專門為此而設計的工具,但仍然非常實用。而且,Esan真的非常喜歡壽司。

那麼,你有什麼LLM的用例呢?我們非常樂意聽聽你的想法!

鳴謝

本文的主要工作由我、Esan Durrani和Ryan Trattner完成,我們是StudyFetch的聯合創始人。StudyFetch是一個基于人工智能的平台,利用課程資料為學生建立個性化的一站式學習集。

我要感謝AAXIS Digital的同僚Prashant Mishra、Rajeev Hans、Israel Moura和Andy Wagner對本文的審查和建議。

我還要感謝我30年的朋友、TRM Labs的工程副總裁Kiran Bondalapati,感謝他在生成式人工智能領域的初期引導以及對本文的審閱。

同時,我要特别感謝我的編輯Megan Polstra,她一如既往地為文章增添了專業和精緻的風格。

參考資料

1. Temu Raitaluoto, “The importance of personalized marketing in the digital age”, MaketTailor Blog, May 2023,https://www.markettailor.io/blog/importance-of-personalized-marketing-in-digital-age

2. Ankur A. Patel, Bryant Linton and Dina Sostarec, GPT-4, GPT-3, and GPT-3.5 Turbo: A Review Of OpenAI’s Large Language Models, Apr 2023, Ankur’s Newsletter,https://www.ankursnewsletter.com/p/gpt-4-gpt-3-and-gpt-35-turbo-a-review

3. Alexandra Mendes, Ultimate ChatGPT prompt engineering guide for general users and developers, Jun 2023, Imaginary Cloud Blog,https://www.imaginarycloud.com/blog/chatgpt-prompt-engineering/

4. Sebastian, How to Use OpenAI’s ChatGPT API in Node.js, Mar 2023, Medium — Coding the Smart Way,https://medium.com/codingthesmartway-com-blog/how-to-use-openais-chatgpt-api-in-node-js-3f01c1f8d473

5. Tristan Wolff, Liberate Your Prompts From ChatGPT Restrictions With The OpenAI API Playground, Feb 2023, Medium — Tales of Tomorrow,https://medium.com/tales-of-tomorrow/liberate-your-prompts-from-chatgpt-restrictions-with-the-openai-api-playground-a0ac92644c6f

6. AlgoWriting, A simple guide to setting the GPT-3 temperature, Nov 2020, Medium,https://algowriting.medium.com/gpt-3-temperature-setting-101-41200ff0d0be

7. Kane Hooper, Mastering the GPT-3 Temperature Parameter with Ruby, Jan 2023, Plain English,https://plainenglish.io/blog/mastering-the-gpt-3-temperature-parameter-with-ruby

8. OpenAI Authors, GPT Guide — Managing tokens, 2023, OpenAI Documentation,https://platform.openai.com/docs/guides/gpt/managing-tokens

9. Priyesh Patel, What exactly is Node.js?, Apr 2018, Medium — Free Code Camp,https://medium.com/free-code-camp/what-exactly-is-node-js-ae36e97449f5

10. Ben Dickson, Large language models have a reasoning problem, June 2022, Tech Talks Blog,https://bdtechtalks.com/2022/06/27/large-language-models-logical-reasoning/

11. Frank Neugebauer, Understanding LLM Hallucinations, May 2023, Towards Data Science,https://towardsdatascience.com/llm-hallucinations-ec831dcd7786

原文标題:From Chaos to Clarity: Streamlining Data Cleansing Using Large Language Models

原文連結:https://towardsdatascience.com/from-chaos-to-clarity-streamlining-data-cleansing-using-large-language-models-a539fa0b2d90

繼續閱讀