{"id":537,"date":"2022-08-17T17:53:54","date_gmt":"2022-08-17T09:53:54","guid":{"rendered":"https:\/\/yunpeng.site\/?p=537"},"modified":"2024-01-14T19:15:37","modified_gmt":"2024-01-14T11:15:37","slug":"tse-2022","status":"publish","type":"post","link":"https:\/\/yunpeng.site\/index.php\/2022\/08\/17\/tse-2022\/","title":{"rendered":"TSE 2022"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"537\" class=\"elementor elementor-537\" data-elementor-settings=\"[]\">\n\t\t\t\t\t\t\t<div class=\"elementor-section-wrap\">\n\t\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-24f612f elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"24f612f\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-651f67f\" data-id=\"651f67f\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-1f750eb elementor-widget elementor-widget-arter-project-banner\" data-id=\"1f750eb\" data-element_type=\"widget\" data-widget_type=\"arter-project-banner.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\t\t<!-- container -->\n\t\t<div class=\"container-fluid\">\n\t\t\t<!-- row -->\n\t\t\t<div class=\"row\">\n\t\t\t  <!-- col -->\n\t\t\t  <div class=\"col-lg-12\">\n\n\t\t\t    <!-- call to action -->\n\t\t\t    <div class=\"art-a art-banner\" style=\"background-image: url(https:\/\/yunpeng.site\/wp-content\/uploads\/2021\/04\/mountains-4681355_1920.jpg)\">\n\t\t\t      <!-- banner overlay -->\n\t\t\t      <div class=\"art-banner-overlay\">\n\t\t\t        <!-- main title -->\n\t\t\t        <div class=\"art-banner-title text-center\">\n\t\t\t          \t\t\t          <!-- title -->\n\t\t\t          <h1 class=\"art-banner-title-h mb-15\">\n\t\t\t          <span >\n\t\t\t          \tRevisiting, Benchmarking and Exploring API Recommendation: How Far Are We?\t\t\t          <\/span>\n\t\t\t          <\/h1>\n\t\t\t      \t  \t\t\t      \t  \t\t\t          <!-- suptitle -->\n\t\t\t          <div class=\"art-lg-text art-code mb-25\">\n\t\t\t          \t<span >\n\t\t\t\t          \tTSE 2022\t\t\t\t        <\/span>\n\t\t\t          <\/div>\n\t\t\t          \t\t\t          \t\t\t        <\/div>\n\t\t\t        <!-- main title end -->\n\t\t\t      <\/div>\n\t\t\t      <!-- banner overlay end -->\n\t\t\t    <\/div>\n\t\t\t    <!-- banner end -->\n\n\t\t\t  <\/div>\n\t\t\t  <!-- col end -->\n\t\t\t<\/div>\n\t\t\t<!-- row end -->\n\t\t<\/div>\n\t\t<!-- container end -->\n\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-f81cbad elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"f81cbad\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-51799bd\" data-id=\"51799bd\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-55e3aff elementor-widget elementor-widget-arter-project-description\" data-id=\"55e3aff\" data-element_type=\"widget\" data-widget_type=\"arter-project-description.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\n\t\t<!-- container -->\n\t\t<div class=\"container-fluid\">\n\n\t\t<!-- row -->\n\t\t<div class=\"row\">\n\n\t\t  \t\t  <!-- col -->\n\t\t  <div class=\"col-lg-12\">\n\n\t\t    <!-- section title -->\n\t\t    <div class=\"art-section-title\">\n\t\t      <!-- title frame -->\n\t\t      <div class=\"art-title-frame\">\n\t\t        <!-- title -->\n\t\t        <h4 class=\"art-title-h\">\n\t\t    \t<span >\n\t\t          \tPaper Information\t\t         <\/span>\n\t\t    \t<\/h4>\n\t\t      <\/div>\n\t\t      <!-- title frame end -->\n\t\t    <\/div>\n\t\t    <!-- section title end -->\n\n\t\t  <\/div>\n\t\t  <!-- col end -->\n\t\t  \n\t\t  \t\t  <!-- col -->\n\t\t  <div class=\"col-lg-12\">\n\t\t    <div class=\"art-a art-card art-fluid-card\">\n\t\t      \t\t      <div class=\"single-post-text\">\n\t\t      \t<div >\n\t\t          \t<p><strong>Paper Name:<\/strong> Revisiting, Benchmarking and Exploring API Recommendation: How Far Are We?<\/p><p><strong>Journal:<\/strong> <a href=\"https:\/\/ieeexplore.ieee.org\/xpl\/RecentIssue.jsp?punumber=32\">IEEE Transactions on Software Engineering<\/a><\/p><p><strong>Authors: <\/strong><em><span style=\"text-decoration: underline\">Yun Peng<\/span><\/em>, Shuqing Li, Wenwei Gu, Yichen Li, Wenxuan Wang, Cuiyun Gao, and Michael Lyu<\/p>\t\t        <\/div>\n\t\t      <\/div>\n\t\t\t  \t\t\t  \t\t    <\/div>\n\t\t  <\/div>\n\t\t  <!-- col end -->\n\t\t  \n\t\t  \t\t<\/div>\n\t\t<!-- row end -->\n\n\t\t<\/div>\n\t\t<!-- container end -->\n\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-20dc0e4 elementor-widget elementor-widget-arter-project-description\" data-id=\"20dc0e4\" data-element_type=\"widget\" data-widget_type=\"arter-project-description.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\n\t\t<!-- container -->\n\t\t<div class=\"container-fluid\">\n\n\t\t<!-- row -->\n\t\t<div class=\"row\">\n\n\t\t  \t\t  <!-- col -->\n\t\t  <div class=\"col-lg-12\">\n\n\t\t    <!-- section title -->\n\t\t    <div class=\"art-section-title\">\n\t\t      <!-- title frame -->\n\t\t      <div class=\"art-title-frame\">\n\t\t        <!-- title -->\n\t\t        <h4 class=\"art-title-h\">\n\t\t    \t<span >\n\t\t          \tAbstract\t\t         <\/span>\n\t\t    \t<\/h4>\n\t\t      <\/div>\n\t\t      <!-- title frame end -->\n\t\t    <\/div>\n\t\t    <!-- section title end -->\n\n\t\t  <\/div>\n\t\t  <!-- col end -->\n\t\t  \n\t\t  \t\t  <!-- col -->\n\t\t  <div class=\"col-lg-12\">\n\t\t    <div class=\"art-a art-card art-fluid-card\">\n\t\t      \t\t      <div class=\"single-post-text\">\n\t\t      \t<div >\n\t\t          \t<p>Application Programming Interfaces (APIs), which encapsulate the implementation of specific functions as interfaces, greatly improve the efficiency of modern software development. As the number of APIs grows up fast nowadays, developers can hardly be familiar with all the APIs and usually need to search for appropriate APIs for usage. So lots of efforts have been devoted to improving the API recommendation task. However, it has been increasingly difficult to gauge the performance of new models due to the lack of a uniform definition of the task and a standardized benchmark. For example, some studies regard the task as a code completion problem, while others recommend relative APIs given natural language queries. To reduce the challenges and better facilitate future research, in this paper, we revisit the API recommendation task and aim at benchmarking the approaches. Specifically, the paper groups the approaches into two categories according to the task definition, i.e., query-based API recommendation and code-based API recommendation. We study 11 recently-proposed approaches along with 4 widely-used IDEs. One benchmark named APIBench is then built for the two respective categories of approaches. Based on APIBench, we distill some actionable insights and challenges for API recommendation. We also achieve some implications and directions for improving the performance of recommending APIs, including appropriate query reformulation, data source selection, low resource setting, user-defined APIs, and query-based API recommendation with usage patterns.<\/p>\t\t        <\/div>\n\t\t      <\/div>\n\t\t\t  \t\t\t  \t\t    <\/div>\n\t\t  <\/div>\n\t\t  <!-- col end -->\n\t\t  \n\t\t  \t\t<\/div>\n\t\t<!-- row end -->\n\n\t\t<\/div>\n\t\t<!-- container end -->\n\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-dea8e85 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"dea8e85\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-6fa3f89\" data-id=\"6fa3f89\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-f1c88bb elementor-widget elementor-widget-arter-project-description\" data-id=\"f1c88bb\" data-element_type=\"widget\" data-widget_type=\"arter-project-description.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\n\t\t<!-- container -->\n\t\t<div class=\"container-fluid\">\n\n\t\t<!-- row -->\n\t\t<div class=\"row\">\n\n\t\t  \t\t  <!-- col -->\n\t\t  <div class=\"col-lg-12\">\n\n\t\t    <!-- section title -->\n\t\t    <div class=\"art-section-title\">\n\t\t      <!-- title frame -->\n\t\t      <div class=\"art-title-frame\">\n\t\t        <!-- title -->\n\t\t        <h4 class=\"art-title-h\">\n\t\t    \t<span >\n\t\t          \tWorkflow of API recommendation\t\t         <\/span>\n\t\t    \t<\/h4>\n\t\t      <\/div>\n\t\t      <!-- title frame end -->\n\t\t    <\/div>\n\t\t    <!-- section title end -->\n\n\t\t  <\/div>\n\t\t  <!-- col end -->\n\t\t  \n\t\t  \n\t\t  \t\t<\/div>\n\t\t<!-- row end -->\n\n\t\t<\/div>\n\t\t<!-- container end -->\n\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-679281c elementor-widget elementor-widget-arter-project-image-featured\" data-id=\"679281c\" data-element_type=\"widget\" data-widget_type=\"arter-project-image-featured.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\n\t\t<!-- container -->\n\t\t<div class=\"container-fluid\">\n\n\t\t<!-- row -->\n\t\t<div class=\"row\">\n\n\t\t  <!-- col -->\n\t\t  <div class=\"col-lg-12\">\n\n\t\t    <!-- project cover -->\n\t\t    <div class=\"art-a art-project-cover\">\n\t\t      \t\t      <!-- item frame -->\n\t\t      <a data-no-swup href=\"https:\/\/i2.wp.com\/yunpeng.site\/wp-content\/uploads\/2022\/08\/TSE22_TeaserImage.png?fit=1920%2C968&#038;ssl=1\" class=\"art-portfolio-item-frame art-horizontal\">\n\t\t        <!-- img -->\n\t\t        <img decoding=\"async\" src=\"https:\/\/i2.wp.com\/yunpeng.site\/wp-content\/uploads\/2022\/08\/TSE22_TeaserImage.png?fit=1920%2C968&#038;ssl=1\" alt=\"Workflow of API recommendation\">\n\t\t        <!-- zoom icon -->\n\t\t        <span class=\"art-item-hover\"><i class=\"fas fa-expand\"><\/i><\/span>\n\t\t      <\/a>\n\t\t      <!-- item end -->\n\t\t  \t  \t\t    <\/div>\n\t\t    <!-- project cover nd -->\n\n\t\t  <\/div>\n\t\t  <!-- col end -->\n\n\t\t<\/div>\n\t\t<!-- row end -->\n\n\t\t<\/div>\n\t\t<!-- container end -->\n\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-73c9b90 elementor-widget elementor-widget-arter-project-description\" data-id=\"73c9b90\" data-element_type=\"widget\" data-widget_type=\"arter-project-description.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\n\t\t<!-- container -->\n\t\t<div class=\"container-fluid\">\n\n\t\t<!-- row -->\n\t\t<div class=\"row\">\n\n\t\t  \t\t  <!-- col -->\n\t\t  <div class=\"col-lg-12\">\n\n\t\t    <!-- section title -->\n\t\t    <div class=\"art-section-title\">\n\t\t      <!-- title frame -->\n\t\t      <div class=\"art-title-frame\">\n\t\t        <!-- title -->\n\t\t        <h4 class=\"art-title-h\">\n\t\t    \t<span >\n\t\t          \tFindings\t\t         <\/span>\n\t\t    \t<\/h4>\n\t\t      <\/div>\n\t\t      <!-- title frame end -->\n\t\t    <\/div>\n\t\t    <!-- section title end -->\n\n\t\t  <\/div>\n\t\t  <!-- col end -->\n\t\t  \n\t\t  \t\t  <!-- col -->\n\t\t  <div class=\"col-lg-12\">\n\t\t    <div class=\"art-a art-card art-fluid-card\">\n\t\t      \t\t      <div class=\"single-post-text\">\n\t\t      \t<div >\n\t\t          \t<ol><li>Existing approaches fail to predict 57.8% method-level APIs that could be successfully predicted at the class level. The performance achieved by the approaches is far from the requirement of practical usage. <strong>Accurately recommending the method-level APIs still remains a great challenge.<\/strong><\/li><li>Learning-based methods do not necessarily outperform retrieval-based methods in recommending more correct APIs. <strong>The insufficient query-API pairs for training limit the performance of learning-based methods.<\/strong><\/li><li><strong>Current approaches cannot rank the correct APIs well<\/strong>, considering the huge gap between the scores of Success Rate and the other ranking metrics.<\/li><li><strong>Query reformulation techniques are quite effective<\/strong> in helping query-based API recommendation approaches give the correct API by adding an average boost of 27.7% and 49.2% on class-level and method-level recommendations, respectively.<\/li><li><strong>Query expansion is more stable and effective<\/strong> to help current query-based API recommendation approaches give correct APIs than query modification.<\/li><li>In query expansion, <strong>adding predicted API class names or relevant words<\/strong> to queries are more useful than adding other tokens.<\/li><li><strong>BERT-based data augmentation shows superior performance<\/strong> in query modification compared with other query modification techniques.<\/li><li>Expanding queries or modifying queries with appropriate data augmentation methods can <strong>improve the ranking performance<\/strong> of the query-based API recommendation techniques.<\/li><li>Original queries raised by users usually contain noisy words which can bias the recommendation results, and query reformulation techniques <strong>should consider involving noisy-word deletion<\/strong> for a more accurate recommendation.<\/li><li>Apart from official documentation, <strong>using other data sources<\/strong> such as Stack Overflow can significantly improve the performance of query-based API recommendation approaches.<\/li><li><strong>DL models such as TravTrans show superior performance<\/strong> on code-based API recommendation by achieving a Success Rate@10 of 0.62, while widely-used IDEs also obtain satisfying performance by achieving a Success Rate@10 of 0.5 ~ 0.6.<\/li><li>Although current approaches achieve good performance on recommending standard and popular third-party libraries, they <strong>face the challenges of correctly predicting the user-defined APIs.<\/strong><\/li><li>Context length can impact the performance of current approaches in API recommendation. The approaches perform poorly for the functions with extremely short or long lengths, and <strong>accurate recommendation for the extremely short functions is more challenging<\/strong>.<\/li><li>The location of recommendation points can affect the performance of current approaches. Current approaches <strong>perform worst at front recommendation points<\/strong> due to limited contexts. Some of them also <strong>suffer from overwhelming contexts<\/strong> at back recommendation point.<\/li><li>Current approaches using fine-grained context representation are <strong>sensitive to the domain of the training data<\/strong> and suffer from performance drops when recommending cross-domain APIs.<\/li><li><strong>Training on multiple domains<\/strong> helps the current approaches to recommend APIs in different single domains, and the performance is generally<br \/>better than only training on a single domain.<\/li><\/ol>\t\t        <\/div>\n\t\t      <\/div>\n\t\t\t  \t\t\t  \t\t    <\/div>\n\t\t  <\/div>\n\t\t  <!-- col end -->\n\t\t  \n\t\t  \t\t<\/div>\n\t\t<!-- row end -->\n\n\t\t<\/div>\n\t\t<!-- container end -->\n\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d3267c6 elementor-widget elementor-widget-arter-project-description\" data-id=\"d3267c6\" data-element_type=\"widget\" data-widget_type=\"arter-project-description.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\n\t\t<!-- container -->\n\t\t<div class=\"container-fluid\">\n\n\t\t<!-- row -->\n\t\t<div class=\"row\">\n\n\t\t  \t\t  <!-- col -->\n\t\t  <div class=\"col-lg-12\">\n\n\t\t    <!-- section title -->\n\t\t    <div class=\"art-section-title\">\n\t\t      <!-- title frame -->\n\t\t      <div class=\"art-title-frame\">\n\t\t        <!-- title -->\n\t\t        <h4 class=\"art-title-h\">\n\t\t    \t<span >\n\t\t          \tBenchmark\t\t         <\/span>\n\t\t    \t<\/h4>\n\t\t      <\/div>\n\t\t      <!-- title frame end -->\n\t\t    <\/div>\n\t\t    <!-- section title end -->\n\n\t\t  <\/div>\n\t\t  <!-- col end -->\n\t\t  \n\t\t  \t\t  <!-- col -->\n\t\t  <div class=\"col-lg-12\">\n\t\t    <div class=\"art-a art-card art-fluid-card\">\n\t\t      \t\t      <div class=\"single-post-text\">\n\t\t      \t<div >\n\t\t          \t<p>APIBench contains two benchmarks: APIBench-Q for query-based API recommendation approaches and APIBench-C for code-based API recommendation approaches.\u00a0<\/p><p>APIBench has instances in Python and Java.<\/p><p><strong>APIBench-Q:<\/strong><\/p><p>It contains more than 10,000 original queries from StackOverflow and tutorial websites. It also contains more than 100,000 reformulated queries generated by different data augmentation approaches according to original queries.<\/p><p><strong>APIBench-C:<\/strong><\/p><p>It contains more than 2,000 GitHub projects in Python and Java. All projects are divided into five domains.<\/p>\t\t        <\/div>\n\t\t      <\/div>\n\t\t\t  \t\t\t  \t\t      <!-- button -->\n\t\t      <div class=\"art-buttons-frame\">\n\t\t      \t<a href=\"https:\/\/zenodo.org\/record\/5797297#.YcU6gS21H8A\" class=\"art-link art-color-link art-w-chevron\">\n\t\t      \t\t<span >\n\t\t\t          \tGet benchmark\t\t\t        <\/span>\n\t\t      \t<\/a>\n\t\t      <\/div>\n\t\t  \t  \t\t    <\/div>\n\t\t  <\/div>\n\t\t  <!-- col end -->\n\t\t  \n\t\t  \t\t<\/div>\n\t\t<!-- row end -->\n\n\t\t<\/div>\n\t\t<!-- container end -->\n\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f35faf9 elementor-widget elementor-widget-arter-project-description\" data-id=\"f35faf9\" data-element_type=\"widget\" data-widget_type=\"arter-project-description.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\n\t\t<!-- container -->\n\t\t<div class=\"container-fluid\">\n\n\t\t<!-- row -->\n\t\t<div class=\"row\">\n\n\t\t  \t\t  <!-- col -->\n\t\t  <div class=\"col-lg-12\">\n\n\t\t    <!-- section title -->\n\t\t    <div class=\"art-section-title\">\n\t\t      <!-- title frame -->\n\t\t      <div class=\"art-title-frame\">\n\t\t        <!-- title -->\n\t\t        <h4 class=\"art-title-h\">\n\t\t    \t<span >\n\t\t          \tGitHub\t\t         <\/span>\n\t\t    \t<\/h4>\n\t\t      <\/div>\n\t\t      <!-- title frame end -->\n\t\t    <\/div>\n\t\t    <!-- section title end -->\n\n\t\t  <\/div>\n\t\t  <!-- col end -->\n\t\t  \n\t\t  \t\t  <!-- col -->\n\t\t  <div class=\"col-lg-12\">\n\t\t    <div class=\"art-a art-card art-fluid-card\">\n\t\t      \t\t      <div class=\"single-post-text\">\n\t\t      \t<div >\n\t\t          \t<p><a href=\"https:\/\/github.com\/JohnnyPeng18\/APIBench\">https:\/\/github.com\/JohnnyPeng18\/APIBench<\/a><\/p>\t\t        <\/div>\n\t\t      <\/div>\n\t\t\t  \t\t\t  \t\t      <!-- button -->\n\t\t      <div class=\"art-buttons-frame\">\n\t\t      \t<a href=\"https:\/\/github.com\/JohnnyPeng18\/APIBench\" class=\"art-link art-color-link art-w-chevron\">\n\t\t      \t\t<span >\n\t\t\t          \tGo to github\t\t\t        <\/span>\n\t\t      \t<\/a>\n\t\t      <\/div>\n\t\t  \t  \t\t    <\/div>\n\t\t  <\/div>\n\t\t  <!-- col end -->\n\t\t  \n\t\t  \t\t<\/div>\n\t\t<!-- row end -->\n\n\t\t<\/div>\n\t\t<!-- container end -->\n\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8ac7fee elementor-widget elementor-widget-arter-project-description\" data-id=\"8ac7fee\" data-element_type=\"widget\" data-widget_type=\"arter-project-description.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\n\t\t<!-- container -->\n\t\t<div class=\"container-fluid\">\n\n\t\t<!-- row -->\n\t\t<div class=\"row\">\n\n\t\t  \t\t  <!-- col -->\n\t\t  <div class=\"col-lg-12\">\n\n\t\t    <!-- section title -->\n\t\t    <div class=\"art-section-title\">\n\t\t      <!-- title frame -->\n\t\t      <div class=\"art-title-frame\">\n\t\t        <!-- title -->\n\t\t        <h4 class=\"art-title-h\">\n\t\t    \t<span >\n\t\t          \tResources\t\t         <\/span>\n\t\t    \t<\/h4>\n\t\t      <\/div>\n\t\t      <!-- title frame end -->\n\t\t    <\/div>\n\t\t    <!-- section title end -->\n\n\t\t  <\/div>\n\t\t  <!-- col end -->\n\t\t  \n\t\t  \n\t\t  \t\t<\/div>\n\t\t<!-- row end -->\n\n\t\t<\/div>\n\t\t<!-- container end -->\n\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-108e7cc elementor-button-warning elementor-align-center elementor-widget elementor-widget-button\" data-id=\"108e7cc\" data-element_type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t<a href=\"https:\/\/www.yunpeng.site\/files\/apirec.pdf\" class=\"elementor-button-link elementor-button elementor-size-sm\" role=\"button\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon elementor-align-icon-left\">\n\t\t\t\t<i aria-hidden=\"true\" class=\"far fa-file-pdf\"><\/i>\t\t\t<\/span>\n\t\t\t\t\t\t<span class=\"elementor-button-text\">Download PDF<\/span>\n\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0f941a6 elementor-widget elementor-widget-arter-contact-form\" data-id=\"0f941a6\" data-element_type=\"widget\" data-widget_type=\"arter-contact-form.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\n\t\t<!-- container -->\n\t\t<div class=\"container-fluid\">\n\n\t\t<!-- row -->\n\t\t<div class=\"row\">\n\n\t\t  \t\t  <!-- col -->\n\t\t  <div class=\"col-lg-12\">\n\n\t\t    <!-- section title -->\n\t\t    <div class=\"art-section-title\">\n\t\t      <!-- title frame -->\n\t\t      <div class=\"art-title-frame\">\n\t\t        <!-- title -->\n\t\t        <h4 class=\"art-title-h\">\n\t\t    \t<span >\n\t\t          \tContact\t\t         <\/span>\n\t\t    \t<\/h4>\n\t\t      <\/div>\n\t\t      <!-- title frame end -->\n\t\t    <\/div>\n\t\t    <!-- section title end -->\n\n\t\t  <\/div>\n\t\t  <!-- col end -->\n\t\t  \n\t\t  \t\t  <!-- col -->\n\t\t  <div class=\"col-lg-12\">\n\n\t\t  <!-- contact form frame -->\n\t\t  <div class=\"art-a art-card\">\n\t\t\t  <div role=\"form\" class=\"wpcf7\" id=\"wpcf7-f201-o1\" lang=\"en-US\" dir=\"ltr\">\n<div class=\"screen-reader-response\"><p role=\"status\" aria-live=\"polite\" aria-atomic=\"true\"><\/p> <ul><\/ul><\/div>\n<form action=\"\/index.php\/wp-json\/wp\/v2\/posts\/537#wpcf7-f201-o1\" method=\"post\" class=\"wpcf7-form init\" novalidate=\"novalidate\" data-status=\"init\">\n<div style=\"display: none;\">\n<input type=\"hidden\" name=\"_wpcf7\" value=\"201\" \/>\n<input type=\"hidden\" name=\"_wpcf7_version\" value=\"5.4\" \/>\n<input type=\"hidden\" name=\"_wpcf7_locale\" value=\"en_US\" \/>\n<input type=\"hidden\" name=\"_wpcf7_unit_tag\" value=\"wpcf7-f201-o1\" \/>\n<input type=\"hidden\" name=\"_wpcf7_container_post\" value=\"0\" \/>\n<input type=\"hidden\" name=\"_wpcf7_posted_data_hash\" value=\"\" \/>\n<\/div>\n<label> Your name\n    <span class=\"wpcf7-form-control-wrap your-name\"><input type=\"text\" name=\"your-name\" value=\"\" size=\"40\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" aria-required=\"true\" aria-invalid=\"false\" \/><\/span> <\/label>\n\n<label> Your email\n    <span class=\"wpcf7-form-control-wrap your-email\"><input type=\"email\" name=\"your-email\" value=\"\" size=\"40\" class=\"wpcf7-form-control wpcf7-text wpcf7-email wpcf7-validates-as-required wpcf7-validates-as-email\" aria-required=\"true\" aria-invalid=\"false\" \/><\/span> <\/label>\n\n<label> Subject\n    <span class=\"wpcf7-form-control-wrap your-subject\"><input type=\"text\" name=\"your-subject\" value=\"\" size=\"40\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" aria-required=\"true\" aria-invalid=\"false\" \/><\/span> <\/label>\n\n<label> Your message (optional)\n    <span class=\"wpcf7-form-control-wrap your-message\"><textarea name=\"your-message\" cols=\"40\" rows=\"10\" class=\"wpcf7-form-control wpcf7-textarea\" aria-invalid=\"false\"><\/textarea><\/span> <\/label>\n\n<div class=\"anr_captcha_field\"><div id=\"anr_captcha_field_1\" class=\"anr_captcha_field_div\"><\/div><\/div><span class=\"wpcf7-form-control-wrap g-recaptcha-response\"><\/span> \n\n<input type=\"submit\" value=\"Submit\" class=\"wpcf7-form-control wpcf7-submit\" \/><div class=\"wpcf7-response-output\" aria-hidden=\"true\"><\/div><\/form><\/div>\t\t  <\/div>\n\t\t  <!-- contact form frame end -->\n\n\t\t  <\/div>\n\t\t  <!-- col end -->\n\t\t  \t\t\t\t\n\t\t<\/div>\n\t\t  <!-- row end -->\n\n\t\t<\/div>\n\t\t<!-- container end -->\t\t\t\n\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Revisiting, Benchmarking and Exploring API Recommendation: How Far Are We? TSE 2022 Paper Information Paper Name: Revisiting, Benchmarking and Exploring&#8230; <\/p>\n<div class=\"art-el-more\"><a href=\"https:\/\/yunpeng.site\/index.php\/2022\/08\/17\/tse-2022\/\" class=\"art-link art-color-link art-w-chevron\">Read more<\/a><\/div>\n","protected":false},"author":1,"featured_media":539,"comment_status":"closed","ping_status":"open","sticky":false,"template":"elementor_header_footer","format":"standard","meta":{"spay_email":"","footnotes":""},"categories":[4],"tags":[7],"jetpack_featured_media_url":"https:\/\/i2.wp.com\/yunpeng.site\/wp-content\/uploads\/2022\/08\/TSE22_TeaserImage.png?fit=4244%2C2140&ssl=1","_links":{"self":[{"href":"https:\/\/yunpeng.site\/index.php\/wp-json\/wp\/v2\/posts\/537"}],"collection":[{"href":"https:\/\/yunpeng.site\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/yunpeng.site\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/yunpeng.site\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/yunpeng.site\/index.php\/wp-json\/wp\/v2\/comments?post=537"}],"version-history":[{"count":8,"href":"https:\/\/yunpeng.site\/index.php\/wp-json\/wp\/v2\/posts\/537\/revisions"}],"predecessor-version":[{"id":707,"href":"https:\/\/yunpeng.site\/index.php\/wp-json\/wp\/v2\/posts\/537\/revisions\/707"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/yunpeng.site\/index.php\/wp-json\/wp\/v2\/media\/539"}],"wp:attachment":[{"href":"https:\/\/yunpeng.site\/index.php\/wp-json\/wp\/v2\/media?parent=537"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/yunpeng.site\/index.php\/wp-json\/wp\/v2\/categories?post=537"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/yunpeng.site\/index.php\/wp-json\/wp\/v2\/tags?post=537"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}