【技術實現步驟摘要】
本專利技術涉及自然語言處理,具體指一種面向領域大語言模型的text2sql語義解析方法。
技術介紹
1、隨著自然語言處理(natural?language?processing,nlp)和人工智能技術的快速發展,尤其是2023年開始大語言模型的廣泛使用,如何運用自然語言訪問對應數據庫,生成對應的sql腳本并輸出相應結果的需求日益迫切,該需求的目的是希望通過自然語言與數據庫進行交互,以簡化數據庫操作的過程,使更多的人能夠輕松地與數據庫進行溝通和操作。在數據庫領域中,text2sql語義解析是一項關鍵技術,其用于將自然語言查詢轉化為結構化查詢語言(sql)查詢,以便對數據庫進行操作和檢索。
2、目前,在生成sql語句的方法中,一部分是基于規則和模板,但是這些方法僅適用于特定數據庫和查詢類型,并且對于復雜查詢缺乏支持,無法覆蓋所有情況。這些方法還需要大量的人工工作來創建和維護規則。另一部分方法基于機器學習和深度學習技術,如seq2seq模型框架。然而,這些方法需要大量標注的訓練數據,并且容易受到數據噪聲和語義歧義的影響,例如用戶在提問的過程中可能會出現拼寫錯誤或意圖模糊等問題,這些錯誤會導致模型生成錯誤的sql語句。
技術實現思路
1、本專利技術針對現有技術的不足,提出一種面向領域大語言模型的text2sql語義解析方法,基于prompt優化自然語言輸入,面向領域大模型預訓練微調并掛載領域知識庫進行數據增強生成的方法,這樣做可以實現復雜的查詢需求,無需依賴繁瑣的人工工作,同時
2、為了解決上述技術問題,本專利技術的技術方案為:
3、一種面向領域大語言模型的text2sql語義解析方法,包括如下步驟:
4、s1、連接領域數據庫并存儲數據庫模式信息;
5、s2、基于領域數據庫和領域背景知識構建知識庫并掛載到大模型中;
6、s3、基于sql-to-text模型生成text-sql數據集;
7、s4、使用text-sql數據集對模型進行微調、評估和優化,構建高性能的text2sql模型;
8、s5、輸入自然語言問題并基于prompt和領域知識庫對其優化;
9、s6、通過text2sql模型解析語義并基于需求設計prompt推理結果;
10、作為優選,所述步驟s1中,數據庫模式信息存儲方法為:將數據按照列的方式進行組織和存儲的列式存儲方法,存儲時,定義數據庫模式s={t1,t2,...,ti,...,tn,e},其中ti為第i個表,e為各表之間的主外鍵關系。數據表ti中包含列ci={ci1,...,cij,...},其中ci1表示第i個數據表中的第1列。
11、作為優選,所述知識庫構建方法為:
12、s2-1、確定應用領域,搜集該領域的通用背景知識形成文檔(text);
13、s2-2、通過自然語言處理技術提取領域數據庫中的表名(table)、列名(column)以及各表中的部分數據(data)并進行預處理和標注,再使用nlp模型基于s2-1中的背景知識對表名、列名以及各表中的部分數據進行語義解釋和備注,并存入字典:
14、remarki={″表名″:tablei,″列名″:columnij,″數據″:dataij}
15、s2-3、將s2-1中的領域背景知識文檔和s2-2中的備注字典通過預訓練詞嵌入模型(word2vec)轉化為詞向量。對于知識文檔和數據庫信息中的每個詞,假設輸入表示為詞向量v,中心詞wc的詞向量為上下文詞wo的詞向量輸出層使用softmax函數進行概率歸一化。目標函數和softmax函數公式分別表示為:
16、l=-logp(wo|wc)
17、
18、其中vb表示詞匯表中所有詞,vw表示詞w的詞向量;
19、s2-4、將s2-3中的詞向量存儲在向量數據庫中,建立領域知識庫結構,包括定義詞條的屬性、關系和類別,將存儲在向量數據庫中的詞向量關聯到知識庫中的相應詞條,補充相關的語義信息;再對知識庫進行擴展,添加實體關系和屬性信息,使其能夠更全面地反映領域知識,從而構建領域知識庫。
20、作為優選,所述步驟s3中具體方法為:
21、s3-1、設計prompt指令為“給定一個sql語句生成多個相應的問題描述或解釋”。prompt還要包含上下文信息,如sql語句涉及到的表、字段、數值等說明以及數據庫模式信息,從而使用該prompt構建一個具有sql-to-text解釋功能的模型,即sql-to-text模型;
22、s3-2、取領域數據庫應用程序、數據庫審計日志、測試用例中正確生成的sql語句,使用s3-1中的sql-to-text模型將每個sql語句轉換生成多個相似的sql解釋或問題。
23、s3-3、定義text-sql數據集d={d1,d2,...,di,...,dn},其中包括一個自然語言語句q和一個對應q的正確可執行的sql語句。計算s3-2中生成的多個sql解釋與prompt中上下文信息的相似性得分,從中選擇相似度最高的自然語言問題作為數據集中的q并將相似度最高的q和對應的sql語句組成text-sql數據對di={qi,sqli}存入數據集d中;
24、作為優選,所述步驟s3-3中,相似性得分的計算方法為:
25、余弦相似度測量兩個向量之間的夾角,計算公式為:a,b都是多維向量。
26、作為優選,所述步驟s4中具體方法為:
27、s4-1、將text-sql數據集按照一定比例劃分為訓練集和測試集。常見的劃分比例是ts=0.8*ts_train+0.2*ts_test,劃分時保證訓練集和測試集的數據分布和特征分布盡可能一致。
28、s4-2、使用劃分好的訓練集對模型進行微調,調整模型參數使其適應特定的text2sql任務。定義損失函數(均方誤差)來表示模型的預測結果與真實值的差異程度,其中第i個樣本的真實值為yi,預測值為樣本數量為n,公式表示為:
29、
30、s4-3、使用劃分好的測試集對微調后的模型進行指標計算和評估。定義真正例(tp)為text2sql模型生成的sql查詢能夠與真實sql查詢匹配的數量;假負例(fn)為text2sql模型未能正確生成與真實sql查詢匹配的查詢數量;假正例(fp)為text2sql模型生成的sql查詢與真實sql查詢不匹配的數量。常見的評估指標包括召回率、準確率和f1分數,公式表示為:
31、
32、
33、
34、s4-4、根據評估結果,使用優化算法(梯度下降)來最小化損失函數,找到最佳的模型參數,以達到更好的性能和泛化能力。定義模型的參數為θ,學習率為α,損失函數為mse,公式表本文檔來自技高網...
【技術保護點】
1.一種面向領域大語言模型的Text2SQL語義解析方法,其特征在于,包括如下步驟:
2.根據權利要求1所述的一種面向領域大語言模型的Text2SQL語義解析方法,其特征在于,所述步驟S1中,數據庫模式信息存儲方法為:將數據按照列的方式進行組織和存儲的列式存儲方法,存儲時,定義數據庫模式S={T1,T2,...,Ti,...,Tn,E},其中Ti為第i個表,E為各表之間的主外鍵關系,數據表Ti中包含列Ci={Ci1,...,Cij,...},其中Ci1表示第i個數據表中的第1列。
3.根據權利要求1所述的一種面向領域大語言模型的Text2SQL語義解析方法,其特征在于,所述步驟2中,構建領域知識庫的方法為:
4.根據權利要求3所述的一種面向領域大語言模型的Text2SQL語義解析方法,其特征在于,所述步驟2.3中,通過預訓練詞嵌入模型轉化為詞向量的方法為:
5.根據權利要求1所述的一種面向領域大語言模型的Text2SQL語義解析方法,其特征在于,所述步驟3的具體方法為:
6.根據權利要求5所述的一種面向領域大語言模型的T
7.根據權利要求1所述的一種面向領域大語言模型的Text2SQL語義解析方法,其特征在于,所述Text-SQL數據集按TS=0.8*TS_train+0.2*TS_test進行劃分。
8.根據權利要求1所述的一種面向領域大語言模型的Text2SQL語義解析方法,其特征在于,所述步驟4中,模型的微調方法為:定義均方誤差損失函數來表示模型的預測結果與真實值的差異程度。
9.根據權利要求1所述的一種面向領域大語言模型的Text2SQL語義解析方法,其特征在于,所述步驟4中,微調后的模型的評估方法為:
10.根據權利要求9所述的一種面向領域大語言模型的Text2SQL語義解析方法,其特征在于,所述步驟4中,Text2Sql模型評估的評價指標包括召回率、準確率和F1分數。
11.根據權利要求9所述的一種面向領域大語言模型的Text2SQL語義解析方法,其特征在于,所述步驟4中,根據評估結果應用梯度下降來最小化損失函數。
12.根據權利要求9所述的一種面向領域大語言模型的Text2SQL語義解析方法,其特征在于,所述步驟S5的具體方法為:
13.根據權利要求12所述的一種面向領域大語言模型的Text2SQL語義解析方法,其特征在于,所述步驟6的具體方法為:
...【技術特征摘要】
1.一種面向領域大語言模型的text2sql語義解析方法,其特征在于,包括如下步驟:
2.根據權利要求1所述的一種面向領域大語言模型的text2sql語義解析方法,其特征在于,所述步驟s1中,數據庫模式信息存儲方法為:將數據按照列的方式進行組織和存儲的列式存儲方法,存儲時,定義數據庫模式s={t1,t2,...,ti,...,tn,e},其中ti為第i個表,e為各表之間的主外鍵關系,數據表ti中包含列ci={ci1,...,cij,...},其中ci1表示第i個數據表中的第1列。
3.根據權利要求1所述的一種面向領域大語言模型的text2sql語義解析方法,其特征在于,所述步驟2中,構建領域知識庫的方法為:
4.根據權利要求3所述的一種面向領域大語言模型的text2sql語義解析方法,其特征在于,所述步驟2.3中,通過預訓練詞嵌入模型轉化為詞向量的方法為:
5.根據權利要求1所述的一種面向領域大語言模型的text2sql語義解析方法,其特征在于,所述步驟3的具體方法為:
6.根據權利要求5所述的一種面向領域大語言模型的text2sql語義解析方法,其特征在于,所述步驟s3-3中,相似性得分的計算方法為:應用余弦相似度測量兩個向量之間的夾角。
7...
【專利技術屬性】
技術研發人員:俞東進,鐘永軍,王思軒,曲冠樺,徐放,
申請(專利權)人:杭州電子科技大學,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。