{"id":496,"date":"2022-03-25T22:52:03","date_gmt":"2022-03-25T14:52:03","guid":{"rendered":"https:\/\/yunpeng.site\/?p=496"},"modified":"2024-01-14T19:16:25","modified_gmt":"2024-01-14T11:16:25","slug":"icse22","status":"publish","type":"post","link":"https:\/\/yunpeng.site\/index.php\/2022\/03\/25\/icse22\/","title":{"rendered":"ICSE22"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"496\" class=\"elementor elementor-496\" 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-e94bf49 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"e94bf49\" 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-59b3092\" data-id=\"59b3092\" 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-99a7917 elementor-widget elementor-widget-arter-project-banner\" data-id=\"99a7917\" 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          \tStatic Inference Meets Deep Learning: A Hybrid Type Inference Approach for Python\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          \tICSE 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-788f320 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"788f320\" 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-f7070cc\" data-id=\"f7070cc\" 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-6be5c3c elementor-widget elementor-widget-arter-project-description\" data-id=\"6be5c3c\" 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> Static Inference Meets Deep Learning: A Hybrid Type Inference Approach for Python<\/p><p><strong>Conference:<\/strong> <a href=\"https:\/\/conf.researchr.org\/home\/icse-2022\">44th International Conference on Software Engineering (ICSE2022)<\/a><\/p><p><strong>Authors:<\/strong> <span style=\"text-decoration: underline\"><em>Yun Peng<\/em><\/span>, Cuiyun Gao, Zongjie Li, Bowei Gao, David Lo, Qirun Zhang, 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-7c7d034 elementor-widget elementor-widget-arter-project-description\" data-id=\"7c7d034\" 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>Type inference for dynamic programming languages such as Python is an important yet challenging task. Static type inference techniques can precisely infer variables with enough static constraints but are unable to handle variables with dynamic features. Deep learning (DL) based approaches are feature-agnostic, but they cannot guarantee the correctness of the predicted types. Their performance significantly depends on the quality of the training data (i.e., DL models perform poorly on some common types that rarely appear in the training dataset). It is interesting to note that the static and DL-based approaches offer complementary benefits. Unfortunately, to our knowledge, precise type inference based on both static inference and neural predictions has not been exploited and remains an open challenge. In particular, it is hard to integrate DL models into the framework of rule-based static approaches.<\/p><p>This paper fills the gap and proposes a hybrid type inference approach named HiTyper based on both static inference and deep learning. Specifically, our key insight is to record type dependencies among variables in each function and encode the dependency information in type dependency graphs (TDGs). Based on TDGs, we can easily integrate type inference rules in the nodes to conduct static inference and type rejection rules to inspect the correctness of neural predictions. HiTyper iteratively conducts static inference and DL-based prediction until the TDG is fully inferred. Experiments on two benchmark datasets show that HiTyper outperforms state-of-the-art DL models by exactly matching 10% more human annotations. HiTyper also achieves an increase of more than 30% on inferring rare types. Considering only the static part of HiTyper, it infers 2 ~ 3 times more types than existing static type inference tools. Moreover, HiTyper successfully corrected seven wrong human annotations in six GitHub projects, and two of them have already been approved by the repository owners.<\/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-ee572fb elementor-widget elementor-widget-heading\" data-id=\"ee572fb\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h4 class=\"elementor-heading-title elementor-size-default\">Workflow of HiTyper<\/h4>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a81bc85 elementor-widget elementor-widget-arter-project-image-featured\" data-id=\"a81bc85\" data-element_type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;none&quot;}\" 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\/03\/workflow.png?fit=1920%2C538&#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\/03\/workflow.png?fit=1920%2C538&#038;ssl=1\" alt=\"Workflow of HiTyper\">\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-25ae040 elementor-widget elementor-widget-arter-project-description\" data-id=\"25ae040\" 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          \tCode\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\/HiTyper\">https:\/\/github.com\/JohnnyPeng18\/HiTyper<\/a><\/p><p>or Simply type: <em>pip install hityper<\/em><\/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\/HiTyper\" 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-fe99766 elementor-widget elementor-widget-heading\" data-id=\"fe99766\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h4 class=\"elementor-heading-title elementor-size-default\">Resources<\/h4>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c749dc3 elementor-button-warning elementor-align-center elementor-widget elementor-widget-button\" data-id=\"c749dc3\" 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\/hityper.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\">PDF Download<\/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\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-e6ee0b8 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"e6ee0b8\" 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-97e646e\" data-id=\"97e646e\" 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-52fe45e elementor-widget elementor-widget-arter-contact-form\" data-id=\"52fe45e\" 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\/496#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>Static Inference Meets Deep Learning: A Hybrid Type Inference Approach for Python ICSE 2022 Paper Information Paper Name: Static Inference&#8230; <\/p>\n<div class=\"art-el-more\"><a href=\"https:\/\/yunpeng.site\/index.php\/2022\/03\/25\/icse22\/\" class=\"art-link art-color-link art-w-chevron\">Read more<\/a><\/div>\n","protected":false},"author":1,"featured_media":499,"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\/03\/workflow.png?fit=1920%2C538&ssl=1","_links":{"self":[{"href":"https:\/\/yunpeng.site\/index.php\/wp-json\/wp\/v2\/posts\/496"}],"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=496"}],"version-history":[{"count":14,"href":"https:\/\/yunpeng.site\/index.php\/wp-json\/wp\/v2\/posts\/496\/revisions"}],"predecessor-version":[{"id":710,"href":"https:\/\/yunpeng.site\/index.php\/wp-json\/wp\/v2\/posts\/496\/revisions\/710"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/yunpeng.site\/index.php\/wp-json\/wp\/v2\/media\/499"}],"wp:attachment":[{"href":"https:\/\/yunpeng.site\/index.php\/wp-json\/wp\/v2\/media?parent=496"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/yunpeng.site\/index.php\/wp-json\/wp\/v2\/categories?post=496"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/yunpeng.site\/index.php\/wp-json\/wp\/v2\/tags?post=496"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}