金融中的情感分析是了解市場趨勢和投資者行為的有力工具。但是,由於其複雜性和細微差別,一般的情感分析模型通常不足於財務文本。該項目通過微調的輕量級語言模型進行微調GPT-4O Mini提出了解決方案。通過利用TRC2數據集,這是專家模特Finbert標記的路透社財務新聞文章的集合,我們旨在增強GPT-4O MINI捕捉財務情感細微差別的能力。
該項目為財務情感分析提供了一種有效且可擴展的方法,為更細微的基於情感的金融分析打開了大門。到最後,我們證明了GPT-4O Mini用特定於領域的數據進行微調時,可以作為在財務環境中像Finbert這樣更複雜模型的可行替代品。
學習成果
- 了解使用特定於領域的數據進行微調的GPT-4O MINI進行經濟情緒分析的過程。
- 了解如何以結構化且可擴展的方式進行預處理和格式化財務文本數據以進行模型培訓。
- 了解對財務經文的應用程序的應用及其對市場趨勢的影響。
- 發現如何利用芬伯特(Finbert)等專家標記的數據集來改善財務情感分析中的模型績效。
- 探索在現實世界中的金融應用(例如市場分析和自動新聞情感跟踪)中進行微調的GPT-4O迷你模型的實際部署。
本文作為數據科學博客馬拉鬆的一部分發表。
目錄
- 探索數據集:情感分析的基本數據
- 研究方法:分析財務情緒的步驟
- 微調GPT-4O mini用於財務情感分析
- 結論
- 常見問題
探索數據集:情感分析的基本數據
對於此項目,我們使用TRC2(TREC REUTERS COPUS,第2卷)數據集,該數據集是路透社策劃並通過國家標準技術研究所(NIST)提供的財務新聞文章的集合。 TRC2數據集包括路透社財務新聞文章的全面選擇,該文章由於其廣泛的覆蓋範圍和與財務事件的相關性而經常用於金融語言模型。
訪問TRC2數據集
為了獲得TRC2數據集,研究人員和組織需要通過NIST要求訪問。該數據集可在NIST TREC REUTERS COPUS上獲得,該數據集提供了有關許可和使用協議的詳細信息。您將需要:
- 訪問Nisttrecreuterscorpus。
- 按照網站上指定的數據集請求過程。
- 確保符合在研究或商業項目中使用數據集的許可要求。
獲得數據集後,預處理並將其細分為句子進行情感分析,從而使您可以應用Finbert生成專家標記的情感類別。
研究方法:分析財務情緒的步驟
通過芬伯特(Finbert)得出的情感標籤的微調gpt-4o mini的方法,包括以下主要步驟:
步驟1:Finbert標籤
為了創建微型數據集,我們利用了在金融領域預先培訓的金融語言模型Finbert。我們將Finbert應用於TRC2數據集中的每個句子,從而在三個類別中生成專家情緒標籤:正,負和中性。此過程產生一個標記的數據集,其中TRC2的每個句子都與情感相關聯,從而為培訓具有可靠標籤的GPT-4O Mini提供了基礎。
步驟2:數據預處理和JSONL格式
然後將標記的數據進行預處理並格式化為適合OpenAI的微調API的JSONL結構。我們使用以下結構將每個數據點格式化:
- 系統消息指定助手作為財務專家的角色。
- 包含財務句子的用戶消息。
- 助理回應指出了Finbert的預測情緒標籤。
標記後,我們執行其他預處理步驟,例如將標籤轉換為小寫以保持一致性並分層數據以確保平衡標籤表示。我們還將數據集分為培訓和驗證集,保留80%的數據進行培訓和20%的驗證,這有助於評估模型的概括能力。
步驟3:微調GPT-4O mini
使用OpenAI的微調API,我們將使用預先標記的數據集微調GPT-4O mini。精細調整設置(例如學習率,批處理大小和時期數量)被優化,以在模型準確性和概括性之間達到平衡。該過程使GPT-4O Mini能夠從特定於領域的數據中學習,並提高其在財務情感分析任務上的績效。
步驟4:評估和基準測試
訓練後,使用常見的情緒分析指標(如準確性和F1得分)評估了模型的性能,從而可以直接比較Finbert在相同數據上的性能。這種基準測試表明,GPT-4O Mini在金融領域內的情感分類如何概括,並確認它是否能夠始終如一地超過Finbert的準確性。
步驟5:部署和實際應用
在確認出色的績效後,GPT-4O Mini準備在現實世界中的財務應用中部署,例如市場分析,投資諮詢和自動新聞情感跟踪。這種微調模型為更複雜的財務模型提供了有效的替代方法,提供了適合集成到金融系統的強大,可擴展的情感分析功能。
如果您想學習情感分析的基礎知識,請使用Python查看有關情感分析的文章!
微調GPT-4O mini用於財務情感分析
遵循這種結構化的逐步方法,無縫瀏覽過程的每個階段。無論您是初學者還是經驗豐富,本指南都可以確保從頭到尾的清晰度和成功實施。
步驟1:初始設置
加載所需的庫並配置環境。
從變形金剛導入自動驅動器,AutomoDelforSequenceceCecrification 導入火炬 導入大熊貓作為pd 從TQDM導入TQDM tokenizer = autotokenizer.from_pretaining(“ prosusai/finbert”) 型號= automodelforSequencececrification.from_pretrated(“ prosusai/finbert”) 設備= torch.device('cuda'如果torch.cuda.is_available()else'cpu') 型號(設備)
步驟2:定義與Finbert生成情感標籤的函數
- 此功能接受文本輸入,將其化,並使用Finbert來預測情感標籤。
- 標籤映射:Finbert輸出三個類別 - 陽性,負和中性。
def get_sentiment(文本): 輸入= tokenizer(text,return_tensors =“ pt”,truncation = true,max_length = 512).to(device) 使用Torch.no_grad(): 輸出=模型(**輸入) logits = outputs.logits 情感= torch.argmax(logits,dim = 1).Item() sentiment_label = [“正”,“負”,“中性”] [情感] 返回情感_label
步驟3:數據預處理和採樣TRC2數據集
您必須仔細預處理TRC2數據集,以僅保留相關句子進行微調。以下步驟概述瞭如何從TRC2數據集中讀取,清潔,拆分和過濾數據。
考慮到不披露的限制,本節提供了使用Pseudocode的數據預處理工作流的高級概述。
- 負載和提取數據:使用標准文本處理方法加載並提取以壓縮格式提供的數據集。每個文檔的相關部分被隔離,以關注關鍵文本內容。
- 文本清潔和句子細分:隔離內容部分後,清潔每個文檔以刪除外部字符並確保格式化的一致性。這準備了將句子分成句子或較小文本單元的內容,從而通過提供可管理的情感分析段來增強模型性能。
- 結構化數據存儲:為了促進流線處理,將數據組織為結構化格式,其中每一行代表單個句子或文本段。此設置允許有效的處理,過濾和標籤,使其適用於微調語言模型。
- 相關文本段的過濾和屏幕:為了保持高數據質量,我們應用了各種標準來濾除無關緊要或嘈雜的文本段。這些標準包括消除過度短段,去除那些具有特定模式的那些表明非詞性含量的模式,以及排除具有過多特殊特徵或特定格式特徵的段。
- 最終預處理:僅保留符合預定質量標準的段用於模型培訓。過濾數據作為結構化文件保存,以便在微調工作流程中簡化參考。
#從文件加載壓縮數據集 打開compressed_file作為文件: #將文件的內容讀取到內存中 data = read_file(文件) #提取每個文檔的相關部分 對於數據中的每個文檔: 提取document_id 提取日期 提取main_text_content #定義一個函數以清潔和細分文本內容 函數clean_and_segment_text(text): #刪除不需要的字符和空格 cleaned_text = remove_special_characters(文本) cleaned_text = standardize_whitespace(cleaned_text) #將清潔的文本分為句子或文本段 句子= split_into_sentences(cleaned_text) 返回句子 #將清潔和分割功能應用於每個文檔的內容 對於數據中的每個文檔: 句子= clean_and_segment_text(document ['main_text_content']) 將句子保存到結構化格式 #為單個句子創建結構化數據存儲 初始化結構化_data的空列表 對於句子中的每個句子: #將句子附加到結構化數據 structred_data.append(句子) #定義一個函數以根據特定條件過濾不需要的句子 函數filter_sentences(句子): 如果句子太短: 返回false 如果句子包含特定模式(例如,日期或符號過多): 返回false 如果句子與不需要的格式特徵相匹配: 返回false 返回true #將過濾器應用於結構化數據 filtered_data = [如果filter_sentences(句子)在structred_data中的句子句子] #進一步根據最小長度或其他條件過濾句子 final_data = [efftered_data中的句子句子,如果MEDS_MINMIM_LENGTH(句子)] #為模型培訓保存最終數據結構 將final_data保存為struction_file
- 隨機加載數據集和採樣1,000,000個句子,以確保可管理的數據集大小進行微調。
- 將採樣句子存儲在數據框架中,以啟用結構化處理和易於處理。
df_sampled = df.sample(n = 1000000,Random_State = 42).Reset_index(drop = true)
步驟4:生成標籤並準備JSONL數據以進行微調
- 通過採樣句子循環,使用Finbert標記每個句子,並將其格式化為GPT-4O迷你微調的JSONL。
- JSONL的結構:每個條目都包含系統消息,用戶內容和助手的情感響應。
進口JSON jsonl_data = [] 對於_,在tqdm中行(df_sampled.iterrows(),total = df_sampled.shape [0]): 內容=行['句子'] 情感= get_sentiment(內容) jsonl_entry = { “消息”:[ {“角色”:“系統”,“內容”:“助手是財務專家。”},, {“角色”:“用戶”,“ content”:content},, {“角色”:“助手”,“ content”:情感} 這是給出的 } jsonl_data.append(jsonl_entry) 用open('finetuning_data.jsonl','w')作為jsonl_file: 要進入JSONL_DATA: jsonl_file.write(json.dumps(entry)'\ n')
步驟5:將標籤轉換為小寫
- 通過將情感標籤轉換為小寫,確保標籤一致性,與OpenAI的格式對齊進行微調。
使用open('finetuning_data.jsonl','r')作為jsonl_file: data = [JSON.LOADS(line)在JSONL_FILE中的行] 對於數據輸入: 輸入[“消息”] [2] [“ content”] = entry [“ message”] [2] [“ content”]。lower() 使用new_jsonl_file: 對於數據輸入: new_jsonl_file.write(json.dumps(entry)'\ n')
步驟6:洗牌並將數據集分為培訓和驗證集
- 調整數據:隨機將條目的順序隨機,以消除排序偏差。
- 分為80%的培訓和20%的驗證集。
導入隨機 隨機種子(42) random.shuffle(數據) split_ratio = 0.8 split_index = int(len(data) * split_ratio) triench_data = data [:split_index] 驗證_data = data [split_index:] 用open('triben_data.jsonl','w')作為train_file: 用於進入訓練_data: train_file.write(json.dumps(entry)'\ n') 使用open('validation_data.jsonl','w')作為val_file: 要進入驗證_data: val_file.write(json.dumps(entry)'\ n')
步驟7:執行分層採樣並保存減少的數據集
- 要進一步優化,請執行分層採樣以創建減少的數據集,同時保持標籤比例。
- 使用分層抽樣:確保在培訓和驗證集中平衡微調的標籤平等分佈。
來自sklearn.model_selection導入train_test_split data_df = pd.dataframe({ 'content':[輸入[“消息”] [1] [“ content”]用於數據中的輸入], 'label':[輸入[“消息”] [2] [“ content”]用於數據輸入] })) df_sampled,_ = train_test_split(data_df,stratefify = data_df ['label'],test_size = 0.9,Random_State = 42) train_df,val_df = train_test_split(df_sampled,stratefify = df_sampled ['label'],test_size = 0.2,Random_State = 42) DEF DF_TO_JSONL(DF,文件名): jsonl_data = [] 對於_,在df.iterrows()中行列: jsonl_entry = { “消息”:[ {“角色”:“系統”,“內容”:“助手是財務專家。”},, {“角色”:“用戶”,“ content”:row ['content']},, {“角色”:“助手”,“ content”:row ['label']} 這是給出的 } jsonl_data.append(jsonl_entry) 用打開(文件名,'w')為jsonl_file: 要進入JSONL_DATA: jsonl_file.write(json.dumps(entry)'\ n') df_to_jsonl(train_df,'reduced_training_data.jsonl') df_to_jsonl(val_df,'reduced_validation_data.jsonl')
步驟8:使用OpenAI的微調API微調GPT-4O MINI
- 借助您準備好的JSONL文件,請按照準備好的培訓和驗證數據集進行OpenAI的文檔,以微調GPT-4O mini。
- 上傳數據並開始微調:將JSONL文件上傳到OpenAI的平台,並按照其API說明啟動微調過程。
步驟9:模型測試和評估
為了評估微調的GPT-4O Mini模型的性能,我們在Kaggle上可用的標有財務情感數據集上對其進行了測試。該數據集在財務環境中包含5,843個標記的句子,這可以在微調模型和Finbert之間進行有意義的比較。
芬伯特的精度為75.81%,而微調的GPT-4O MINI模型獲得了76.46%,表明略有改善。
這是用於測試的代碼:
導入大熊貓作為pd 導入操作系統 進口Openai 來自dotenv import load_dotenv #加載CSV文件 csv_file_path ='data.csv'#替換為實際的文件路徑 df = pd.read_csv(csv_file_path) #將dataframe轉換為文本格式 用open('sensences.txt','w',encoding ='utf-8')作為f: 對於索引,請在df.iterrows()中行列: 句子=行['句子']。strip()#乾淨的句子 情感=行['情感']。strip()。下()#確保情感是小寫的 f.write(f“ {句子} @{情感} \ n”) #加載環境變量 load_dotenv() #設置您的OpenAI API密鑰 openai.api_key = os.getEnv(“ openai_api_key”)#確保在您的環境變量中設置OpenAi_Api_Key #數據集文本文件的路徑 file_path ='sensences.txt'#文本文件包含句子和標籤 #從數據集讀取句子和真實標籤 句子= [] true_labels = [] 使用open(file_path,'r',encoding ='utf-8')作為文件: lines = file.readlines() #提取句子和標籤 對於行中的行: line = line.strip() 如果'@'排隊: 句子,label = line.rsplit('@',1) sensences.append(stone.strip()) true_labels.append(label.strip()) #功能以從微調模型中獲取預測 def get_openai_predictions(句子,model =“ your_finetuned_model_name”):#用模型名稱替換 嘗試: 響應= openai.chatcompletion.greate( 模型=模型, 消息= [ {“角色”:“系統”,“內容”:“您是財務情感分析專家。”},, {“角色”:“用戶”,“ content”:句子} ],, max_tokens = 50, 溫度= 0.5 ) 返迴響應['choices'] [0] ['消息'] ['content']。strip() 除例外為E: print(f“錯誤生成句子的預測:'{句子}'。錯誤:{e}”) 返回“未知” #生成數據集的預測 predicted_labels = [] 對於句子中的句子: 預測= get_openai_predictions(句子) #將“正”,“中性”,“負”的預測標準化 如果預測中的“正則”。lower(): predicted_labels.append('正面') elif'prediction..lower()中的“中性”: predicted_labels.append('中性') elif'panist'pretiction..lower(): predicted_labels.append('否定) 別的: predicted_labels.append('unknown') #計算模型的準確性 recripe_count = sum([[pred == true for pred,true in zip(predicted_labels,true_labels)])))))))) 精度= recript_count / len(句子) 打印(f'Accuracy:{精度:.4f}')#預期輸出:0.7646
結論
通過將Finbert的金融領域標籤的專業知識與GPT-4O Mini的靈活性相結合,該項目實現了高性能的財務情感模型,超過了Finbert的準確性。本指南和方法論為可複制,可擴展和可解釋的情感分析鋪平了道路,專門針對金融行業量身定制。
關鍵要點
- 使用特定領域數據的微調GPT-4O MINI增強了其捕獲細微的財務情感的能力,超過了諸如Finbert的準確性。
- 由路透社策劃的TRC2數據集為有效的情感分析培訓提供了高質量的財務新聞文章。
- 使用Finbert進行預處理和標籤,使GPT-4O Mini能夠為財務文本產生更準確的情感預測。
- 該方法證明了GPT-4O MINI對於現實世界的財務應用的可伸縮性,提供了複雜模型的輕量級替代方案。
- 通過利用OpenAI的微調API,此方法優化了GPT-4O Mini,以進行有效有效的財務情感分析。
常見問題
Q1。為什麼要使用GPT-4O Mini而不是Finbert進行財務情感分析?A. GPT-4O MINI提供了一種輕巧,靈活的替代方案,並且可以在通過微調的特定任務上勝過Finbert。通過對特定領域的數據進行微調,GPT-4O Mini可以在財務文本中捕獲細微的情感模式,同時更加有效,更易於部署。
Q2。如何請求訪問TRC2數據集?答:要訪問TRC2數據集,請通過此鏈接的國家標準與技術研究所(NIST)提交請求。查看網站的說明,以完成研究和商業用途所需的許可和使用協議。
Q3。我可以使用其他數據集進行財務情感分析嗎?答:您還可以使用其他數據集,例如財務短語銀行或包含標記為財務文本的自定義數據集。 TRC2數據集適合培訓情緒模型,因為它包括財務新聞內容,並涵蓋了廣泛的財務主題。
Q4。芬伯特如何產生情感標籤?A. Finbert是一種特定於金融領域的語言模型,它可以預先培訓財務數據和微型分析。當應用於TRC2句子時,它會根據財務文本中的語言上下文將每個句子分為正面,負面或中立的情感。
Q5。為什麼我們需要將標籤轉換為JSONL的小寫字母?答:將標籤轉換為小寫,確保與OpenAI的微調要求一致,這通常會期望標籤對病例敏感。它還有助於防止評估過程中的不匹配,並在JSONL數據集中保持統一的結構。
本文所示的媒體不由Analytics Vidhya擁有,並由作者酌情使用。
以上是微調GPT-4O mini用於財務情感分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!
![無法使用chatgpt!解釋可以立即測試的原因和解決方案[最新2025]](https://img.php.cn/upload/article/001/242/473/174717025174979.jpg?x-oss-process=image/resize,p_40)
ChatGPT無法訪問?本文提供多種實用解決方案!許多用戶在日常使用ChatGPT時,可能會遇到無法訪問或響應緩慢等問題。本文將根據不同情況,逐步指導您解決這些問題。 ChatGPT無法訪問的原因及初步排查 首先,我們需要確定問題是出在OpenAI服務器端,還是用戶自身網絡或設備問題。 請按照以下步驟進行排查: 步驟1:檢查OpenAI官方狀態 訪問OpenAI Status頁面 (status.openai.com),查看ChatGPT服務是否正常運行。如果顯示紅色或黃色警報,則表示Open

2025年5月10日,麻省理工學院物理學家Max Tegmark告訴《衛報》,AI實驗室應在釋放人工超級智能之前模仿Oppenheimer的三位一體測試演算。 “我的評估是'康普頓常數',這是一場比賽的可能性

AI音樂創作技術日新月異,本文將以ChatGPT等AI模型為例,詳細講解如何利用AI輔助音樂創作,並輔以實際案例進行說明。我們將分別介紹如何通過SunoAI、Hugging Face上的AI jukebox以及Python的Music21庫進行音樂創作。 通過這些技術,每個人都能輕鬆創作原創音樂。但需注意,AI生成內容的版權問題不容忽視,使用時務必謹慎。 讓我們一起探索AI在音樂領域的無限可能! OpenAI最新AI代理“OpenAI Deep Research”介紹: [ChatGPT]Ope

ChatGPT-4的出现,极大地拓展了AI应用的可能性。相较于GPT-3.5,ChatGPT-4有了显著提升,它具备强大的语境理解能力,还能识别和生成图像,堪称万能的AI助手。在提高商业效率、辅助创作等诸多领域,它都展现出巨大的潜力。然而,与此同时,我们也必须注意其使用上的注意事项。 本文将详细解读ChatGPT-4的特性,并介绍针对不同场景的有效使用方法。文中包含充分利用最新AI技术的技巧,敬请参考。 OpenAI发布的最新AI代理,“OpenAI Deep Research”详情请点击下方链

CHATGPT應用程序:與AI助手釋放您的創造力!初學者指南 ChatGpt應用程序是一位創新的AI助手,可處理各種任務,包括寫作,翻譯和答案。它是一種具有無限可能性的工具,可用於創意活動和信息收集。 在本文中,我們將以一種易於理解的方式解釋初學者,從如何安裝chatgpt智能手機應用程序到語音輸入功能和插件等應用程序所獨有的功能,以及在使用該應用時要牢記的要點。我們還將仔細研究插件限制和設備對設備配置同步

ChatGPT中文版:解鎖中文AI對話新體驗 ChatGPT風靡全球,您知道它也提供中文版本嗎?這款強大的AI工具不僅支持日常對話,還能處理專業內容,並兼容簡體中文和繁體中文。無論是中國地區的使用者,還是正在學習中文的朋友,都能從中受益。 本文將詳細介紹ChatGPT中文版的使用方法,包括賬戶設置、中文提示詞輸入、過濾器的使用、以及不同套餐的選擇,並分析潛在風險及應對策略。此外,我們還將對比ChatGPT中文版和其他中文AI工具,幫助您更好地了解其優勢和應用場景。 OpenAI最新發布的AI智能

這些可以將其視為生成AI領域的下一個飛躍,這為我們提供了Chatgpt和其他大型語言模型聊天機器人。他們可以代表我們採取行動,而不是簡單地回答問題或產生信息

使用chatgpt有效的多個帳戶管理技術|關於如何使用商業和私人生活的詳盡解釋! Chatgpt在各種情況下都使用,但是有些人可能擔心管理多個帳戶。本文將詳細解釋如何為ChatGpt創建多個帳戶,使用時該怎麼做以及如何安全有效地操作它。我們還介紹了重要的一點,例如業務和私人使用差異,並遵守OpenAI的使用條款,並提供指南,以幫助您安全地利用多個帳戶。 Openai


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3漢化版
中文版,非常好用

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3 Linux新版
SublimeText3 Linux最新版

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。