本公開涉及大語言模型,具體涉及一種基于代碼命名規(guī)范與字節(jié)對編碼結(jié)合的詞表生成方法。
背景技術(shù):
1、隨著深度學(xué)習(xí)和大模型技術(shù)的發(fā)展,越來越多的人開始用深度學(xué)習(xí)或大模型技術(shù)解決軟件開發(fā)場景下的代碼補全任務(wù)。
2、現(xiàn)有的代碼補全模型在分詞過程中,一般采用空格或者符號間隔符進(jìn)行分詞得到詞表,但這種分詞方式容易出現(xiàn)以下問題:每個單詞占用詞表的一個位置,致使詞表的量級過于龐大,會導(dǎo)致模型的計算復(fù)雜度提高。
3、因此,亟需一種基于代碼命名規(guī)范與字節(jié)對編碼結(jié)合的詞表生成方法,以解決上述技術(shù)問題。
技術(shù)實現(xiàn)思路
1、有鑒于此,本公開提出了一種基于代碼命名規(guī)范與字節(jié)對編碼結(jié)合的詞表生成方法,以解決相關(guān)技術(shù)中存在的由于詞表的量級過于龐大,導(dǎo)致模型的計算復(fù)雜度提高的問題。
2、本公開第一方面實施例提出了一種基于代碼命名規(guī)范與字節(jié)對編碼結(jié)合的詞表生成方法,所述方法包括:
3、通過預(yù)設(shè)代碼命名規(guī)范對獲取的樣本代碼進(jìn)行分詞,得到第一序列;所述第一序列包括多個單詞;
4、確定所述第一序列的多個單詞對;每個單詞對由所述第一序列中任意兩個相鄰的單詞組合得到的;
5、判斷所述多個單詞對是否滿足預(yù)設(shè)條件;所述預(yù)設(shè)條件是指所述多個單詞對中的每個單詞對在所述多個單詞對中的出現(xiàn)頻率均為預(yù)設(shè)頻率;
6、如果所述多個單詞對滿足所述預(yù)設(shè)條件,則將所述第一序列確定為目標(biāo)詞表;所述目標(biāo)詞表用于代碼補全模型的訓(xùn)練;
7、如果所述多個單詞對不滿足所述預(yù)設(shè)條件,則從所述多個單詞對中篩選出出現(xiàn)頻率最高的目標(biāo)單詞對;
8、基于所述目標(biāo)單詞對,對所述第一序列中的多個單詞進(jìn)行合并,得到第二序列;所述第二序列的單詞數(shù)量小于所述第一序列的單詞數(shù)量;
9、將所述第二序列作為新的第一序列,對所述新的第一序列重復(fù)執(zhí)行確定所述第一序列的多個單詞對的步驟,直至所述多個單詞對滿足所述預(yù)設(shè)條件為止。
10、在本公開實施例中,所述方法還包括:
11、通過所述目標(biāo)詞表對初始模型進(jìn)行訓(xùn)練,得到代碼補全模型;所述代碼補全模型用于對待補全的源代碼進(jìn)行代碼補全。
12、在本公開實施例中,通過預(yù)設(shè)代碼命名規(guī)范對獲取的樣本代碼進(jìn)行分詞,得到第一序列,包括:
13、根據(jù)詞根,對所述樣本代碼中的每個標(biāo)識符進(jìn)行分詞得到至少兩個單詞;以及將所述樣本代碼中的每個非標(biāo)識符作為一個單詞;其中,所述至少兩個單詞中的首個單詞的首字母小寫,以及將后續(xù)單詞的首字母大寫。
14、在本公開實施例中,確定所述第一序列的多個單詞對,包括:
15、針對所述樣本代碼中包含的多個標(biāo)識符中的任意一個標(biāo)識符,將所述標(biāo)識符包含的至少兩個單詞中的每兩個相鄰的單詞進(jìn)行組合,得到一個單詞對;
16、基于樣本代碼中每個標(biāo)識符對應(yīng)的至少一個單詞對,得到與所述樣本代碼對應(yīng)的第一序列的多個單詞對。
17、在本公開實施例中,在判斷所述多個單詞對是否滿足預(yù)設(shè)條件之前,所述方法還包括:
18、確定所述多個單詞對中的每個單詞對在所述多個單詞對中的出現(xiàn)頻率。
19、在本公開實施例中,基于所述目標(biāo)單詞對,對所述第一序列中的多個單詞進(jìn)行合并,得到第二序列,包括:
20、從所述第一序列中的多個單詞中,確定出與所述目標(biāo)單詞對對應(yīng)的兩個單詞;
21、將所述第一序列中的所述兩個單詞進(jìn)行合并,得到所述第二序列。
22、在本公開實施例中,將所述第一序列中的所述兩個單詞進(jìn)行合并,得到所述第二序列,包括:
23、設(shè)定替換字符;所述替換字符與所述兩個單詞具有對應(yīng)關(guān)系,所述第一序列中不包含所述替換字符;
24、通過所述替換字符,對所述第一序列中的合并單詞進(jìn)行替換,得到所述第二序列;所述第二序列包括替換單詞以及單詞。
25、在本公開實施例中,所述預(yù)設(shè)頻率為1。
26、本公開第二方面的實施例提供了一種基于代碼命名規(guī)范與字節(jié)對編碼結(jié)合的詞表生成裝置,包括:
27、代碼分詞模塊,用于通過預(yù)設(shè)代碼命名規(guī)范對獲取的樣本代碼進(jìn)行分詞,得到第一序列;所述第一序列包括多個單詞;
28、單詞對確定模塊,用于確定所述第一序列的多個單詞對;每個單詞對由所述第一序列中任意兩個相鄰的單詞組合得到的;
29、條件判斷模塊,用于判斷所述多個單詞對是否滿足預(yù)設(shè)條件;所述預(yù)設(shè)條件是指所述多個單詞對中的每個單詞對在所述多個單詞對中的出現(xiàn)頻率均為預(yù)設(shè)頻率;
30、目標(biāo)詞表確定模塊,用于如果所述多個單詞對滿足所述預(yù)設(shè)條件,則將所述第一序列確定為目標(biāo)詞表;所述目標(biāo)詞表用于代碼補全模型的訓(xùn)練;
31、目標(biāo)單詞對篩選模塊,用于如果所述多個單詞對不滿足所述預(yù)設(shè)條件,則從所述多個單詞對中篩選出出現(xiàn)頻率最高的目標(biāo)單詞對;
32、單詞合并模塊,用于基于所述目標(biāo)單詞對,對所述第一序列中的多個單詞進(jìn)行合并,得到第二序列;所述第二序列的單詞數(shù)量小于所述第一序列的單詞數(shù)量;
33、將所述第二序列作為新的第一序列,對所述新的第一序列重復(fù)執(zhí)行確定所述第一序列的多個單詞對的步驟,直至所述多個單詞對滿足所述預(yù)設(shè)條件為止。
34、本公開第三方面的實施例提供了一種電子設(shè)備,該電子設(shè)備包括存儲器和處理器,所述存儲器和所述處理器之間互相通信連接,所述存儲器中存儲有計算機(jī)指令,所述處理器通過執(zhí)行所述計算機(jī)指令,從而執(zhí)行上述第一方面所述的基于代碼命名規(guī)范與字節(jié)對編碼結(jié)合的詞表生成方法。
35、本公開第四方面的實施例提供了一種計算機(jī)可讀存儲介質(zhì),計算機(jī)可讀存儲介質(zhì)上存儲有計算機(jī)指令,所述計算機(jī)指令用于使計算機(jī)執(zhí)行上述第一方面所述的基于代碼命名規(guī)范與字節(jié)對編碼結(jié)合的詞表生成方法。
36、本公開附加的方面和優(yōu)點將在下面的描述中部分給出,部分將從下面的描述中變的明顯,或通過本公開的實踐了解到。
1.一種基于代碼命名規(guī)范與字節(jié)對編碼結(jié)合的詞表生成方法,其特征在于,所述方法包括:
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括:
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,通過預(yù)設(shè)代碼命名規(guī)范對獲取的樣本代碼進(jìn)行分詞,得到第一序列,包括:
4.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,確定所述第一序列的多個單詞對,包括:
5.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,在判斷所述多個單詞對是否滿足預(yù)設(shè)條件之前,所述方法還包括:
6.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,基于所述目標(biāo)單詞對,對所述第一序列中的多個單詞進(jìn)行合并,得到第二序列,包括:
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,將所述第一序列中的所述兩個單詞進(jìn)行合并,得到所述第二序列,包括:
8.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述預(yù)設(shè)頻率為1。
9.一種基于代碼命名規(guī)范與字節(jié)對編碼結(jié)合的詞表生成裝置,其特征在于,所述裝置包括: