Wie funktioniert das Tool von Facebook AI?

Facebook Aroma verspricht Code-Recommendations durch Machine Learning
Keine Kommentare

Während der Softwareentwicklung sehen sich Entwickler oft mit wiederkehrenden Aufgaben konfrontiert. Häufig wurden diese bereits durch Kollegen in anderen Teilen eines Projekts gelöst. Das Facebook-Tool Aroma nutzt Machine Learning, um passende Code-Vorschläge aus ähnlichen Stellen zu erzeugen.

Aroma ist ein Tool für die Code-to-Code-Suche. So können Entwickler sehen, welche Lösungswege Kollegen für ähnliche Code-Sequenzen angewendet haben. Ein angezeigter Vorschlag macht beispielsweise deutlich, welche Parameter häufig bei Funktionsaufrufen übergeben werden.

Ein Praxisbeispiel für Aroma

Der Code aus Listing 1 hat die Aufgabe, eine Bitmap auf einem Android-Gerät zu dekodieren. Anhand dieser Zeile lässt sich dann eine Suche mit Aroma starten, um ähnliche Lösungen von Kollegen zu finden. Als Suchergebnis wird Listing 2 ausgegeben.

Bitmap bitmap = BitmapFactory.decodeStream(input);
final BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 2;
// ...
Bitmap bmp = BitmapFactory.decodeStream(is, null, options);

Für dieses Beispiel hat Aroma laut Facebook fünf ähnliche Code-Stücke verglichen. Der erzeugte Vorschlag stellt deren Schnittmenge dar. Dem Entwickler in diesem Szenario wird also demonstriert, welche Parameter seine Kollegen an .decodeStream() übergeben und welche Codezeilen sie in der unmittelbaren Nähe noch schreiben.

ML Conference 2019

Workshop: Machine Learning 101++ using Python

mit Dr. Pieter Buteneers (Chatlayer.ai)

Honey Bee Conservation using Deep Learning

mit Thiago da Silva Alves, Jean Metz (JArchitects)

Wie funktioniert Aroma?

Das Tool bildet seine Recommendations in einem dreistufigen Verfahren. Zunächst erstellt es für jede Methode im Projekt-Code eine Baumstruktur, woraus im nächsten Schritt ein Set struktureller Features extrahiert wird. Aus diesem Set generiert Aroma einen Sparse-Vektor, aus der Gesamtmenge der Sparse-Vektoren entsteht schließlich eine Indexing-Matrix. Für neu geschriebenen Code wird ebenfalls ein Sparse-Vektor gebildet. Die ähnlichsten Code-Stücke im restlichen Code des Projekts bilden dann das Set zur Bildung der Code-Recommendation.

In der zweiten Stufe werden die Elemente des Sets anhand ihrer Ähnlichkeit zum Such-Query neu gerankt. Danach sucht Aroma nach Ähnlichkeiten innerhalb des Sets sowie nach ähnlichen Code-Stücken mit zusätzlichen Ausdrücken. So sollen im Suchergebnis ergänzende Informationen bereitgestellt werden.

Die dritte Phase behandelt die eigentliche Erstellung einer Recommendation. Die am höchsten gerankte Code-Stelle wird iterativ mit den weiteren Einträgen des Sets verglichen. Nicht mit dem nächsten Treffer übereinstimmender Code wird aus dem aktuellen Zwischenergebnis entfernt. Durch dieses Zuschneiden des vermeintlich besten Treffers entsteht die angestrebte Recommendation.

Aroma durchsucht jeweils das Repository, in dem ein Entwickler gerade arbeitet. Das Tool unterstützt aktuell Quellcode in den Sprachen Hack, JavaScript, Python und Java. Weitere Informationen zu Aroma, inklusive der vollständigen Herleitung des obigen Beispiels, stehen auf dem Facebook-AI-Blog zur Verfügung.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu:
X
- Gib Deinen Standort ein -
- or -