SEIRLGMLMar 27, 2019

Import2vec - Learning Embeddings for Software Libraries

arXiv:1904.03990v134 citationsHas Code
Originality Synthesis-oriented
AI Analysis

This work addresses the need for better representations of software libraries to improve tasks like classification and search, but it is incremental as it adapts existing NLP methods to a new domain.

The authors tackled the problem of learning embeddings for software libraries to capture semantic similarity, applying NLP word embedding techniques to import statements in source code, and found that the resulting library vectors effectively represent relationships like frameworks and plug-ins across Java, JavaScript, and Python ecosystems.

We consider the problem of developing suitable learning representations (embeddings) for library packages that capture semantic similarity among libraries. Such representations are known to improve the performance of downstream learning tasks (e.g. classification) or applications such as contextual search and analogical reasoning. We apply word embedding techniques from natural language processing (NLP) to train embeddings for library packages ("library vectors"). Library vectors represent libraries by similar context of use as determined by import statements present in source code. Experimental results obtained from training such embeddings on three large open source software corpora reveals that library vectors capture semantically meaningful relationships among software libraries, such as the relationship between frameworks and their plug-ins and libraries commonly used together within ecosystems such as big data infrastructure projects (in Java), front-end and back-end web development frameworks (in JavaScript) and data science toolkits (in Python).

Code Implementations1 repo
Foundations

The foundational work for this paper's niche, ranked by how specifically the neighbourhood builds on it — not by global fame.

Your Notes