首页
/
每日頭條
/
科技
/
推特推薦算法代碼
推特推薦算法代碼
更新时间:2025-11-19 13:49:57

  曉查 發自 凹非寺

  量子位 報道 | 公衆号 QbitAI

  “如何關閉或隐藏Android軟鍵盤?”

  如果你是個Android入門開發者,去Stack Overflow論壇去尋找上非常熱門的Android開發問題,很快會有别人貼出一段代碼。

  推特推薦算法代碼(自動給你推薦代碼)(1)

  遇到編程問題,程序員恐怕首先想到的是去技術論壇搜索結果,然後從回答中尋找代碼。

  然而有很多冷門問題,通常并不會在論壇中讨論,如果能在廣闊的GitHub代碼庫中快速找到答案就好了。

  為此,Facebook開發了一種代碼搜索工具,可将自然語言處理(NLP)和信息檢索(IR)技術直接應用于源代碼文本。

  這套工具稱為神經代碼搜索(NCS),它接受自然語言形式的查詢,并直接從GitHub庫中檢索返回相關代碼片段。

  除了NCS之外,另外還有一種用監督數據提高網絡性能的UNIF

  小試牛刀

  Facebook使用Stack Overflow上Android開發的問題評估NCS的性能,看看模型是否能夠從GitHub中找到正确的答案。

  在Stack Overflow評估數據集中的287個問題中,NCS的前10個查詢結果能夠正确回答175個問題,占整個數據集的60%以上。與傳統的信息檢索技術BM25相比,有了非常大的提升。

  推特推薦算法代碼(自動給你推薦代碼)(2)

  我們将NCS和UNIF與Stack Overflow評估數據集進行比較,證實UNIF改善了大大超過NCS回答的問題數量。

  推特推薦算法代碼(自動給你推薦代碼)(3)

  結果顯示監督技術在獲得理想的訓練語料庫時可以提供的更優的搜索性能。

  例如,搜索查詢“如何退出應用程序并顯示主屏幕”這個問題,NCS返回:

  public void showHomeScreenDialog(View view) { intent nextScreen = new Intent(getApplicationContext(), HomeScreenActivity.class); startActivity(nextScreen); }

  而UNIF提供了更适合的代碼段:

  public void clickExit(MenuItem item) { Intent intent=new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); metr.stop(); startActivity(intent); finish(); }

  原理

  Facebook利用了開源AI工具fastText、FAISS和PyTorch,NCS和UNIF将自然語言查詢和代碼片段表示為向量,然後訓練網絡,使得語義相似的代碼片段和查詢的向量表示緊密相連在向量空間。

  通過這些模型,可以直接從代碼語料庫中找到代碼片段,有效地回答程序員的問題。

  NCS

  NCS模型通過使用嵌入來獲取程序語義,在向量空間中語義相似的實體具有彼此接近的期望屬性。在下面的例子裡,有兩個不同的代碼,它們都與關閉或隐藏Android鍵盤有關。由于它們具有相似的語義含義,即使它們代碼不完全相同,再向量空間中的距離也很近。

  推特推薦算法代碼(自動給你推薦代碼)(4)

  Facebook使用這個概念來構建NCS模型。在高級别中,模型生成的每個代碼片段以方法級粒度嵌入到向量空間中。構建模型後,某個查詢将映射到同一向量空間,向量距離用于估計代碼段與查詢的相關性。

  推特推薦算法代碼(自動給你推薦代碼)(5)

  要生成模型,NCS必須提取單詞,構建單詞嵌入,然後構建文檔嵌入。

  推特推薦算法代碼(自動給你推薦代碼)(6)

  為了生成表示代碼的向量,Facebook将源代碼視為文本,并從以下語法類别中提取:方法名稱,方法調用,枚舉,字符串文字和注釋。然後我們根據标準英語慣例(例如空格,标點符号)和與代碼相關的标點符号對其進行标記。

  例如,對于上圖中的方法體“pxToDp”,可以将源代碼視為單詞集合:“将dp px中的px轉換為dp獲取資源、獲取顯示指标”。

  fastText為詞彙語料庫中的所有單詞構建單詞嵌入。fastText使用兩層密集神經網絡計算向量表示,該網絡可以在大型語料庫上無人監督地進行訓練。

  而UNIF是NCS的擴展,當有監督數據可用于訓練時,可以用來提高性能。

  在GitHub上挑選26,109個最受歡迎的Android項目,直接在搜索語料庫上訓練我們的無監督模型NCS。這也成為NCS返回代碼片段的搜索語料庫。

  至于UNIF模型,我Facebook提取Stack Overflow論壇中問題标題和代碼片段來獲取數據集。在使用各種啟發式過濾問題後,最終得到451,000個訓練樣本。

  論文地址:

  htt

Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
服務區互通可以掉頭嗎
服務區互通可以掉頭嗎
1、這種在服務區掉頭的方式不算違章,但是建議大家也不要輕易嘗試。2、大部分的高速公路服務區都會有互通通道,設置這個通道的作用是為了方便兩邊服務區的物資調用,或者給交通執法部門使用,是屬于内部通道,并不對外開放使用的。3、即便有車主運氣好,利用互通通道成功掉頭了,但是在出收費口時也會遇到麻煩,因為一般高速公路都是按照公裡來收費的,這樣掉頭會導緻計費方式比較麻煩,不僅多收費,也可能會受到交警部門的警告
2025-11-19
抖音怎麼拍視頻教程
抖音怎麼拍視頻教程
1、首先打開【抖音短視頻】APP,然後點擊底部【+】圖标進入拍攝頁面,接着選擇拍攝視頻的時長、濾鏡、...
2025-11-19
黃瓜白粉虱有什麼防治方法
黃瓜白粉虱有什麼防治方法
1、習性症狀。白粉虱成蟲對黃色有強烈趨性,但忌白色、銀白色,在田間首先是一點點的發生,然後在逐步擴散,田間蟲口密度分布均勻,成蟲喜群集于植株上部嫩葉背面并在其上産卵,不易脫落。随着植株的生長,成蟲不斷向上部葉片轉移,所以會産生一定的規律:最上部的嫩葉一成蟲和初産的淡黃色卵為最多,稍下部的葉片多為深褐...
2025-11-19
手機裡面的其他文件怎麼删除不了怎麼辦
手機裡面的其他文件怎麼删除不了怎麼辦
1、首先進入ES文件管理器。2、點【分析】,進入分析内部存儲空間文件。3、分析後,點【回收站】的【詳...
2025-11-19
充電器不支持此配件怎麼辦
充電器不支持此配件怎麼辦
1、第一種可能你的線有問題,肯定不是原裝的數據線,現在蘋果對山寨數據線封殺,用幾天就會被檢測出不是原...
2025-11-19
Copyright 2023-2025 - www.tftnews.com All Rights Reserved