Estimate a coarse paper quality score from source / venue metadata.
(paper: Dict)
| 537 | |
| 538 | |
| 539 | def estimate_quality_score(paper: Dict) -> float: |
| 540 | """Estimate a coarse paper quality score from source / venue metadata.""" |
| 541 | source = str(paper.get("source") or "").lower() |
| 542 | journal = str(paper.get("journal") or "").lower() |
| 543 | conference_key = infer_conference_key(paper) |
| 544 | venue = str(paper.get("venue") or "").lower() |
| 545 | |
| 546 | if source == "journal": |
| 547 | if journal in {"nature", "science", "cell"}: |
| 548 | return 0.95 |
| 549 | if "nature" in venue or "science" in venue or "cell" in venue: |
| 550 | return 0.9 |
| 551 | return 0.75 |
| 552 | |
| 553 | if source == "openreview": |
| 554 | if conference_key in {"neurips", "icml", "iclr"}: |
| 555 | return 0.85 |
| 556 | if conference_key in {"acl", "emnlp", "cvpr", "iccv", "eccv", "acmmm"}: |
| 557 | return 0.8 |
| 558 | if any(name in venue for name in ("neurips", "icml", "iclr")): |
| 559 | return 0.85 |
| 560 | if any(name in venue for name in ("acl", "emnlp", "cvpr", "iccv", "eccv", "acm multimedia")): |
| 561 | return 0.8 |
| 562 | return 0.72 |
| 563 | |
| 564 | if source == "arxiv": |
| 565 | categories = [str(category).lower() for category in paper.get("categories", [])] |
| 566 | if any(category.startswith("q-bio") for category in categories): |
| 567 | return 0.62 |
| 568 | return 0.58 |
| 569 | |
| 570 | return 0.6 |
| 571 | |
| 572 | |
| 573 | def infer_conference_key(paper: Dict) -> str: |
no test coverage detected