[0111] 本實(shí)施例中,在對(duì)自然語(yǔ)言進(jìn)行分詞處理之前,需要整合領(lǐng)域?qū)I(yè)知識(shí)、術(shù)語(yǔ)以及數(shù)據(jù)結(jié)構(gòu),以配置行業(yè)知識(shí)庫(kù)。然后利用WordPiece分詞器根據(jù)行業(yè)知識(shí)庫(kù)初始化詞匯表,并計(jì)算自然語(yǔ)言中每個(gè)字詞的概率,得到自然語(yǔ)言的初始似然值。接著,WordPiece分詞器選擇互信息值最大的相鄰子詞進(jìn)行合并,形成新的子詞,并更新詞匯表。每次合并后,都會(huì)重新計(jì)算句子的似然值,以評(píng)估合并后對(duì)句子整體概率的影響,直至達(dá)到預(yù)定的詞匯表大小,最終得到合適長(zhǎng)度的prompt。
[0112] 在實(shí)際應(yīng)用中,假設(shè)由n個(gè)字詞組成的句子,表示第i個(gè)詞,那個(gè)句子T的語(yǔ)言模型似然值可以表示為所有字詞概率的乘積,接著將相鄰的字詞a和b合并為新的字詞c,然后計(jì)算合并前后句子的似然值。然后,利用WordPiece分詞器選擇互信息值最大的兩個(gè)相鄰子詞進(jìn)行合并。合并兩個(gè)字詞后,將它們替換為一個(gè)新的子詞,并更新詞匯表。這個(gè)過(guò)程迭代進(jìn)行,直到達(dá)到預(yù)定詞匯表大小。例如,對(duì)于查詢“電視機(jī)的銷量是多少?”經(jīng)過(guò)上述預(yù)處理后,得到的預(yù)訓(xùn)練模型輸入序列為:[CLS]“電視機(jī)”、“的”、“銷量”、“是”、“多少”?[0113] 本實(shí)施例中,通過(guò)利用預(yù)配置的行業(yè)知識(shí)庫(kù)和WordPiece分詞器對(duì)自然語(yǔ)言進(jìn)行分詞處理,能夠準(zhǔn)確地識(shí)別和分割文本中的詞匯和術(shù)語(yǔ),接著通過(guò)將這些詞匯和術(shù)語(yǔ)重新構(gòu)建,可得到預(yù)訓(xùn)練模型所需要的合適長(zhǎng)度的prompt,為后續(xù)利用預(yù)訓(xùn)練模型將prompt進(jìn)行編碼提供了的幫助。
[0114] S104、通過(guò)預(yù)訓(xùn)練模型將所述prompt進(jìn)行編碼,得到每個(gè)token的編碼向量;
[0115] 預(yù)訓(xùn)練模型?是指在大型數(shù)據(jù)集上通過(guò)深度學(xué)習(xí)算法訓(xùn)練得到的模型,這些模型在訓(xùn)練過(guò)程中學(xué)習(xí)到了大量的通用特征和知識(shí)表示,可以用于各種相關(guān)任務(wù)的初始化解決方案,在本實(shí)施例中,采用了BERT、T5以及CodeBERT三種預(yù)訓(xùn)練模型進(jìn)行數(shù)據(jù)模型的訓(xùn)練,在預(yù)訓(xùn)練模型的選擇方面,制定了三種策略,分別為任務(wù)特定性、模型大小以及領(lǐng)域適應(yīng)性,其中,任務(wù)特定性是指選擇與SQL生成任務(wù)相關(guān)的模型;模型大小是指考慮模型的大小與可用計(jì)算資源之間的平衡,大模型在準(zhǔn)確性上可能優(yōu)于小模型,但也會(huì)增加計(jì)算開(kāi)銷;領(lǐng)域適應(yīng)性是指選擇在相關(guān)領(lǐng)域(如金融、醫(yī)療、電子商務(wù))進(jìn)行預(yù)訓(xùn)練的模型,能夠更好地理解領(lǐng)域特定的術(shù)語(yǔ)和關(guān)系。token是指將prompt分割成的最小單位或元素,可以是單詞、子詞(如詞根、詞綴)、字符或者其他文本片段。
[0116] 本實(shí)施例中,在prompt進(jìn)行編碼之前,需要將prompt轉(zhuǎn)化為預(yù)訓(xùn)練模型的輸入格式,即轉(zhuǎn)換為預(yù)訓(xùn)練模型所需要的input_ids和attention_mask,其中,input_ids是每個(gè)token的索引,表示在預(yù)訓(xùn)練模型詞匯表中的表示,attention_mask表示哪些位置是有效的。接著,將input_ids和attention_mask輸入至預(yù)訓(xùn)練模型進(jìn)行處理,得到編碼后的token向量表示,即token的編碼向量。
[0117] S105、將所述預(yù)訓(xùn)練模型輸出的第一個(gè)分類標(biāo)記token的編碼向量作為整個(gè)句子表示;
[0118] 分類標(biāo)記token為[CLS]token,是一個(gè)特殊的標(biāo)記,主要用于分類任務(wù),被放置在輸入序列的開(kāi)始位置,用于表示整個(gè)輸入序列的類別或整體語(yǔ)義。句子表示指的是整個(gè)句子的含義。
[0119] 本實(shí)施例中,將預(yù)訓(xùn)練模型輸出的第一個(gè)分類標(biāo)記token的編碼向量,作為整個(gè)句子表示。該分類標(biāo)記token的編碼向量捕捉了句子的整體語(yǔ)義信息,為后續(xù)進(jìn)行獲取局部語(yǔ)義表示提供了基礎(chǔ)。
[0120] S106、根據(jù)所述句子表示對(duì)所有所述編碼向量進(jìn)行處理,得到局部語(yǔ)義表示;
[0121] 本實(shí)施例中,基于獲得的句子表示,處理句子中所有token的編碼向量,以提取句子中的局部語(yǔ)義信息。這一過(guò)程通過(guò)分析每個(gè)token的編碼向量,可以得到細(xì)致的局部語(yǔ)義表示,為后續(xù)構(gòu)建語(yǔ)義數(shù)據(jù)模型提供了基礎(chǔ),其中,局部語(yǔ)義表示用于具體的字段匹配和語(yǔ)義sql生成。
[0122] S107、通過(guò)識(shí)別所述自然語(yǔ)言中的實(shí)體和屬性,并將所述實(shí)體和所述屬性映射到數(shù)據(jù)庫(kù)的Schema元素,以獲取映射關(guān)系;
[0123] 本實(shí)施例中,自然語(yǔ)言中的實(shí)體和屬性是指具體是人、事以及物。例如,用戶輸入的查詢語(yǔ)句“顯示所有銷售額超過(guò)1000的訂單”,其中“銷售額”為本查詢語(yǔ)句的實(shí)體和屬性。數(shù)據(jù)庫(kù)的Schema元素主要包括表、約束、視圖、存儲(chǔ)過(guò)程以及數(shù)據(jù)類型等,這些元素共同構(gòu)成了數(shù)據(jù)庫(kù)的結(jié)構(gòu)和功能,定義了數(shù)據(jù)的存儲(chǔ)方式和數(shù)據(jù)之間的關(guān)系以及如何操作這些數(shù)據(jù)。映射關(guān)系是指兩個(gè)數(shù)據(jù)之間元素相互對(duì)應(yīng)的關(guān)系。