API recommendation based on Word Embeddings

  • Ana Martínez Saucedo Universidad Argentina de la Empresa (UADE), Instituto de Tecnología (INTEC)
  • Leonardo Henrique da Rocha Araujo ISISTAN Research Institute (CONICET - UNICEN)
  • Guillermo Rodríguez ISISTAN Research Institute (CONICET - UNICEN)

Resumen

En esta era en la que los servicios web son tendencia y las empresas desarrollan y exponen constantemente APIs que pueden ser utilizadas por terceros, encontrar una API que se ajuste a un requisito funcional es una tarea abrumadora. Por esta razón, portales como ProgrammableWeb y APIs.guru ofrecen un directorio de definiciones de APIs que los desarrolladores pueden filtrar y buscar. Sin embargo, la búsqueda de APIs que cumplan con un requisito en esas plataformas sigue siendo una tarea manual, y las búsquedas se basan en la inclusión o exclusión de palabras clave en una descripción de API que no proporciona resultados relevantes. Por esta razón, hemos explorado la aplicación de word embeddings para recomendar APIs utilizando los algoritmos Word2Vec, FastText y GloVe, así como embeddings pre-entrenados de dominio general y específicos a la ingeniería de software. Construimos un dataset de APIs a partir de APIs.guru y recuperamos descripciones de servicios para obtener sus embeddings y calcular su similitud con el embedding de una consulta determinada. Para ello creamos diez consultas de prueba con sus APIs relevantes utilizando un subconjunto del conjunto de datos original. Con una exhaustividad en 10 recomendaciones del 69,8% y un nDCG en 10  recomendaciones del 81,4%, hemos obtenido resultados prometedores que demuestran que los word embeddings pueden dar soporte a los desarrolladores a la hora de buscar APIs relevantes.
Publicado
2023-07-04
Cómo citar
Martínez Saucedo, A., da Rocha Araujo, L., & Rodríguez, G. (2023). API recommendation based on Word Embeddings. Memorias De Las JAIIO, 9(3). Recuperado a partir de https://ojs.sadio.org.ar/index.php/JAIIO/article/view/526
Sección
ASSE - Argentine Symposium on Software Engineering