基于數(shù)據(jù)驅動的學生程序代碼推薦
發(fā)布時間:2021-10-14 10:25
本文研究了代碼推薦的方法,針對高校C語言課程的編程練習,在學生編寫程序過程中提供不同粒度的代碼推薦方案。學生練習編寫程序過程中會由于編程經驗不足、語法不熟悉等原因突然暫停住,又因為不能及時得到老師同學的幫助,不知道下一步的編程思路,給學生的編程學習造成很大困難。一些集成開發(fā)環(huán)境(IDE)都包含了代碼推薦功能,但是IDE通常是基于編程語言的靜態(tài)類型分析對屬性、方法和參數(shù)列表的推薦,所提出的代碼方案往往與當前的編程上下文環(huán)境無關,并且這些推薦的結果是按照字母順序排列的,沒有考慮推薦結果與當前環(huán)境上下文的相關性。本課題利用人工智能技術和在線編程課程提供的大量參考代碼,研究代碼推薦方法及其在學生編程指導中的應用。利用大量正確的學生程序,通過人工智能算法,從單詞、句子、和代碼塊三個不同粒度學習程序的內在結構邏輯和編程模式,從而根據(jù)程序的當前上下文,對編程困難的學生提供編程幫助。針對上述問題,本文完成了如下工作:基于循環(huán)神經網(wǎng)絡的token詞推薦。此方法根據(jù)當前程序上下文的token序列推薦下一個token詞。利用詞法分析將程序token化,對token進行標準化以減少代碼多樣性的影響。利用循環(huán)神...
【文章來源】:哈爾濱工業(yè)大學黑龍江省 211工程院校 985工程院校
【文章頁數(shù)】:71 頁
【學位級別】:碩士
【部分圖文】:
代碼推薦流程圖
哈爾濱工業(yè)大學碩士學位論文2.2 相關技術與理論2.2.1 循環(huán)神經網(wǎng)絡簡介在最初的神經網(wǎng)絡模型-全連接網(wǎng)絡中,層與層之間是完全連接的,但是層內的節(jié)點是相互分開的。全連接網(wǎng)絡對于一些序列問題不能很好的處理。例如,在處理一個句子中的下一個單詞的預測的問題時,全連接網(wǎng)絡就無能為力。因為句子中的單詞通常不是相互無關獨立的,當前單詞的預測通常要用到前面的幾個單詞。循環(huán)神經網(wǎng)絡是為了處理序列數(shù)據(jù)而提出的,表現(xiàn)的具體形式為網(wǎng)絡能夠記憶先前的信息并將其應用于當前輸出的計算,即隱藏層之間的節(jié)點不再相互獨立而是連接的,并且隱藏層的輸入不僅包括輸入層的輸出,還包括前一時刻的隱藏層的輸出[24]。理論上,RNN 可以處理任何長度的序列數(shù)據(jù)。然而在實際使用中,為了降低復雜性,通常假設當前狀態(tài)僅與先前的幾個狀態(tài)相關,傳統(tǒng)循環(huán)神經網(wǎng)絡結構如圖 2-1 所示。
哈爾濱工業(yè)大學碩士學位論文經網(wǎng)絡中在 t 時間步內的運行流程如圖 2-2 所示,輸入藏層 ht-1和當前時間步的輸入 xt的級聯(lián),其中 ht-1是一個開始的時間步 0 到上一時間步 t-1 的歷史信息,xt是輸入詞向量 xt與以前的歷史信息 ht-1相結合,生成當前的隱歷史向量 ht,基于當前的 ht,可以預測下一個出現(xiàn)某個單出層 ot。總之,新的歷史信息 ht被用于對未來的預測, xt進行更新。
【參考文獻】:
期刊論文
[1]基于深度學習的程序生成與補全技術研究進展[J]. 胡星,李戈,劉芳,金芝. 軟件學報. 2019(05)
[2]一種C程序代碼相似度檢測方法[J]. 王卉. 福建電腦. 2018(06)
[3]一種程序源代碼相似度度量方法[J]. 古平,張鋒,周海濤. 計算機工程. 2012(06)
[4]程序代碼相似度度量的研究與實現(xiàn)[J]. 于海英. 計算機工程. 2010(04)
本文編號:3435975
【文章來源】:哈爾濱工業(yè)大學黑龍江省 211工程院校 985工程院校
【文章頁數(shù)】:71 頁
【學位級別】:碩士
【部分圖文】:
代碼推薦流程圖
哈爾濱工業(yè)大學碩士學位論文2.2 相關技術與理論2.2.1 循環(huán)神經網(wǎng)絡簡介在最初的神經網(wǎng)絡模型-全連接網(wǎng)絡中,層與層之間是完全連接的,但是層內的節(jié)點是相互分開的。全連接網(wǎng)絡對于一些序列問題不能很好的處理。例如,在處理一個句子中的下一個單詞的預測的問題時,全連接網(wǎng)絡就無能為力。因為句子中的單詞通常不是相互無關獨立的,當前單詞的預測通常要用到前面的幾個單詞。循環(huán)神經網(wǎng)絡是為了處理序列數(shù)據(jù)而提出的,表現(xiàn)的具體形式為網(wǎng)絡能夠記憶先前的信息并將其應用于當前輸出的計算,即隱藏層之間的節(jié)點不再相互獨立而是連接的,并且隱藏層的輸入不僅包括輸入層的輸出,還包括前一時刻的隱藏層的輸出[24]。理論上,RNN 可以處理任何長度的序列數(shù)據(jù)。然而在實際使用中,為了降低復雜性,通常假設當前狀態(tài)僅與先前的幾個狀態(tài)相關,傳統(tǒng)循環(huán)神經網(wǎng)絡結構如圖 2-1 所示。
哈爾濱工業(yè)大學碩士學位論文經網(wǎng)絡中在 t 時間步內的運行流程如圖 2-2 所示,輸入藏層 ht-1和當前時間步的輸入 xt的級聯(lián),其中 ht-1是一個開始的時間步 0 到上一時間步 t-1 的歷史信息,xt是輸入詞向量 xt與以前的歷史信息 ht-1相結合,生成當前的隱歷史向量 ht,基于當前的 ht,可以預測下一個出現(xiàn)某個單出層 ot。總之,新的歷史信息 ht被用于對未來的預測, xt進行更新。
【參考文獻】:
期刊論文
[1]基于深度學習的程序生成與補全技術研究進展[J]. 胡星,李戈,劉芳,金芝. 軟件學報. 2019(05)
[2]一種C程序代碼相似度檢測方法[J]. 王卉. 福建電腦. 2018(06)
[3]一種程序源代碼相似度度量方法[J]. 古平,張鋒,周海濤. 計算機工程. 2012(06)
[4]程序代碼相似度度量的研究與實現(xiàn)[J]. 于海英. 計算機工程. 2010(04)
本文編號:3435975
本文鏈接:http://sikaile.net/kejilunwen/ruanjiangongchenglunwen/3435975.html
最近更新
教材專著