{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2022,9,21]],"date-time":"2022-09-21T08:25:10Z","timestamp":1663748710515},"reference-count":40,"publisher":"World Scientific Pub Co Pte Ltd","issue":"09","funder":[{"DOI":"10.13039\/501100001809","name":"National Natural Science Foundation of China","doi-asserted-by":"crossref","award":["61802179","61972197"],"id":[{"id":"10.13039\/501100001809","id-type":"DOI","asserted-by":"crossref"}]},{"DOI":"10.13039\/501100012226","name":"Fundamental Research Funds for the Central Universities","doi-asserted-by":"crossref","award":["NS2021069"],"id":[{"id":"10.13039\/501100012226","id-type":"DOI","asserted-by":"crossref"}]},{"DOI":"10.13039\/501100004608","name":"Natural Science Foundation of Jiangsu Province","doi-asserted-by":"crossref","award":["BK20201292"],"id":[{"id":"10.13039\/501100004608","id-type":"DOI","asserted-by":"crossref"}]}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Int. J. Soft. Eng. Knowl. Eng."],"published-print":{"date-parts":[[2021,9]]},"abstract":" Application Programming Interfaces (APIs) play an important role in modern software development. Developers interact with APIs on a daily basis and thus need to learn and memorize those APIs suitable for implementing the required functions. This can be a burden even for experienced developers since there exists a mass of available APIs. API recommendation techniques focus on assisting developers in selecting suitable APIs. However, existing API recommendation techniques have not taken the developers personal characteristics into account. As a result, they cannot provide developers with personalized API recommendation services. Meanwhile, they lack the support for self-defined APIs in the recommendation. To this end, we aim to propose a personalized API recommendation method that considers developers\u2019 differences. Our API recommendation method is based on statistical language. We propose a model structure that combines the N-gram model and the long short-term memory (LSTM) neural network and train predictive models using API invoking sequences extracted from GitHub code repositories. A general language model trained on all sorts of code data is first acquired, based on which two personalized language models that recommend personalized library APIs and self-defined APIs are trained using the code data of the developer who needs personalized services. We evaluate our personalized API recommendation method on real-world developers, and the experimental results show that our approach achieves better accuracy in recommending both library APIs and self-defined APIs compared with the state-of-the-art. The experimental results also confirm the effectiveness of our hybrid model structure and the choice of the LSTM\u2019s size. <\/jats:p>","DOI":"10.1142\/s021819402150042x","type":"journal-article","created":{"date-parts":[[2021,10,3]],"date-time":"2021-10-03T11:39:21Z","timestamp":1633261161000},"page":"1299-1327","source":"Crossref","is-referenced-by-count":2,"title":["Personalized API Recommendations"],"prefix":"10.1142","volume":"31","author":[{"given":"Wenhua","family":"Yang","sequence":"first","affiliation":[{"name":"College of Computer Science and Technology, Nanjing University of Aeronautics and Astronautics, Nanjing, Jiangsu 211106, P. R. China"},{"name":"State Key Laboratory for Novel Software Technology, Nanjing University, Nanjing, Jiangsu 210093, P. R. China"},{"name":"Collaborative Innovation Center of Novel Software, Technology and Industrialization, Nanjing, Jiangsu 210093, P. R. China"}]},{"given":"Yu","family":"Zhou","sequence":"additional","affiliation":[{"name":"College of Computer Science and Technology, Nanjing University of Aeronautics and Astronautics, Nanjing, Jiangsu 211106, P. R. China"},{"name":"State Key Laboratory for Novel Software Technology, Nanjing University, Nanjing, Jiangsu 210093, P. R. China"}]},{"given":"Zhiqiu","family":"Huang","sequence":"additional","affiliation":[{"name":"College of Computer Science and Technology, Nanjing University of Aeronautics and Astronautics, Nanjing, Jiangsu 211106, P. R. China"}]}],"member":"219","published-online":{"date-parts":[[2021,10,3]]},"reference":[{"key":"S021819402150042XBIB001","doi-asserted-by":"crossref","first-page":"48","DOI":"10.1145\/1065010.1065018","volume-title":"Proc. 2005 ACM SIGPLAN Conf. Programming Language Design and Implementation","author":"Mandelin D.","year":"2005"},{"key":"S021819402150042XBIB002","doi-asserted-by":"publisher","DOI":"10.1145\/2950290.2950333"},{"key":"S021819402150042XBIB003","doi-asserted-by":"crossref","first-page":"282","DOI":"10.1145\/3238147.3238216","volume-title":"Proc. 33rd ACM\/IEEE Int. Conf. Automated Software Engineering","author":"Liu X.","year":"2018"},{"key":"S021819402150042XBIB004","doi-asserted-by":"crossref","first-page":"293","DOI":"10.1145\/3238147.3238191","volume-title":"Proc. 33rd ACM\/IEEE Int. Conf. Automated Software Engineering","author":"Huang Q.","year":"2018"},{"key":"S021819402150042XBIB005","first-page":"1050","volume-title":"Proc. 41st Int. Conf. Software Engineering","author":"Nguyen P. T.","year":"2019"},{"key":"S021819402150042XBIB006","first-page":"1","author":"Zhou Y.","year":"2021","journal-title":"IEEE Trans. Softw. Eng."},{"key":"S021819402150042XBIB007","doi-asserted-by":"crossref","first-page":"106336","DOI":"10.1016\/j.infsof.2020.106336","volume":"125","author":"Yang W.","year":"2020","journal-title":"Inf. Softw. Technol."},{"key":"S021819402150042XBIB008","first-page":"1","author":"Yin Y.","year":"2020","journal-title":"IEEE Trans. Ind. Informatics"},{"key":"S021819402150042XBIB009","first-page":"467","volume":"18","author":"Brown P. F.","journal-title":"Comput. Linguist."},{"key":"S021819402150042XBIB010","doi-asserted-by":"publisher","DOI":"10.1162\/neco.1997.9.8.1735"},{"key":"S021819402150042XBIB011","doi-asserted-by":"crossref","first-page":"313","DOI":"10.1109\/ICSME.2019.00047","volume-title":"2019 IEEE Int. Conf. Software Maintenance and Evolution","author":"Nguyen T.","year":"2019"},{"key":"S021819402150042XBIB012","doi-asserted-by":"crossref","first-page":"289","DOI":"10.1109\/ICWS.2014.50","volume-title":"2014 IEEE Int. Conf. Web Services","author":"Li C.","year":"2014"},{"key":"S021819402150042XBIB013","doi-asserted-by":"crossref","first-page":"432","DOI":"10.1109\/ICWS.2015.64","volume-title":"2015 IEEE Int. Conf. Web Services","author":"Gao W.","year":"2015"},{"issue":"1","key":"S021819402150042XBIB014","doi-asserted-by":"crossref","first-page":"99","DOI":"10.1109\/TSC.2017.2686390","volume":"13","author":"Cao B.","year":"2020","journal-title":"IEEE Trans. Services Comput."},{"key":"S021819402150042XBIB015","doi-asserted-by":"publisher","DOI":"10.1145\/2666356.2594321"},{"key":"S021819402150042XBIB016","first-page":"858","volume-title":"Proc. 37th Int. Conf. Software Engineering, Volume 1","author":"Nguyen A. T.","year":"2015"},{"key":"S021819402150042XBIB017","doi-asserted-by":"publisher","DOI":"10.1145\/2950290.2950334"},{"key":"S021819402150042XBIB018","first-page":"349","volume-title":"2016 IEEE 23rd Int. Conf. Software Analysis, Evolution, and Reengineering","author":"Rahman M. M.","year":"2016"},{"key":"S021819402150042XBIB019","first-page":"213","volume-title":"Proc. 7th Joint Meeting of the European Software Engineering Conf. and the ACM SIGSOFT Symp. Foundations of Software Engineering","author":"Bruch M.","year":"2009"},{"key":"S021819402150042XBIB020","doi-asserted-by":"publisher","DOI":"10.1109\/ASE.2013.6693088"},{"key":"S021819402150042XBIB021","doi-asserted-by":"crossref","first-page":"318","DOI":"10.1007\/978-3-642-03013-0_15","volume-title":"ECOOP 2009 \u2014 Object-Oriented Programming","author":"Zhong H.","year":"2009"},{"key":"S021819402150042XBIB022","doi-asserted-by":"crossref","first-page":"319","DOI":"10.1109\/MSR.2013.6624045","volume-title":"2013 10th Working Conf. Mining Software Repositories","author":"Wang J.","year":"2013"},{"key":"S021819402150042XBIB023","first-page":"111","volume-title":"Proc. 33rd Int. Conf. Software Engineering","author":"McMillan C.","year":"2011"},{"key":"S021819402150042XBIB024","doi-asserted-by":"publisher","DOI":"10.1145\/2393596.2393606"},{"key":"S021819402150042XBIB025","first-page":"357","volume-title":"Proc. 38th Int. Conf. Software Engineering","author":"Raghothaman M.","year":"2016"},{"key":"S021819402150042XBIB026","doi-asserted-by":"crossref","first-page":"195","DOI":"10.1016\/j.jss.2018.04.060","volume":"142","author":"Xu C.","year":"2018","journal-title":"J. Syst. Softw."},{"key":"S021819402150042XBIB027","first-page":"438","volume-title":"2017 IEEE\/ACM 39th Int. Conf. Software Engineering","author":"Nguyen T. D.","year":"2017"},{"key":"S021819402150042XBIB028","doi-asserted-by":"crossref","first-page":"512","DOI":"10.1002\/smr.1791","volume":"28","author":"Asaduzzaman M.","journal-title":"J. Softw. Evol. Process"},{"key":"S021819402150042XBIB029","first-page":"369","volume-title":"2019 IEEE 30th Int. Symp. Software Reliability Engineering","author":"Xie R.","year":"2019"},{"key":"S021819402150042XBIB030","first-page":"782","volume-title":"Proc. 34th Int. Conf. Software Engineering","author":"Buse R. P. L.","year":"2012"},{"key":"S021819402150042XBIB031","first-page":"117","volume-title":"Proc. 27th Int. Conf. Software Engineering","author":"Holmes R.","year":"2005"},{"key":"S021819402150042XBIB032","doi-asserted-by":"crossref","first-page":"592","DOI":"10.1109\/ASE.2011.6100133","volume-title":"2011 26th IEEE\/ACM Int. Conf. Automated Software Engineering","author":"Wang L.","year":"2011"},{"key":"S021819402150042XBIB033","first-page":"643","volume-title":"Proc. 36th Int. Conf. Software Engineering","author":"Subramanian S.","year":"2014"},{"key":"S021819402150042XBIB034","first-page":"826","volume-title":"2012 34th Int. Conf. Software Engineering","author":"Zhang C.","year":"2012"},{"key":"S021819402150042XBIB035","doi-asserted-by":"crossref","first-page":"271","DOI":"10.1109\/ICSM.2015.7332473","volume-title":"2015 IEEE Int. Conf. Software Maintenance and Evolution","author":"Asaduzzaman M.","year":"2015"},{"key":"S021819402150042XBIB036","first-page":"281","volume-title":"Proc. 22nd ACM SIGSOFT Int. Symp. Foundations of Software Engineering","author":"Allamanis M.","year":"2014"},{"key":"S021819402150042XBIB037","doi-asserted-by":"publisher","DOI":"10.1145\/2786805.2786849"},{"issue":"8","key":"S021819402150042XBIB039","doi-asserted-by":"crossref","first-page":"1270","DOI":"10.1109\/5.880083","volume":"88","author":"Rosenfeld R.","year":"2000","journal-title":"Proc. IEEE"},{"key":"S021819402150042XBIB041","doi-asserted-by":"crossref","first-page":"193","DOI":"10.1145\/1273496.1273521","volume-title":"Proceedings of the 24th International Conference on Machine Learning","author":"Dai W.","year":"2007"},{"key":"S021819402150042XBIB042","doi-asserted-by":"publisher","DOI":"10.1017\/CBO9780511809071"}],"container-title":["International Journal of Software Engineering and Knowledge Engineering"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.worldscientific.com\/doi\/pdf\/10.1142\/S021819402150042X","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2021,10,3]],"date-time":"2021-10-03T11:43:06Z","timestamp":1633261386000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.worldscientific.com\/doi\/abs\/10.1142\/S021819402150042X"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2021,9]]},"references-count":40,"journal-issue":{"issue":"09","published-print":{"date-parts":[[2021,9]]}},"alternative-id":["10.1142\/S021819402150042X"],"URL":"https:\/\/doi.org\/10.1142\/s021819402150042x","relation":{},"ISSN":["0218-1940","1793-6403"],"issn-type":[{"value":"0218-1940","type":"print"},{"value":"1793-6403","type":"electronic"}],"subject":[],"published":{"date-parts":[[2021,9]]}}}