【已更新完畢】2025泰迪杯數據挖掘競賽C題數學建模思路代碼文章教學:競賽智能客服機器人構建

完整內容請看文末最后的推廣群

基于大模型的競賽智能客服機器人構建
摘要
隨著國內學科和技能競賽的增多,參賽者對競賽相關信息的需求不斷上升,但傳統人工客服存在效率低、成本高、服務不穩定和用戶體驗差的問題。因此,設計一款智能客服機器人,利用人工智能技術為賽事提供實時、高效、精準的信息查詢服務,成為了迫切的需求。該機器人需具備回答基礎信息查詢、進行統計分析查詢以及處理開放性問題的能力,同時支持競賽數據的實時更新,確保信息的時效性和準確性。
為了解決問題一,我們采用了自動化的文本提取和自然語言處理方法,首先通過PyPDF2提取PDF文件中的文本,然后利用OpenAI API解析文本,同時基于正則表達式提取出賽事的關鍵信息,如賽項名稱、賽道、發布時間等,并將其保存為結構化的CSV文件。在處理過程中,我們面臨了PDF格式不一致和信息提取的挑戰,通過優化模型提示和文本清洗,確保了提取結果的準確性和一致性。
問題二的模型通過利用PDF文本提取、自然語言處理技術和Chromadb向量數據庫構建了一個智能客服機器人,能夠高效地從競賽文檔中提取并存儲關鍵信息,進而實現用戶查詢的實時回答。該模型在處理標準化查詢時表現出色,能夠自動化提取競賽信息并生成準確的回答。
問題三的模型是在問題二的基礎上進行擴展,主要任務是處理新增和變更的競賽PDF文檔。該模型通過提取新增和更新的PDF文件中的文本信息,進行清洗、分塊和嵌入生成后,將其更新到現有的知識庫中,確保知識庫包含最新的競賽數據,使得智能客服系統能夠實時響應用戶查詢并提供最新的競賽信息。
最后通過前端搭建和后端接口調用, 構建競賽智能客服機器人, 通過知識庫構建、查詢處理、響應生成以及系統的部署完成機器人的構建。

關鍵詞:PyPDF2;OpenAI API;大模型;自然語言處理;PDF文本提取;向量數據庫;嵌入表示(embedding); Chromadb數據庫; 智能客服機器人

目錄
基于大模型的競賽智能客服機器人構建 1
摘要 1
一、 問題重述 3
1.1 問題背景 3
1.2 要解決的問題 3
二、 問題分析 5
2.1 任務一的分析 5
2.2 任務二、三的分析 6
三、 問題假設 8
四、 模型原理 9
4.1 關鍵詞識別 9
4.2 中文文本分析 11
五、 模型建立與求解 11
5.1問題一建模與求解 11
5.2問題二、三建模與求解 18
5.3智能客服機器人系統構建 22
六、 模型評價與推廣 26
6.1模型的評價 26
6.1.1模型缺點 26
6.1.2模型缺點 26
6.2 模型推廣 27
七、 參考文獻 29
附錄【自行黏貼】 30

在這里插入圖片描述

二、 問題分析
2.1任務一的分析
問題一要求我們從提供的18個競賽規程PDF文檔中提取出關鍵信息,并將其結構化保存為CSV格式。競賽規程文檔包含了賽事的詳細信息,如賽事名稱、賽道、發布時間、報名時間、主辦單位和官網鏈接等,我們需要準確提取這些信息,并處理不同文檔格式和內容的差異。為了解決這個問題,我們采用了自動化的數據提取方法,結合PDF文本提取和OpenAI的自然語言處理能力。
首先,我們利用PyPDF2庫提取PDF文檔中的文本。PDF文件的文本結構常常存在格式化問題,因此需要通過清洗和格式化來保證文本的連續性和可讀性。接著,使用OpenAI API解析文本,提取出我們需要的信息。在這一過程中,我們構造了詳細的提示(Prompt),確保模型能夠理解并提取出賽事的關鍵信息,包括賽項名稱、賽道、發布時間、報名時間、主辦單位和官網鏈接等。OpenAI模型通過自然語言處理的強大能力,從文本中抽取出結構化的數據,并將其轉化為JSON格式。
在處理過程中,我們面臨了一些挑戰,例如PDF文件中有時包含掃描圖像或特殊字符,這些情況會影響文本的提取質量。此外,不同文檔可能采用不同的表述方式,導致字段提取的準確性有所不同。為了應對這些問題,我們在模型提示中規定了詳細的規則,并通過推測填補無法明確提取的信息(例如使用文檔中出現的時間或組織單位的上下文信息)。在輸出結果時,如果某些字段無法準確提取,我們會將其標記為空或進行補充說明,確保輸出的格式一致。
最終,所有提取的信息被批量處理并保存為CSV格式,以便后續分析和使用。每個PDF文件的處理結果都包含文件名、賽項名稱、賽道、發布時間、報名時間、主辦單位和官網等字段。通過這種方法,我們能夠高效、自動化地完成大量文檔的數據提取工作,并確保結果的準確性和結構一致性。

2.2任務二、三的分析
問題二的目標是利用人工智能技術,結合提供的競賽數據,設計并實現一個智能客服機器人,以便為用戶提供實時、高效、精準的競賽信息查詢服務。為了完成這一任務,我們構建了一個基于自然語言處理和向量數據庫的系統,來處理并回答競賽相關問題。該系統的核心包括文本處理、知識庫構建和信息檢索三個主要部分。
模型的構建從PDF文檔的處理開始,通過使用pdfminer.six庫提取競賽相關的文本信息。由于競賽文檔通常包含大量的競賽規則、任務描述和賽事信息,因此必須對這些長文本進行預處理。我們采用了文本清洗技術,去除掉無用的字符、空格和HTML標簽,以保證文本質量。之后,使用AutoTokenizer對文本進行分詞,并將文本分割成若干個塊,確保每個塊的token數量不超過模型的處理限制。這一過程有效地處理了長文檔中可能出現的token溢出問題,并保證了模型輸入的有效性。
在完成PDF文檔的文本提取和處理后,下一步是構建智能客服機器人的知識庫。為了確保機器人能夠高效地響應用戶查詢,我們使用了Chromadb數據庫來存儲處理后的競賽信息。通過對每個文本塊生成嵌入(embedding),使得每個塊能夠在向量空間中具有語義上的表示。我們使用了AsyncOpenAI生成嵌入表示,并通過Chromadb存儲這些嵌入。知識庫的構建是一個異步過程,通過批量處理PDF文檔并將嵌入結果添加到數據庫中,使得機器人能夠從龐大的信息庫中快速檢索相關內容。
為了實現實時的競賽信息查詢,我們通過CompetitionAgent類實現了一個基于用戶輸入的查詢響應機制。當用戶輸入問題時,系統會首先通過向量檢索從知識庫中找到相關上下文,并利用OpenAI的生成模型生成答案。這個過程是通過查詢嵌入和生成嵌入的相似度來實現的。系統能夠有效地提取與問題相關的競賽信息,并通過基于上下文的生成模型提供詳細回答。機器人不僅能夠回答基礎的競賽查詢,還能夠處理一些統計分析類和開放性問題。
問題三的任務是在問題二的基礎上,處理新增和變更的競賽PDF文檔,并將其更新到現有的智能客服機器人系統中。通過從新增或更新的PDF中提取競賽信息、清洗文本并生成嵌入,系統能夠將這些新的或更新的數據集成到知識庫中。這樣,智能客服系統能夠保持最新的競賽信息,并繼續高效地回答用戶查詢。
模型的核心在于自動化處理新增和變更數據,通過將新的競賽信息嵌入現有知識庫來更新系統。用戶查詢時,系統可以通過嵌入檢索到相關的競賽數據,并利用生成模型給出準確的回答。這個過程確保了系統始終能夠提供及時和準確的競賽信息,避免了人工更新的繁瑣。
該任務的關鍵挑戰在于如何高效地處理和更新競賽文檔,以及確保系統能夠無縫地集成新數據。通過簡化的問題三模型,通過處理新增和變更的PDF數據,并將其更新到現有的大模型中,使得系統能夠繼續為用戶提供實時的服務,提升了系統的靈活性和可擴展性。

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

任務 1:競賽數據整理
目標:從18個競賽規程PDF文件中提取基本競賽信息,并保存到 result_1.xlsx。

解題思路:
PDF 解析:
使用 pdfplumber 或 PyMuPDF 提取 PDF 文本內容。
處理文本分段問題,確保數據完整提取。

信息提取:
采用 正則表達式 識別并提取競賽名稱、賽道、發布時間、報名時間、組織單位和官網信息。
采用 NLP 技術,如 spaCy 或 NLTK 進行信息分類和結構化。

數據整理與存儲:
將提取的數據存儲為 Pandas DataFrame,并按表格要求格式化。
最終導出為 result_1.xlsx。

    # ---- 提取賽道名稱 ----# 方案1:匹配"專項賽"關鍵詞track_match = re.search(r'(.+?專項賽)', text)# 方案2:匹配標題行if not track_match:track_match = re.search(r'參\s*賽\s*手\s*冊\s*\n(.+?)\n', text)if track_match:info["賽道"] = track_match.group(1).replace("參 賽 手 冊", "").strip()# ---- 提取發布時間 ----date_match = re.search(r'(\d{4}\s*年\s*\d{1,2}\s*月)(?!.*\d{4}\s*年)', text)if date_match:info["發布時間"] = date_match.group(1).replace(" ", "")# ---- 提取報名時間 ----reg_date_match = re.search(r'報名時間[::]\s*(\d{4}\s*年\s*\d{1,2}\s*月\s*\d{1,2}\s*日\s*[-至]\s*\d{1,2}\s*月\s*\d{1,2}\s*日)', text)if reg_date_match:info["報名時間"] = reg_date_match.group(1).replace(" ", "")# ---- 提取官網 ----website_match = re.search(r'(https?://[^\s\)\]\'"]+)', text)if website_match:info["官網"] = website_match.group(1).split(',')[0].strip()

任務 2:智能客服機器人構建
目標:基于競賽規程文檔,搭建智能客服機器人,能夠回答用戶問題。

解題思路:
知識庫構建:
解析所有競賽文件,建立競賽信息知識庫(使用 SQLite 或 Pinecone 向量數據庫)。
為數據索引,以便高效查詢。

問答系統設計:
關鍵詞匹配:基于 BM25 或 TF-IDF 找出與用戶問題最相關的競賽信息。
自然語言理解(NLU):使用 BERT 或 GPT 進行語義匹配,提高準確率。

問題分類:
基本查詢:直接匹配數據庫信息(如競賽報名時間)。
數據統計分析:使用 SQL 或 Pandas 進行統計(如“人工智能相關競賽有多少?”)。

開放性問題:利用 LLM(如 ChatGPT)生成回答。
機器人回答問題并存儲:

================== 第四步:主流程 ==================

def main():

# 1. 創建知識庫knowledge_df = create_knowledge_base()knowledge_df.to_excel("knowledge_base.xlsx", index=False)print("已創建知識庫文件: knowledge_base.xlsx")# 2. 創建測試問題questions_df = create_test_questions()questions_df.to_excel("test_questions.xlsx", index=False)print("已創建測試問題文件: test_questions.xlsx")# 3. 初始化機器人bot = CompetitionChatbot(knowledge_df)# 4. 處理問題并保存結果results = []for _, row in questions_df.iterrows():result = bot.answer_question(row['問題'])results.append({"問題編號": f"C{row['問題序號']:04d}","問題": result["問題"],"關鍵點": result["關鍵點"],"回答": result["回答"]})result_df = pd.DataFrame(results)result_df.to_excel("chatbot_answers.xlsx", index=False)print("已生成回答文件: chatbot_answers.xlsx")# 5. 打印示例問答print("\n示例問答:")print(result_df[['問題編號', '問題', '回答']].to_markdown(index=False))

任務 3:知識庫更新與管理
目標:設計機制,使客服機器人能夠實時更新競賽數據。

解題思路:

新增賽事文件的處理:
解析 19_.pdf、20_.pdf、21_***.pdf,提取新增競賽信息并更新知識庫。

變更信息的處理:
解析 07_***.pdf(變更文件)。
對比數據庫中的舊數據,識別變更項并更新知識庫。

自動更新機制:
定期監測新文件,通過 Cron Job 或 定時任務 觸發更新程序。
重新運行問答系統,使用最新數據生成 result_3.xlsx。

def update_from_pdf(self, pdf_path, update_type="新增"):"""從PDF文件更新知識庫:param pdf_path: PDF文件路徑:param update_type: 更新類型("新增"或"變更")"""try:# 從PDF提取信息(復用問題一的代碼)new_info = self._extract_info_from_pdf(pdf_path)if update_type == "新增":self.knowledge_base = pd.concat([self.knowledge_base, new_info], ignore_index=True)note = f"新增競賽: {new_info['賽項名稱'].iloc[0]} {new_info['賽道'].iloc[0]}"else:# 查找并更新現有記錄mask = (self.knowledge_base['賽項名稱'] == new_info['賽項名稱'].iloc[0]) & \(self.knowledge_base['賽道'] == new_info['賽道'].iloc[0])idx = self.knowledge_base[mask].indexif len(idx) > 0:self.knowledge_base.loc[idx[0]] = new_info.iloc[0]note = f"更新競賽: {new_info['賽項名稱'].iloc[0]} {new_info['賽道'].iloc[0]}"else:self.knowledge_base = pd.concat([self.knowledge_base, new_info], ignore_index=True)note = f"未找到匹配競賽,已新增: {new_info['賽項名稱'].iloc[0]} {new_info['賽道'].iloc[0]}"# 保存新版本new_hash = self._calculate_dataframe_hash(self.knowledge_base)self._save_version(version_note=note, data_hash=new_hash)return True, noteexcept Exception as e:return False, f"更新失敗: {str(e)}"

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/79131.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/79131.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/79131.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

關于汽車輔助駕駛不同等級、技術對比、傳感器差異及未來發展方向的詳細分析

以下是關于汽車輔助駕駛不同等級、技術對比、傳感器差異及未來發展方向的詳細分析: 一、汽車輔助駕駛等級詳解 根據SAE(國際自動機工程師學會)的標準,自動駕駛分為 L0到L5 六個等級: 1. L0(無自動化&…

神經網絡如何表示數據

神經網絡是如何工作的?這是一個讓新手和專家都感到困惑的問題。麻省理工學院計算機科學和人工智能實驗室(CSAIL)的一個團隊表示,理解這些表示,以及它們如何為神經網絡從數據中學習的方式提供信息,對于提高深…

網絡復習二(TCP【3】)

一、為什么TIME_WAIT等待的時間是2MSL? MSL:報文最大生存時間 我們要知道TCP報文是基于IP協議生存的,而在IP頭中有一個TTL(經過路由跳數),當TTL為0使,數據報被丟失,同時發送ICMP報…

Go:基本數據

文章目錄 整數浮點數復數布爾值字符串字符串字面量UnicodeUTF - 8字符串和字節 slice字符串和數字的相互轉換 常量常量生成器 iota無類型常量 整數 分類 Go 的整數類型按大小分有 8 位、16 位、32 位、64 位 ,同時有符號整數包括int8、int16、int32、int64 &#…

0x03.Redis 通常應用于哪些場景?

回答重點 1)緩存(Cache): Redis 最常用的場景是作為緩存層,以減少數據庫的負載,提高數據讀取速度。例如,常用的用戶會話數據和頁面渲染結果可以存儲在 Redis 中。2)分布式鎖(Distributed Lock): Redis 可以用作分布式鎖的實現,確保在分布式系統中資源的安全訪問,避免…

大數據學習筆記

文章目錄 1. 大數據概述1.1 大數據的特性1.2 大數據技術生態1.2.1 Hadoop 的概念特性1.2.2 Hadoop生態圈 — 核心組件與技術棧1.2.3 Hadoop生態演進趨勢 2. 數據處理流程與技術棧2.1 數據采集2.1.1 日志采集工具2.1.2 實時數據流2.1.3 數據遷移 2.2 數據預處理2.2.1 批處理2.2.…

Spring Boot 自定義商標(Logo)的完整示例及配置說明( banner.txt 文件和配置文件屬性信息)

Spring Boot 自定義商標(Logo)的完整示例及配置說明 1. Spring Boot 商標(Banner)功能概述 Spring Boot 在啟動時會顯示一個 ASCII 藝術的商標 LOGO(默認為 Spring 的標志)。開發者可通過以下方式自定義&a…

1. k8s的簡介

Kubernetes(k8s)簡介 1. 產生背景 隨著云計算和微服務架構的興起,傳統的單體應用逐漸被拆分為多個小型、松耦合的服務(微服務)。這種架構雖然提升了開發靈活性和可維護性,但也帶來了新的挑戰:…

OpenCV 圖形API(35)圖像濾波-----中值模糊函數medianBlur()

操作系統:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 編程語言:C11 算法描述 使用中值濾波器模糊圖像。 該函數使用帶有 ksizeksize 開口的中值濾波器來平滑圖像。多通道圖像的每個通道都是獨立處理的。輸出圖像必須與輸入…

03 UV

04 Display工具欄_嗶哩嗶哩_bilibili 講的很棒 ctrlMMB 移動點 s 打針 ss 批量打針

PTA:古風排版

中國的古人寫文字&#xff0c;是從右向左豎向排版的。本題就請你編寫程序&#xff0c;把一段文字按古風排版。 輸入格式&#xff1a; 輸入在第一行給出一個正整數N&#xff08;<100&#xff09;&#xff0c;是每一列的字符數。第二行給出一個長度不超過1000的非空字符串&a…

每日一題(小白)暴力娛樂篇30

順時針旋轉&#xff0c;從上圖中不難看出行列進行了變換。因為這是一道暴力可以解決的問題&#xff0c;我們直接嘗試使用行列轉換看能不能得到想要的結果。 public static void main(String[] args) {Scanner scan new Scanner(System.in);int nscan.nextInt();int mscan.next…

邊緣計算場景下的模型輕量化:TensorRT部署YOLOv7的端到端優化指南

一、邊緣計算場景下的技術挑戰與優化路徑 在邊緣設備&#xff08;如Jetson系列&#xff09;部署YOLOv7需兼顧模型精度、推理速度與功耗限制三重約束。TensorRT作為NVIDIA官方推理加速庫&#xff0c;通過算子融合、量化壓縮和內存復用等優化技術&#xff0c;可將模型推理速度提…

rce漏洞學習

什么是rce漏洞 rce漏洞又稱遠程代碼執行漏洞&#xff0c;它允許攻擊者在目標服務器上遠程執行任意代碼或操作系統命令。rce漏洞通常出現在 應用程序提供給用戶執行命令的接口&#xff0c;例如網頁的ping功能也就是網頁的url欄&#xff0c;如果不對上傳的數據進行嚴格的管控就可…

VMware下Ubuntu空間擴容

目的&#xff1a; Ubuntu空間剩余不足&#xff0c;需要對Ubuntu進行擴容。 使用工具&#xff1a; 使用Ubuntu系統中的gparted工具進行系統擴容。 前提&#xff1a; 1、電腦有多余的未分配磁盤空間&#xff0c;比如我的Ubuntu磁盤G盤是200G&#xff0c;現在快滿了&#xff0c…

國產數據庫與Oracle數據庫事務差異分析

數據庫中的ACID是事務的基本特性&#xff0c;而在Oracle等數據庫遷移到國產數據庫國產中&#xff0c;可能因為不同數據庫事務處理機制的不同&#xff0c;在遷移后的業務邏輯處理上存在差異。本文簡要介紹了事務的ACID屬性、事務的隔離級別、回滾機制和超時機制&#xff0c;并總…

Dockerfile 學習指南和簡單實戰

引言 Dockerfile 是一種用于定義 Docker 鏡像構建步驟的文本文件。它通過一系列指令描述了如何一步步構建一個鏡像&#xff0c;包括安裝依賴、設置環境變量、復制文件等。在現實生活中&#xff0c;Dockerfile 的主要用途是幫助開發者快速、一致地構建和部署應用。它確保了應用…

青少年編程與數學 02-016 Python數據結構與算法 22課題、并行算法

青少年編程與數學 02-016 Python數據結構與算法 22課題、并行算法 一、GPU并行計算矩陣乘法示例 二、MPI并行計算allgather操作示例 三、Python中的并行計算多線程并行計算多進程并行計算 四、SIMD并行計算SIMD并行計算示例 總結 課題摘要: 并行算法是通過同時執行多個任務或操…

20250412 機器學習ML -(3)數據降維(scikitlearn)

1. 背景 數學小白一枚&#xff0c;看推理過程需要很多時間。好在有大神們源碼和DS幫忙&#xff0c;教程里的推理過程才能勉強拼湊一二。 * 留意&#xff1a; 推導過程中X都是向量組表達: shape(feature, sample_n); 和numpy中的默認矩陣正好相反。 2. PCA / KPCA PCAKPCA(Li…

宿舍管理系統(servlet+jsp)

宿舍管理系統(servletjsp) 宿舍管理系統是一個用于管理學生宿舍信息的平臺&#xff0c;支持超級管理員、教師端和學生端三種用戶角色登錄。系統功能包括宿舍管理員管理、學生管理、宿舍樓管理、缺勤記錄、添加宿舍房間、心理咨詢留言板、修改密碼和退出系統等模塊。宿舍管理員…