GitHub'dan kod aramak için doğal dili kullanın, forum sorgulama oturumunu atlayın, Facebook'ta yeni araştırma

İçbükey tapınaktan Xiaocha

Qubit Raporu | Genel Hesap QbitAI

"Android yazılım klavyesi nasıl kapatılır veya gizlenir?"

Yeni başlayan bir Android geliştiricisiyseniz, çok popüler Android geliştirme soruları bulmak için Stack Overflow forumuna gidin. Birisi yakında bir kod parçası gönderecek.

Programlama problemleriyle karşılaştıklarında, programcıların aklına ilk gelen şey, teknik forumların sonuçlarını aramak ve ardından cevaplardan kodları aramaktır.

Ancak, genellikle forumda tartışılmayan pek çok popüler olmayan soru var.Yanıtı geniş GitHub kod tabanında hızlı bir şekilde bulabilirseniz iyi olur.

Bu amaçla Facebook, doğal dil işleme (NLP) ve bilgi alma (IR) teknolojilerini doğrudan kaynak kod metnine uygulayabilen bir kod arama aracı geliştirdi.

Bu araç setine Sinirsel kod araması (NCS), doğal dil sorgularını kabul eder ve ilgili kod parçacıklarını doğrudan GitHub deposundan alır ve döndürür.

NCS'ye ek olarak, ağ performansını iyileştirmek için denetim verilerini kullanan başka bir yöntem vardır. UNIF .

Küçük ölçekli kıyıcı

Facebook, modelin GitHub'dan doğru yanıtı bulup bulamayacağını görmek için NCS'nin performansını değerlendirmek için Stack Overflow'da Android tarafından geliştirilen soruları kullanır.

Stack Overflow değerlendirme veri setindeki 287 soru arasında, NCS'nin en iyi 10 sorgu sonucu 175 soruya doğru cevap verebilir ve tüm veri setinin% 60'ından fazlasını oluşturur. Geleneksel bilgi erişim teknolojisi BM25 ile karşılaştırıldığında, büyük ölçüde geliştirildi.

NCS ve UNIF'i Stack Overflow değerlendirme veri seti ile karşılaştırdık ve UNIF'in NCS'den daha fazla cevaplanan soru sayısını artırdığını doğruladık.

Sonuçlar, denetleme teknolojisinin ideal bir eğitim külliyatını elde ederken daha iyi arama performansı sağlayabileceğini göstermektedir.

Örneğin, "Uygulamadan nasıl çıkılır ve ana ekran nasıl görüntülenir" sorusu aranırken, NCS şunu döndürür:

public void showHomeScreenDialog (Görünümü Görüntüle) { Intent nextScreen = new Intent (getApplicationContext (), HomeScreenActivity.class); startActivity (nextScreen); }

Ve UNIF daha uygun bir kod segmenti sağlar:

public void clickExit (MenuItem öğesi) { Amaç amaç = yeni Amaç (Amaç.ACTION_MAIN); intent.addCategory (Intent.CATEGORY_HOME); intent.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK); metr.stop (); startActivity (amaç); bitiş(); }

prensip

Facebook, doğal dil sorgularını ve kod parçalarını vektör olarak ifade etmek için açık kaynaklı yapay zeka araçları fastText, FAISS ve PyTorch, NCS ve UNIF kullanır ve daha sonra, semantik olarak benzer kod parçaları ve sorgunun vektör gösteriminin vektör uzayında yakından bağlantılı olması için ağı eğitir.

Bu modeller aracılığıyla kod parçaları, programcıların sorularını etkili bir şekilde yanıtlayarak doğrudan kod külliyatından bulunabilir.

NCS

NCS modeli, program anlambilimini elde etmek için katıştırmayı kullanır ve vektör uzayında benzer anlambilimlere sahip varlıklar birbirine yakın beklenen özniteliklere sahiptir. Aşağıdaki örnekte, her ikisi de Android klavyeyi kapatmak veya gizlemekle ilgili iki farklı kod bulunmaktadır. Benzer anlamsal anlamlara sahip oldukları için, kodları tam olarak aynı olmasa bile, vektör uzayındaki uzaklık çok yakındır.

Facebook, NCS modelini oluşturmak için bu kavramı kullanır. Yüksek düzeyde, model tarafından oluşturulan her kod parçası, yöntem düzeyinde ayrıntı düzeyiyle vektör uzayına gömülür. Model oluşturulduktan sonra, belirli bir sorgu aynı vektör uzayına eşlenecek ve vektör mesafesi, kod segmenti ile sorgu arasındaki ilişkiyi tahmin etmek için kullanılacaktır.

Bir model oluşturmak için NCS'nin kelimeleri çıkarması, kelime düğünleri oluşturması ve ardından belge yerleştirmeleri oluşturması gerekir.

Facebook, kodu temsil eden bir vektör oluşturmak için kaynak kodunu metin olarak ele alır ve aşağıdaki dilbilgisi kategorilerinden çıkarır: yöntem adı, yöntem çağrısı, numaralandırma, dizgi değişmezi ve yorum. Ardından onu standart İngilizce kurallarına (boşluklar, noktalama işaretleri gibi) ve kodla ilgili noktalama işaretlerine göre işaretleriz.

Örneğin, yukarıdaki şekilde "pxToDp" yöntem gövdesi için, kaynak kodu bir kelime koleksiyonu olarak kabul edilebilir: "dp px'deki px'i kaynakları elde etmek ve görüntüleme göstergelerini elde etmek için dp'ye dönüştür".

fastText Kelime korpusundaki tüm kelimeler için kelime düğünleri oluşturun. fastText vektör temsillerini hesaplamak için iki katmanlı yoğun bir sinir ağı kullanır ve bunlar büyük bir külliyatta denetimsiz olarak eğitilebilir.

UNIF, NCS'nin bir uzantısıdır ve eğitim için denetlenen veriler mevcut olduğunda performansı artırmak için kullanılabilir.

GitHub'da 26.109 en popüler Android projesini seçin ve denetimsiz NCS modelimizi doğrudan arama derlemesinde eğitin. Bu aynı zamanda NCS dönüş kodu parçacıklarının arama külliyatı olur.

UNIF modeline gelince, veri setini elde etmek için Facebook'taki Stack Overflow forumundan soru başlığını ve kod parçalarını çıkardım. Soruları filtrelemek için çeşitli sezgisel yöntemler kullandıktan sonra nihayet 451.000 eğitim örneği elde edildi.

Kağıt adresi:

https://arxiv.org/pdf/1905.03813.pdf

- Bitiş -

Samimi işe alım

Qubit, editörleri / muhabirleri işe alıyor ve merkezi Pekin, Zhongguancun'da bulunuyor. Yetenekli ve hevesli öğrencilerin bize katılmasını dört gözle bekliyoruz! Ayrıntılar için, lütfen QbitAI diyalog arayüzünde "işe alım" kelimesiyle yanıt verin.

Qubit QbitAI · Toutiao İmzalama Yazarı

' ' Yapay zeka teknolojisi ve ürünlerindeki yeni eğilimleri takip edin
Fiyat aralığı 5,37-87,7 milyon yuan'dır. 2019 China V3 resmi olarak piyasaya sürüldü
önceki
"Pokémon" dev altın canavarla aynıdır. Mega'ya güvenmezseniz çalışmaz mı?
Sonraki
Zhao Weimei tekrar geldi! 10.000 yuan'lık örme üstler karıştırılır ve spor pantolonlarla eşleştirilir, gençlik ve yaş kaybı olmaz
Doğrudan indirilebilir! Microsoft'un yayınlanan en havalı komut satırı aracı GitHub yıldızı 46.000'i kırdı
"Pokemon" Alev Tavuğu ne kadar güçlü? Mega'ya karşı oynamasanız bile iyi çalışıyor mu?
Flextronics ekipmanı iade etmeyi reddettikten sonra: fabrika üretimi durdurdu ve Huawei onu tedarik zincirinden çıkardı
Bu düşük anahtar Şangay AI şirketi CVPR'de bir şampiyonluk daha kazandı
Baojun E100 resmi olarak bugün listelendi, Temmuz ön alım fiyatı 3.98-48.8 milyon yuan
Mazda'nın yeni arabası, beklenmedik bir sürprizle sonuçlanan dokunmatik ekranı tamamen iptal etti
Ctrip'in "Özel Arabaları" yıl boyunca büyük yerel şehirleri kapsayacak şekilde önemli ölçüde genişledi
Dördüncü paradigma yazılım ve donanım entegre sistemi piyasaya sürüldü: Yapay zeka hesaplama gücü donanıma bağlı değil, geleneksel işletmelerin dönüşümüne odaklanıyor
Makine "kana" bindi Doğa: Sahte bir balık, katı hal pilleri olmadan 36 saat dayanması için ona güveniyor
Han'ın Lazer Kabini hazır! Sadece performans değişmedi, aynı zamanda finansal dolandırıcılık da sorgulandı! Hisse senedi fiyatı tekrar düştü ve bir zamanlar yabancı yatırımcılar tarafından satın alın
Görünüş daha genç, Dongfeng Nissan'ın yeni Sylphy'si 16 Temmuz'da piyasaya sürülecek.
To Top