999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種基于多任務學習的代碼補全方法

2023-01-01 00:00:00帥祥魏樂舒紅平
計算機應用研究 2023年3期

摘 要:針對基于語言模型的代碼補全方法忽略源代碼中結構信息和命名信息而導致補全準確率偏低的問題,提出一種基于多任務學習的代碼補全方法(multi-task learning code completion,MTLCC)。MTLCC對源代碼數據集進行數據清洗和預處理,通過抽象語法樹(abstract syntax tree,AST)提取源代碼中的結構信息和命名信息;構建基于Transformer的多任務學習網絡,采用軟參數共享學習方式分別對源代碼的節點類型預測、節點值預測和語句預測進行訓練;利用集束搜索對模型推理結果進行后期處理生成代碼補全建議列表。實驗結果表明,與Pointer network、LSTM+TransformerXL和CodeGPT中最好的模型相比,MTLCC在節點類型預測和節點值預測任務中的準確率分別提升了2.5%和1.7%、MRR分別提升了3.7%和2.4%,在語句預測任務中的ROUGE-L分數(L@4)提升了0.055。

關鍵詞:代碼補全;多任務學習;抽象語法樹;Transformer;集束搜索

中圖分類號:TP391 文獻標志碼:A

文章編號:1001-3695(2023)03-036-0863-05

doi:10.19734/j.issn.1001-3695.2022.08.0396

Code completion method based on multi-task learning

Shuai Xianga,Wei Lea,b,Shu Hongpingb

(a.School of Software Engineering,b.Software Automatic Generation amp; Intelligence Service Key Laboratory of Sichuan Province,Chengdu University of Information Technology,Chengdu 610225,China)

Abstract:Aiming at the problem that the language model-based code completion method ignored the structural information and naming information in the source code,which leaded to the low completion accuracy,this paper proposed a code completion method based on MTLCC.MTLCC cleaned and preprocessed the source code dataset,extracted the structural information and naming information in the source code through the AST.It built a multi-task learning network based on Transformer,and adop-ted the soft parameter sharing learning method to train the node type prediction,node value prediction and sentence prediction of the source code respectively.It used beam search to post-process the model inference results to generate a list of code completion suggestions.The experimental results show that,compared with the best models in Pointer network,LSTM+TransformerXL and CodeGPT,the accuracy of MTLCC in node type prediction and node value prediction tasks is improved by 2.5% and 1.7%,respectively,and the MRR is improved by 3.7% and 2.4%,the ROUGE-L score in the sentence prediction task(L@4) is improved by 0.055.

Key words:code completion;multi-task learning;abstract syntax tree;Transformer;beam search

0 引言

隨著軟件規模和復雜性的提高,對程序編寫準確性和效率的要求也日益提升。代碼補全基于已編寫代碼片段建議下一個或多個可能的token,作為集成開發環境(integrated development environment,IDE)中的必備功能,代碼補全有效提高了程序編寫準確性和效率,減輕了開發人員的負擔。傳統代碼補全工具依賴于代碼編譯時的類型信息或啟發式規則提出建議[1,2],隨著大數據、人工智能技術的發展,越來越多的研究者專注于從大規模代碼庫中學習[3]。研究人員假設編程語言屬于自然語言范疇,并且具有重復性和可預測統計學規律[4,5],可以使用自然語言處理技術從源代碼中提取自然語言的統計特征和重復模式。基于語言模型的代碼補全方法中n-gram模型是使用最早和最廣泛的語言模型之一[6,7],n-gram模型是概率馬爾可夫鏈模型,在給定n-1個標記組成上下文的情況下預測文本。Tu等人[8]建立在n-gram模型上,使用緩存機制來捕獲源代碼中的局部;Hellendoorn等人[9]通過利用包括嵌套范圍、局部性和無限詞匯量在內的各種技術改進了n-gram模型。

隨著深度學習在圖像識別、機器翻譯、自動駕駛等多個領域取得卓越表現,源代碼語言建模技術轉向基于深度學習神經網絡。Li等人[10]提出了基于循環神經網絡(recurrent neural network,RNN)的代碼補全方式,并且利用指針網絡結構來解決模型的OoV(out of vocabulary)問題。Liu等人[11]利用工具將JavaScript代碼語料庫中的代碼轉換為AST,并利用其結構信息將代碼補全問題轉換為對樹葉節點的預測問題,利用長短期記憶(long short-term memory,LSTM)模型和程序解析方法實現對下一個token的預測,但受限于模型自身的結構,該方法訓練效率慢且被證明只能捕捉200個詞匯的上下文依賴[12]。Svyatkovskiy等人[13]提出了一種基于GPT-C模型的代碼補全方法,支持多類型語言的語句補全。Liu等人[14]提出了一種多任務學習的代碼補全方法,采用硬參數共享的方式,使用TransformerXL和LSTM模型作為AST的編碼器,分別對token類型和值進行預測。

在源代碼的AST表示中,節點類型和節點值是兩個密切相關的屬性,類型可以作為值的約束,反之亦然。現有代碼補全方法中沒有很好地考慮這種相關性,將源代碼作為單一自然語言進行學習,忽略了其本身結構信息和命名信息。基于以上問題提出了MTLCC,相關任務可以為彼此的學習過程提供有效約束,從一項任務中獲得的知識可有助于另一項任務,從而提升模型對于代碼的預測能力。

1 相關技術

1.1 Transformer網絡

Transformer是一系列的神經網絡,旨在處理有序的序列數據[15]。Transformer廣泛應用于自然語言處理(NLP)和自然語言理解(NLU)領域,注意力機制使Transformer能夠專注于輸入的選擇性部分,從而產生更多相關的輸出[16]。文獻[17,18]表明Transformer在多個NLP任務上的表現優于RNN和LSTM模型。

GPT-2是Transformer的變體之一。GPT-2是一種自回歸的預訓練模型,由多頭自注意力層、前饋神經網絡層和歸一化層組成,用于語言建模任務的GPT-2具有softmax激活函數的線性輸出層。

1.2 多任務學習

多任務學習(multi-task learning,MTL)是指同時學習多個相關任務,在學習過程中相關任務之間可以共享知識,利用任務相關性來提升模型的性能和泛化能力。MTL已被證明在許多自然語言處理任務中的有效性,如機器翻譯[19]、序列標注[20,21]和文本摘要生成[22,23]。

MTL學習方式主要分為硬參數共享學習和軟參數共享學習。前者在多個任務之間共享網絡的幾層隱藏層,在靠近輸出層的網絡開始分叉去做不同的任務。不同任務通過共享網絡底部的幾層隱藏層來學習一些共有的抽象層次低的特征,這種方法底層共享的參數是完全相同的。軟參數共享方式MTL不要求底部的參數完全一樣,而是對不同任務的底部參數進行正則化。相對于硬參數共享的MTL,學習模型的約束更加寬松,當任務關系不是特別緊密時,能學習得到更好的結果。

MTL訓練過程中不同任務分別對于不同的訓練數據集,每次迭代過程中隨機挑選一個任務,然后從該任務中隨機選擇一些訓練樣本計算梯度并且更新參數。通常使用交替訓練的方式近似地實現多個任務的同時學習。假設有N個相關任務,第n個任務的訓練集為Dn,包含Kn個樣本。

其中:x(n,k)和y(n,k)表示第n個任務中的第k個樣本以及所對應的標簽。假設這N個任務所對應的模型分別為fn(x;θ),1≤n≤N,則MTL的聯合目標函數為所有任務損失函數的線性加權,即

其中:lossn(·)是第n個任務的損失函數;wn是第n個任務的權重;θ表示包含了MTL中共享模塊和私有模塊的所有參數。權重根據不同任務的重要程度或者難度來賦值。

2 基于多任務學習的代碼補全方法

本文工作主要分為數據集預處理、模型訓練和后期處理,流程如圖1所示。首先,對數據集中程序文件進行預處理,提取代碼中的重要信息(如命名信息)并對源代碼進行標記化,并且轉換為AST序列。源文件被處理成兩種不同的數據,即通過前序深度優先遍歷的AST節點序列數據和自然語言文本數據。模型訓練階段包括三個任務,即節點類型預測任務、節點值預測任務和語句預測任務,使用軟參數共享MTL的訓練策略,這三個任務之間存在一些共同的特征,并且這些特征可以相互促進同時學習。

2.1 預處理

源代碼數據集的質量將直接影響模型訓練效果和代碼補全效果,因此要對數據集進行數據清洗和預處理操作。

a)數據清洗。首先,刪除數據集中的重復文件;其次,源代碼中會有大量的注釋和空行,這會對后面模型訓練產生干擾,對這一部分內容進行清除;除英文字符外的其他字符(如日志部分)由于其不在詞匯表的范圍內,也要進行清除。

b)提取源代碼中的重要信息。任何編程語言都有明確的上下文無關文法,它可以用來將源代碼解析成AST,代表源代碼的抽象語法結構。AST中的每個非葉節點代表程序中的結構信息,每個葉節點對應于程序中的一個終端,包含一個類型屬性和一個值屬性。

算法1 利用AST轉換源代碼序列算法

輸入:進行數據清洗后的源代碼文件f。

輸出:轉換后的源代碼序列文件s。

set←(○/); //將set集合設置為空

json_node←(○/); //將json_node字典設置為空

for 節點in ast.parse(f) //遍歷文件f所生成的抽象語法樹

節點類型名←“LIBRARY”等其他特殊標記;

json_node[‘type’]←用特殊標記替換后的節點類型名;

json_node[‘value’]←節點值;

set←json_node

s←json.dump(set); //將set集合轉換為json格式

return s.

在經過數據清洗后,使用AST庫將源代碼中的數據轉換為對應的節點類型名稱,并且提取其中的一些命名信息,以便模型能夠學習到大量源代碼中的命名規則,如算法1所示。源代碼中導入的模塊用“MOULE”標記其類型名,庫函數用“LIBRARY”標記其類型名,自定義標識符用“VARIABLE”標記其類型名,關鍵字用其自身大寫標記其類型名,且它們與各自的節點值(即token)相對應。受Izadi等人[24,25]的啟發,為了規范化輸入序列,將文本中的字符串統一使用特殊標記“STRING”表示,將數字統一使用特殊標記“NUMBER”表示,操作符號用“OP”表示。對于每個節點,使用“type:value”的形式來表示;對于不具有“value”屬性的節點,使用特殊符號“EMPTY”來表示。采用前序深度優先遍歷算法將每個節點序列化。使用AST轉換源代碼片段方法如圖2所示。

c)BPE處理。除了使用AST的處理方式外,在語句預測任務中使用BPE(Byte pair encoder)編碼,BPE編碼是一種數據壓縮算法,用來在固定大小的詞匯表中實現可變長度的子詞;利用分詞原理,BPE迭代地合并最頻繁出現的字符序列。在實際應用中語料庫往往非常巨大,而詞匯表無法包含每一個詞匯,利用BPE編碼便可有效地平衡詞典大小和編碼步驟以解決OoV問題。

預處理階段將產生兩個文件,即源代碼中以“type:value”表示的序列文件和去除掉空行和注釋的源代碼文本文件。

2.2 模型訓練

模型訓練階段同時進行三個預測任務的學習,即節點類型預測、節點值預測和語句預測。MTLCC模型由三組GPT-2構成,每個模型使用隨機權重初始化且都有自身對應的輸入序列和訓練目標,如圖3所示。訓練期間采用每個epoch分配隨機任務的策略,節點類型預測任務、節點值預測任務和語句預測任務的分配概率分別為20%、40%和40%。由于節點類型預測任務的詞匯量非常有限,所以分配更少的epoch。三個任務的損失在訓練期間共享,調整參數以最小化三個任務之間的交叉損失熵的平均值。

3 實驗及分析

3.1 數據集

針對Python代碼補全任務,為了公平地與基準模型方法進行對比實驗,在兩個數據集上進行實驗來評估模型,分別從Github上收集開源Python項目而構建的個人數據集(PY190K)和公共數據集(PY150K)。其中PY150K曾用于文獻[10,14,26]的實驗中。PY150K包含15萬個程序源代碼文件,并且被解析為與源代碼文件相對應的AST文件存儲。文獻[10,14]在實驗中使用了以AST格式存儲的PY150K,文獻[26]的實驗中使用了未解析的PY150K。訓練集和測試集按照80%和20%的比例分配,表1展示了這兩個數據集的內容。

3.2 實驗參數和設備

在轉換工具中使用Python中的AST庫和Tokenize庫,使用HuggingFace庫實現GPT-2網絡和MTL模型。本文選用50 257個常見的詞匯為數據集構建詞匯表。對于模型部分,采用了12層的GPT-2網絡,包括12個head部分。在模型訓練中使用了交叉熵損失和Adam優化器,最初的學習率設置為0.000 01,epoch設置為200,最大序列長度設置為1 024,其余參數設置為默認值。實驗在配置有63 GB內存、32 GB顯存的Tesla V100-SXM2和Intel Xeon CPU E5-2698 v4的10核服務器上進行。

3.3 評估指標

a)準確率。在節點類型和節點值預測任務中,模型為源代碼文件中給定上文中每個節點的類型或值提供一個有序的建議列表。

其中:recommendationstrue表示各候選代碼中得到正確的補全結果;recommendationsall表示所有的補全結果數。準確率的K值一般取1、3、5和10,當K值越大時,準確率的值也會越大,但為了更準確地體現模型對于節點類型和節點值的預測能力,本文取準確率的K=1作為補全結果的評估指標。

b)MRR(mean reciprocal rank)。它是以正確補全結果第一次出現在整個建議列表中的排名為標準(例如若排名為n,則MRR的值為1/n)。對于測試數據中的所有待補全的N個token,MRR取所有測試補全MRR得分的平均數。本文取K=10作為MRR評估指標。

c)在語句預測任務中使用文本摘要生成任務中的指標ROUGE-L。ROUGE是一種基于召回率的相似性度量方法,它計算模型生成文本的n元組(n-gram)和參考文本的共現概率。ROUGE-L是ROUGE度量的變體之一,使用最長公共子序列算法計算最長匹配的單詞序列,考慮了句子級別的結構相似性,并自動識別序列n-gram的最長共現鏈。

3.4 實驗結果及分析

代碼補全模型最基本的評估形式就是評估其在被給定一段上文作為輸入的情況下預測下一個標記的能力。本文選取了四組模型作為對照實驗,分別將Pointer network[7]、LSTM+TransformerXL[14]和CodeGPT[26]作為基線模型。其中,節點類型預測任務只選取Pointer network和LSTM+TransformerXL作為指標評估的基線模型,因為這兩個方法都使用了AST抽取源代碼,并且分別在節點類型預測任務上進行實驗;CodeGPT只針對生成token的值預測進行訓練。

表2展示了本文模型和基準模型對于節點類型預測任務分別在PY190K和PY150K數據集上的準確率和MRR結果。結果顯示,在PY150K數據集上的節點類型預測中,所有模型的準確率在64.3%~79.2%,MRR在67.9%~82.4%。而在基于PY190K數據集的實驗中,所有模型準確率和MRR分別在68.4%~81.0%和70.8%~85.1%。節點類型預測任務中的詞匯量非常有限,在越多的AST節點類型數據訓練下,預測的準確率效果會隨之提升。MTLCC提取了源代碼中的結構信息和命名信息,在這些節點類型預測任務上展現出了優勢,比其他模型更能準確地預測出下一個節點的類型。

在節點值預測任務中,不考慮節點的類型,只針對于模型預測下一個token的準確性和MRR。節點值預測結果如表3所示,由于MTLCC采用MTL的訓練方式,使得節點類型和節點值之間的模型訓練能夠相互學習,從而促進了模型對于節點值預測任務的學習。在基于PY150K數據集的實驗中,本文方法比最好的CodeGPT模型準確率和MRR分別提升了1.5%和2.0%;而在PY190K數據集中分別提升了1.7%和2.4%。由此可見,相比于采用單個GPT-2模型(即CodeGPT)的代碼補全任務,本文提出的源代碼預處理方式和MTL學習策略是具有優勢的。此外,當數據集越大、AST節點越多時,MTLCC相比于其他基準模型能夠學習到更多且正向提升其節點值預測性能。

在語句預測任務中,將源代碼視為自然語言文本,通過評估模型生成的文本片段來展示模型對于語句預測的性能。當語句長度為L@1時(即只生成一個token),所有模型的ROUGE-L分數都可能會達到1,所以在L@1時沒有意義。這里分別取生成的語句長度為L@2、L@4和L@6,基于不同長度的語句,采集每個模型生成樣本與測試集中的標簽對照,最終取ROUGE-L均值作為評估結果。表4展示了本文模型在語句預測任務中的ROUGE-L效果。結果顯示,所有模型在生成語句長度越短時,所生成文本的得分越高(即模型對下一段代碼的預測越準確);反之,則越低。基于自注意力機制的模型相對于指針混合網絡模型來說表現得更好,這是因為前者對于語句的長依賴關系具有更好的捕捉能力。本文方法在所有模型中展現出優勢,并且在token長度為4的語句中達到最好效果,比最好的基線模型高出0.055的分數。

表5給出了MTLCC模型的部分代碼補全實例,其中包括作為上文輸入的代碼片段(CS)、補全結果(CR)、參考文本(RT)和補全語句的ROUGE-L得分(score)。在輸入輸出代碼中,“/n”符號表示換行符。從表5代碼補全實例中可以看出,MTLCC模型可以有效學習已定義方法中的參數或變量,并且在給出較長的上文代碼片段的情況下,模型補全的代碼也會越具有“預見性”,能夠準確補全整行代碼,不僅僅局限于下一個token。然而,MTLCC模型缺點在于當給出的上文代碼片段較少時,模型難以推理出最準確的補全結果,從而生成不相關補全結果。

4 結束語

程序中的源代碼相對于自然語言來說更具有規律和結構性,單一地將源代碼視為自然語言會剝奪其編程語言特性,不利于模型對下一個(或多個)token的預測。本文提出了MTLCC,一種基于多任務學習的代碼補全方法。MTLCC基于GPT-2網絡,采用軟參數共享學習方式在三個任務(即節點類型預測任務、節點值預測任務和語句預測任務)上進行訓練,并在這三個任務上分別進行指標評估。實驗結果表明,與三個基線模型相比,本文方法在所有任務中達到了最好的效果。

未來的代碼補全工作中可考慮將源代碼的語義信息包含到預測任務中,并且利用與源代碼相關信息(如代碼注釋)來提高代碼補全的準確性。

參考文獻:

[1]楊博,張能,李善平,等.智能代碼補全研究綜述[J].軟件學報,2020,31(5):1435-1453.(Yang Bo,Zhang Neng,Li Shanping,et al.Survey of intelligent code completion[J].Journal of Software,2020,31(5):1435-1453.)

[2]Murphy GC,Kersten M,Findlater L.How are Java software developers using the Ellipse IDE?[J].IEEE Software,2006,23(4):76-83.

[3]胡星,李戈,劉芳,等.基于深度學習的程序生成與補全技術研究進展[J].軟件學報,2019,30(5):1206-1223.(Hu Xing,Li Ge,Liu Fang,et al.Program generation and code completion techniques based on deep learning:literature review[J].Journal of Software,2019,30(5):1206-1223.)

[4]Hindle A,Barr E T,Su Zhendong,et al.On the naturalness of software[C]//Proc of the 34th International Conference on Software Engineering.Piscataway,NJ:IEEE Press,2012:837-847.

[5]Raychev V,Vechev M T,Yahav E.Code completion with statistical language models[C]//Proc of the 35th ACM SIGPLAN Conference on Programming Language Design and Implementation.New York:ACM Press,2014:419-428.

[6]Allamanis M,Sutton C.Mining source code repositories at massive scale using language modeling[C]//Proc of the 10th Working Confe-rence on Mining Software Repositories.Piscataway,NJ:IEEE Press,2013:207-216.

[7]Franks C,Tu Zhaopeng,Devanbu P T,et al.CACHECA:a cache language model based code suggestion tool[C]//Proc of the 37th IEEE/ACM International Conference on Software Engineering.Piscataway,NJ:IEEE Press,2015:705-708.

[8]Tu Zhaopeng,Su Zhendong,Devanbu P T.On the localness of software[C]//Proc of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering.New York:ACM Press,2014:269-280.

[9]Hellendoorn V J,Devanbu P T.Are deep neural networks the best choice for modeling source code?[C]//Proc of the 11th Joint Mee-ting on Foundations of Software Engineering.New York:ACM Press,2017:763-773.

[10]Li Jian,Wang Yue,Michael R L,et al.Code completion with neural attention and Pointer networks[C]//Proc of the 27th International Joint Conference on Artificial Intelligence.Palo Alto,CA:AAAI Press,2018:4159-4165.

[11]Liu Chang,Wang Xin,Richard S,et al.Neural code completion[EB/OL].(2016-11-05).https://openreview.net/forum?id=rJbPBt9lg.

[12]Khandelwal U,He He,Peng Qi,et al.Sharp nearby,fuzzy far away:how neural language models use context[C]//Proc of the 56th Annual Meeting of the Association for Computational.Stroudsburg,PA:Association for Computational Linguistics Press,2018:284-294.

[13]Svyatkovskiy A,Deng Shaokun,Fu Shengyu,et al.IntelliCode compose:code generation using transformer[C]//Proc of the 28th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering.New York:ACM Press,2020:1433-1443.

[14]Liu Fang,Li Ge,Wei Bolin,et al.A self-attentional neural architecture for code completion with multi-task learning[C]//Proc of the 28th International Conference on Program Comprehension.New York:ACM Press,2020:37-47.

[15]Devlin J,Chang Mingwei,Toutanova K,et al.BERT:pre-training of deep bidirectional transformers for language understanding[C]//Proc of Conference of the North American Chapter of the Association for Computational Linguistics:Human Language Technologies.Stroudsburg,PA:Association for Computational Linguistics Press,2019:4171-4186.

[16]Vaswani A,Shazeer N,Parmar N,et al.Attention is all you need[EB/OL].(2017-12-06).http://doi.org/10.48550/arxiv.1706.03762.

[17]Luong T,Pham H,Manning C D.Effective approaches to attention-based neural machine translation[C]//Proc of Conference on Empirical Methods in Natural Language Processing.Stroudsburg,PA:Association for Computational Linguistics Press,2015:1412-1421.

[18]Radford A,Narasimhan K,Salimans T,et al.Improving language understanding by generative pre-training[EB/OL].(2019-06-16).https://www.gwern.net/docs/www/s3-us-west-2.amazonaws.com/d73fdc5ffa8627bce44dcda2fc012da638ffb158.pdf.

[19]Yang Zhilin,Dai Zihang,Yang Yiming,et al.XLNet:generalized autoregressive pretraining for language understanding[C]//Proc of the 33rd International Conference on Neural Information Processing Systems.2019:5753-5763.

[20]Dong Daxiang,Wu Hua,He Wei,et al.Multi-task learning for multiple language translation[C]//Proc of the 53rd Annual Meeting of the Association for Computational Linguistics and the 7th International Joint Conference on Natural Language Processing.Stroudsburg,PA:Association for Computer Linguistics Press,2015:1723-1732.

[21]Peng Nanyun,Dredze M.Multi-task domain adaptation for sequence tagging[C]//Proc of the 2nd Workshop on Representation Learning for NLP.Stroudsburg,PA:Association for Computer Linguistics Press,2017:91-100.

[22]Lin Ying,Yang Shengqi,Stoyanov V,et al.A multi-lingual multi-task architecture for low-resource sequence labeling[C]//Proc of the 56th Annual Meeting of the Association for Computational Linguistics.Stroudsburg,PA:Association for Computer Linguistics Press,2018:799-809.

[23]Guo Han,Pasunuru R,Bansal M.Soft layer-specific multi-task summarization with entailment and question generation[C]//Proc of the 56th Annual Meeting of the Association for Computational Linguistics.Stroudsburg,PA:Association for Computer Linguistics Press,2018:687-697.

[24]Izadi M,Heydarnoori A,Gousios G.Topic recommendation for software repositories using multi-label classification algorithms[J].Empirical Software Engineering,2021,26(5):1-33.

[25]Izadi M,Gismondi R,Gousios G.CodeFill:multi-token code completion by jointly learning from structure and naming sequences[C]//Proc of the 44th IEEE/ACM International Conference on Software Engineering.Piscataway,NJ:IEEE Press,2022:401-412.

[26]Lu Shuai,Guo Daya,Ren Shuo,et al.CodeXGLUE:a machine lear-ning benchmark dataset for code understanding and generation[EB/OL].(2021-03-16).http://doi.org/10.48550/arxiv.2102.04664.

收稿日期:2022-08-05;修回日期:2022-10-10 基金項目:四川省重點研發項目(2020YFG0299)

作者簡介:帥祥(1996-),男,四川成都人,碩士研究生,主要研究方向為智能服務、大數據;魏樂(1979-),男(通信作者),河南鄭州人,副教授,碩導,碩士,主要研究方向為智能服務、云制造、大數據(weile@cuit.edu.cn);舒紅平(1974-),男,重慶人,教授,博導,博士,主要研究方向為軟件工程、數據挖掘、企業信息化.

主站蜘蛛池模板: 91丨九色丨首页在线播放| 中文字幕欧美日韩| 免费va国产在线观看| 欧美日本中文| 自拍偷拍欧美日韩| 亚洲一区二区在线无码| 欧美成人怡春院在线激情| 久热精品免费| 中文字幕欧美成人免费| 一本久道久综合久久鬼色| 伊人久久大香线蕉影院| 无码内射中文字幕岛国片| 国产乱码精品一区二区三区中文 | 欧美中文字幕第一页线路一| 91亚洲国产视频| 亚洲成人播放| 成人在线综合| 狠狠色综合久久狠狠色综合| 欧美伦理一区| 日本三区视频| 又猛又黄又爽无遮挡的视频网站| 四虎在线观看视频高清无码 | 精品国产中文一级毛片在线看 | 亚洲天堂网2014| 国产XXXX做受性欧美88| 亚洲色欲色欲www在线观看| 日韩色图在线观看| 国产另类视频| av色爱 天堂网| 91久久偷偷做嫩草影院精品| 国产呦视频免费视频在线观看| 国产成人综合久久精品尤物| 尤物视频一区| 777午夜精品电影免费看| 视频一本大道香蕉久在线播放 | 亚洲天堂视频在线免费观看| 黄片一区二区三区| 91小视频版在线观看www| 精品91自产拍在线| 亚洲动漫h| 第九色区aⅴ天堂久久香| 欧美一级专区免费大片| 国产成人无码综合亚洲日韩不卡| 日本成人在线不卡视频| 亚洲 欧美 中文 AⅤ在线视频| 国产婬乱a一级毛片多女| 五月天综合婷婷| 91人妻在线视频| 四虎永久在线精品国产免费| 不卡无码h在线观看| 久久夜色精品国产嚕嚕亚洲av| 精品久久香蕉国产线看观看gif | 思思99热精品在线| 国产成人高清精品免费| 国产18在线| 福利小视频在线播放| 国产精品一区二区在线播放| 国产主播福利在线观看| 国产成人高清精品免费5388| 欧美日韩国产在线播放| 亚洲国产日韩一区| 无码精品福利一区二区三区| 欧美精品不卡| 亚洲大尺度在线| 人妖无码第一页| 真实国产精品vr专区| 2020亚洲精品无码| 一区二区三区成人| 国产福利影院在线观看| 国产特级毛片| 亚洲人成网站色7777| 91免费精品国偷自产在线在线| 亚洲AV无码久久天堂| 东京热高清无码精品| 久久久久无码精品| 精品国产亚洲人成在线| 色偷偷av男人的天堂不卡| 亚洲第一国产综合| 国产精品性| 久久综合结合久久狠狠狠97色| 国产门事件在线| 伊人激情久久综合中文字幕|