核心概念
雖然大型語言模型 (LLM) 如 ChatGPT 在程式碼縮寫詞擴展方面具有潛力,但若無適當調整,其準確性仍遠不及專用工具。本研究提出了一種基於 ChatGPT 的縮寫詞擴展方法,透過提供周圍程式碼作為上下文、標記遺漏的縮寫詞以及進行後置條件檢查等措施,顯著提高了 ChatGPT 的效能,使其達到與最先進工具相當的水平。
摘要
論文資訊
- 標題:基於ChatGPT的縮寫詞擴展評估與改進
- 作者:Yanjie Jiang, Hui Liu, Lu Zhang
研究目標
本研究旨在探討大型語言模型 (LLM) ChatGPT 在程式碼縮寫詞擴展方面的潛力與限制,並提出改進措施以提升其效能。
研究方法
本研究以一個公開的 Java 程式碼縮寫詞資料集為基準,採用 few-shot prompting 的方式,評估 ChatGPT 在不同設定下的縮寫詞擴展效能。研究人員首先使用基本提示評估 ChatGPT 的效能,接著分析錯誤案例以找出失敗原因,並根據分析結果提出了一系列改進措施,包括提供不同類型的上下文資訊、標記遺漏的縮寫詞以及進行後置條件檢查等。
主要發現
- ChatGPT 在未經調整的情況下,雖然能正確擴展超過一半的縮寫詞,但其準確性遠不及專用工具。
- ChatGPT 失敗的主要原因是缺乏上下文資訊以及無法識別縮寫詞。
- 提供周圍程式碼作為上下文資訊能顯著提升 ChatGPT 的效能,其效果甚至優於提供完整的封裝檔案或知識圖譜。
- 透過識別並標記遺漏的縮寫詞,可以進一步提升 ChatGPT 的召回率。
- 進行後置條件檢查可以排除違反常識的錯誤擴展,進一步提升 ChatGPT 的精確度。
主要結論
- 透過適當的調整,基於 ChatGPT 的縮寫詞擴展方法可以達到與最先進工具相當的效能。
- 相較於需要進行程式碼解析和分析的專用工具,基於 ChatGPT 的方法更易於使用且效率更高。
研究意義
本研究揭示了大型語言模型在程式碼縮寫詞擴展方面的潛力,並提出了一種基於 ChatGPT 的有效方法,為開發人員提供更便捷、高效的程式碼理解和維護工具。
研究限制與未來方向
- 本研究僅針對 Java 程式碼進行評估,未來可擴展至其他程式語言。
- 未來可探討其他大型語言模型在縮寫詞擴展方面的效能。
- 可將本研究提出的方法應用於其他軟體工程任務,例如程式碼補全和 API 推薦。
統計資料
程式碼識別符號約佔原始碼字元的 70%。
ChatGPT 在未經調整的情況下,精確率為 64%,召回率為 61%。
最先進的縮寫詞擴展工具 tfExpander 的精確率為 92%,召回率為 89%。
將封裝檔案作為上下文資訊添加到提示中,可以將精確率提高 19 個百分點,召回率提高 20 個百分點。
將知識圖譜作為上下文資訊添加到提示中,可以將精確率提高 25 個百分點,召回率提高 24 個百分點。
將周圍程式碼作為上下文資訊添加到提示中,可以將精確率提高 25 個百分點,召回率提高 26 個百分點。
識別並標記遺漏的縮寫詞可以將召回率提高 2 個百分點。
進行後置條件檢查可以將精確率提高 2 個百分點。