跳到主要内容
知仓学习社ZHICANG

slr-automation-guide

Tools and pipelines for automating systematic literature reviews

不碰外部(只输出文字)无严重或高危命中brycewang-stanford/Auto-Empirical-Research-Skills

它会碰到什么

扫了多少1 个文本文件,6 KB
它会碰到什么不碰外部(只输出文字)
命中总数0 处
命中统计严重 0 · 高 0 · 中 0 · 低 0

这一栏是扫描器报的事实,不是结论。命中多不等于有毒(安全工具、规则库、示例脚本本来就会包含危险写法),命中少也不等于干净。它和你手上的凭据、文件、网络有什么关系,需要你自己看。

技能内容

Systematic Literature Review Automation Guide

Overview

Systematic Literature Reviews (SLRs) are rigorous, reproducible surveys of research evidence following protocols like PRISMA and Cochrane. This guide covers tools that automate the most time-consuming steps — deduplication, title/abstract screening, full-text assessment, and data extraction — using active learning, NLP, and AI agents. Key tools include ASReview, Rayyan, and custom pipelines.

SLR Pipeline

Protocol Definition (PICO, inclusion/exclusion criteria)
         ↓
   Database Search (PubMed, Scopus, Web of Science)
         ↓
   Deduplication (ASReview, Rayyan, or custom)
         ↓
   Title/Abstract Screening (AI-assisted prioritization)
         ↓
   Full-text Assessment (relevance + quality)
         ↓
   Data Extraction (structured tables)
         ↓
   Quality Assessment (risk of bias)
         ↓
   Synthesis + PRISMA Report

ASReview (Active Learning)

# Install ASReview
pip install asreview

# Launch web interface
asreview lab

# CLI screening
asreview simulate benchmark:van_de_Schoot_2017 \
  -m nb -e tfidf \
  --n_prior_included 5 --n_prior_excluded 5 \
  -o results/simulation.asreview

Python API

import asreview
from asreview import ASReviewData, ReviewSimulate

# Load dataset (RIS, CSV, or Excel)
data = ASReviewData.from_file("search_results.ris")
print(f"Records: {len(data)}")

# Active learning simulation
sim = ReviewSimulate(
    data,
    model="nb",              # Naive Bayes classifier
    feature_extraction="tfidf",
    query_strategy="max",     # Show most likely relevant first
    n_prior_included=5,
    n_prior_excluded=5,
)
sim.review()

# Results: screening order optimized by relevance
print(f"Work saved: {sim.work_saved():.1%}")
# Typically 80-95% of irrelevant papers screened out early

Deduplication

# ASReview deduplication
from asreview.data import ASReviewData

# Merge results from multiple databases
datasets = [
    ASReviewData.from_file("pubmed_results.ris"),
    ASReviewData.from_file("scopus_results.ris"),
    ASReviewData.from_file("wos_results.ris"),
]

merged = ASReviewData.from_dataframe(
    pd.concat([d.df for d in datasets])
)
print(f"Before dedup: {len(merged)}")

# Fuzzy matching on title + DOI
deduplicated = merged.deduplicate()
print(f"After dedup: {len(deduplicated)}")

AI-Assisted Screening

# Custom LLM screening pipeline
from slr_tools import LLMScreener

screener = LLMScreener(
    llm_provider="anthropic",
    criteria={
        "population": "Adults with type 2 diabetes",
        "intervention": "SGLT2 inhibitors",
        "outcomes": "Cardiovascular events",
        "study_types": ["RCT", "cohort", "meta-analysis"],
        "exclusions": ["animal studies", "in vitro", "pediatric"],
    },
)

# Screen abstracts
results = screener.screen_batch(
    records=search_results,
    fields=["title", "abstract"],
    threshold=0.5,  # Include if P(relevant) > 0.5
)

for r in results:
    print(f"[{'INCLUDE' if r.include else 'EXCLUDE'}] "
          f"(p={r.confidence:.2f}) {r.title[:60]}...")
    print(f"  Reason: {r.reason}")

Data Extraction

# Structured data extraction from full-text papers
from slr_tools import DataExtractor

extractor = DataExtractor(
    llm_provider="anthropic",
    schema={
        "study_design": "str",
        "sample_size": "int",
        "population_description": "str",
        "intervention_details": "str",
        "primary_outcome": "str",
        "effect_size": "float",
        "confidence_interval": "str",
        "p_value": "float",
        "follow_up_duration": "str",
        "risk_of_bias": "str",
    },
)

# Extract from PDF
extracted = extractor.extract("paper.pdf")
print(extracted.to_dict())

# Batch extraction
results_df = extractor.extract_batch("fulltext_papers/")
results_df.to_csv("extraction_table.csv")

PRISMA Flow Diagram

# Generate PRISMA 2020 flow diagram
from slr_tools import PRISMAFlow

flow = PRISMAFlow(
    identification={
        "databases": {"PubMed": 1200, "Scopus": 890, "WoS": 650},
        "other_sources": {"citation_search": 45},
    },
    screening={
        "after_dedup": 1850,
        "excluded_title_abstract": 1620,
        "sought_fulltext": 230,
        "not_retrieved": 12,
    },
    included={
        "assessed_fulltext": 218,
        "excluded_fulltext": {
            "wrong_population": 45,
            "wrong_intervention": 32,
            "wrong_outcome": 28,
            "wrong_study_type": 15,
        },
        "final_included": 98,
    },
)

flow.save_svg("prisma_flow.svg")
flow.save_latex("prisma_flow.tex")

Quality Assessment

# Risk of Bias assessment (Cochrane RoB 2)
from slr_tools import RiskOfBias

rob = RiskOfBias(tool="rob2")  # or "robins_i" for non-RCTs

assessment = rob.assess(
    paper="paper.pdf",
    domains=[
        "randomization_process",
        "deviations_from_intervention",
        "missing_outcome_data",
        "outcome_measurement",
        "selection_of_reported_result",
    ],
)

print(f"Overall: {assessment.overall_judgment}")
for domain, judgment in assessment.domain_judgments.items():
    print(f"  {domain}: {judgment}")

Use Cases

  1. Medical SLRs: Cochrane-style evidence reviews
  2. CS surveys: Comprehensive literature mapping
  3. Policy reviews: Evidence synthesis for policy decisions
  4. Thesis literature chapters: Structured review sections
  5. Grant applications: Rapid evidence landscape scans

References

想直接用这个技能?

本站把开放许可(MIT / Apache 等)的技能按仓库打包整理到网盘,点一下转存到你自己的网盘,不用一个个从 GitHub 拉。许可未声明的技能只给原始仓库链接,不打包。