ZZZyx3587 commited on
Commit
d4df608
·
verified ·
1 Parent(s): 151e05c

Upload app.py with huggingface_hub

Browse files
Files changed (1) hide show
  1. app.py +47 -11
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
- md += "\n---\n\n## 二、研究方向全景\n\n"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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## 、开源实现评估排名\n\n"
154
  md += "> 评分逻辑:可复现性(80分)评估代码能否被他人成功跑通;对比实验适配度(20分)评估该仓库能否直接用于论文 Experiment section。\n\n"
155
 
156
- if not repos:
157
  md += "**未找到相关开源仓库。**\n\n"
158
  return md
159
 
160
- for i, repo in enumerate(repos):
 
 
 
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 += "## 、对比实验推荐总结\n\n"
224
 
225
- ready = [r for r in repos if r["evaluation"].get("benchmark_readiness") == "ready"]
226
- partial = [r for r in repos if r["evaluation"].get("benchmark_readiness") == "partial"]
 
227
  not_ready = [
228
- r for r in repos
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