Spaces:
Running
Running
Upload app.py with huggingface_hub
Browse files
app.py
CHANGED
|
@@ -116,8 +116,40 @@ def format_report(result: dict) -> str:
|
|
| 116 |
if categories:
|
| 117 |
md += f"| **分类** | {', '.join(categories)} |\n"
|
| 118 |
|
| 119 |
-
# =====
|
| 120 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 121 |
md += f"### 🎯 子领域定位\n\n**{direction.get('subfield', '未知')}**\n\n"
|
| 122 |
|
| 123 |
trend = direction.get('subfield_trend', '暂无分析')
|
|
@@ -149,15 +181,18 @@ def format_report(result: dict) -> str:
|
|
| 149 |
|
| 150 |
md += "\n"
|
| 151 |
|
| 152 |
-
# ===== 第
|
| 153 |
-
md += "\n---\n\n##
|
| 154 |
md += "> 评分逻辑:可复现性(80分)评估代码能否被他人成功跑通;对比实验适配度(20分)评估该仓库能否直接用于论文 Experiment section。\n\n"
|
| 155 |
|
| 156 |
-
if not
|
| 157 |
md += "**未找到相关开源仓库。**\n\n"
|
| 158 |
return md
|
| 159 |
|
| 160 |
-
|
|
|
|
|
|
|
|
|
|
| 161 |
full_name = repo.get("full_name", f"仓库 {i+1}")
|
| 162 |
html_url = repo.get("html_url", "")
|
| 163 |
ev = repo.get("evaluation", {})
|
|
@@ -219,13 +254,14 @@ def format_report(result: dict) -> str:
|
|
| 219 |
md += f" | 匹配词: `{repo.get('match_keyword', '')}`"
|
| 220 |
md += "\n\n---\n\n"
|
| 221 |
|
| 222 |
-
# ===== 第
|
| 223 |
-
md += "##
|
| 224 |
|
| 225 |
-
|
| 226 |
-
|
|
|
|
| 227 |
not_ready = [
|
| 228 |
-
r for r in
|
| 229 |
if r["evaluation"].get("benchmark_readiness") not in ("ready", "partial")
|
| 230 |
]
|
| 231 |
|
|
|
|
| 116 |
if categories:
|
| 117 |
md += f"| **分类** | {', '.join(categories)} |\n"
|
| 118 |
|
| 119 |
+
# ===== 论文自身代码评估 =====
|
| 120 |
+
own_repo = None
|
| 121 |
+
other_repos = []
|
| 122 |
+
for r in repos:
|
| 123 |
+
if r.get("method_family") == "本文代码":
|
| 124 |
+
own_repo = r
|
| 125 |
+
else:
|
| 126 |
+
other_repos.append(r)
|
| 127 |
+
|
| 128 |
+
if own_repo is not None:
|
| 129 |
+
ev = own_repo.get("evaluation", {})
|
| 130 |
+
md += "\n---\n\n## 二、本文代码复现评估\n\n"
|
| 131 |
+
md += "> 该论文是否提供了官方代码?代码质量如何?能否直接复现论文实验结果?\n\n"
|
| 132 |
+
md += f"| 仓库 | Stars | 综合评分 | 可复现性 | 对比实验适配度 |\n"
|
| 133 |
+
md += f"|------|:----:|:----:|:----:|:----:|\n"
|
| 134 |
+
verdict_icon = {"reproducible": "✅", "partially": "⚠️", "not_reproducible": "❌", "error": "💥"}.get(ev.get("verdict", ""), "❓")
|
| 135 |
+
readiness_icon = {"ready": "🟢", "partial": "🟡", "not_ready": "🔴"}.get(ev.get("benchmark_readiness", ""), "⚪")
|
| 136 |
+
md += f"| [{own_repo['full_name']}]({own_repo.get('html_url', '#')}) | {own_repo.get('stars', 0)} | **{ev.get('overall_score', 'N/A')}/100** | {verdict_icon} | {readiness_icon} |\n\n"
|
| 137 |
+
md += f"### 📋 详细评估\n\n{ev.get('reasoning', 'N/A')}\n\n"
|
| 138 |
+
|
| 139 |
+
risks = ev.get("risks", [])
|
| 140 |
+
if risks:
|
| 141 |
+
md += "### ⚠️ 风险点\n\n"
|
| 142 |
+
for r_ in risks:
|
| 143 |
+
md += f"- {r_}\n"
|
| 144 |
+
md += "\n"
|
| 145 |
+
md += f"### 💡 使用建议\n\n{ev.get('suggested_use', 'N/A')}\n\n"
|
| 146 |
+
else:
|
| 147 |
+
md += "\n---\n\n## 二、本文代码复现评估\n\n"
|
| 148 |
+
md += "> 🔴 **未找到该论文的官方开源代码。**\n>\n"
|
| 149 |
+
md += "> 这意味着复现该论文的实验结果需要从头实现,难度较高。建议在对比实验中使用下面列出的同一方法族的开源实现作为替代。\n\n"
|
| 150 |
+
|
| 151 |
+
# ===== 第三部分:研究方向全景 =====
|
| 152 |
+
md += "\n---\n\n## 三、研究方向全景\n\n"
|
| 153 |
md += f"### 🎯 子领域定位\n\n**{direction.get('subfield', '未知')}**\n\n"
|
| 154 |
|
| 155 |
trend = direction.get('subfield_trend', '暂无分析')
|
|
|
|
| 181 |
|
| 182 |
md += "\n"
|
| 183 |
|
| 184 |
+
# ===== 第四部分:仓库评估排名 =====
|
| 185 |
+
md += "\n---\n\n## 四、开源实现评估排名\n\n"
|
| 186 |
md += "> 评分逻辑:可复现性(80分)评估代码能否被他人成功跑通;对比实验适配度(20分)评估该仓库能否直接用于论文 Experiment section。\n\n"
|
| 187 |
|
| 188 |
+
if not other_repos and not own_repo:
|
| 189 |
md += "**未找到相关开源仓库。**\n\n"
|
| 190 |
return md
|
| 191 |
|
| 192 |
+
if not other_repos:
|
| 193 |
+
md += "**未找到其他开源仓库(仅找到论文自身代码)。**\n\n"
|
| 194 |
+
|
| 195 |
+
for i, repo in enumerate(other_repos):
|
| 196 |
full_name = repo.get("full_name", f"仓库 {i+1}")
|
| 197 |
html_url = repo.get("html_url", "")
|
| 198 |
ev = repo.get("evaluation", {})
|
|
|
|
| 254 |
md += f" | 匹配词: `{repo.get('match_keyword', '')}`"
|
| 255 |
md += "\n\n---\n\n"
|
| 256 |
|
| 257 |
+
# ===== 第五部分:对比实验推荐总结 =====
|
| 258 |
+
md += "## 五、对比实验推荐总结\n\n"
|
| 259 |
|
| 260 |
+
all_evaluated = other_repos + ([own_repo] if own_repo else [])
|
| 261 |
+
ready = [r for r in all_evaluated if r["evaluation"].get("benchmark_readiness") == "ready"]
|
| 262 |
+
partial = [r for r in all_evaluated if r["evaluation"].get("benchmark_readiness") == "partial"]
|
| 263 |
not_ready = [
|
| 264 |
+
r for r in all_evaluated
|
| 265 |
if r["evaluation"].get("benchmark_readiness") not in ("ready", "partial")
|
| 266 |
]
|
| 267 |
|