Skip to content
FunCoding

asreview-screening

Screen papers for systematic reviews using ASReview active learning. Use when: user has a large set of papers to screen for inclusion/exclusion, wants to prioritize relevant papers, or needs to reduce manual screening workload. NOT for: searching papers (use literature-search) or meta-analysis (use meta-analysis).

Star
962
Category
Science
License
MIT
Last commit
Oct 8, 2026

skills/asreview-screening/SKILL.md

View on GitHub

ASReview Screening

Use active learning to prioritize and screen papers for systematic reviews, reducing manual workload by up to 95%. ASReview uses machine learning to learn from your screening decisions and prioritize the most likely relevant papers.

When to Use

  • "I have 500 papers to screen for my systematic review"
  • "Help me prioritize papers for inclusion"
  • "Set up active learning screening for my review"
  • "How many papers do I need to screen manually?"

When NOT to Use

  • Searching for papers (use literature-search)
  • Performing meta-analysis (use meta-analysis)
  • Writing the review (use systematic-review + paper-writing)
  • Small sets (< 50 papers) — manual screening is faster

Setup

Install ASReview

pip install asreview asreview-insights asreview-datatools

Prepare Input Data

ASReview accepts RIS, CSV, TSV, or Excel files with at minimum:

  • title: Paper title
  • abstract: Paper abstract

Optional but recommended:

  • doi, authors, year, keywords, label (if some are pre-labeled)

Export from Search Results

# Convert Semantic Scholar / OpenAlex results to ASReview format
import csv

def export_for_asreview(papers: list[dict], output_path: str):
    """Export papers to CSV for ASReview."""
    with open(output_path, 'w', newline='', encoding='utf-8') as f:
        writer = csv.DictWriter(f, fieldnames=[
            'title', 'abstract', 'authors', 'year', 'doi', 'keywords'
        ])
        writer.writeheader()
        for p in papers:
            writer.writerow({
                'title': p.get('title', ''),
                'abstract': p.get('abstract', ''),
                'authors': '; '.join(a.get('name', '') for a in p.get('authors', [])),
                'year': p.get('year', ''),
                'doi': p.get('externalIds', {}).get('DOI', ''),
                'keywords': '; '.join(p.get('fieldsOfStudy', []))
            })
    print(f"Exported {len(papers)} papers to {output_path}")

Screening Workflow

Step 1: Create ASReview Project

# Start ASReview LAB (web interface)
asreview lab

# Or use the command-line simulation mode for automated screening
asreview simulate your_papers.csv \
  --state_file output/simulation.asreview \
  --model nb \
  --feature_extraction tfidf \
  --query_strategy max \
  --balance_strategy double \
  --n_prior_included 5 \
  --n_prior_excluded 5

Step 2: Prior Knowledge

Provide seed papers to initialize the model:

  • Include 1-5 papers you know are relevant (included)
  • Include 1-5 papers you know are irrelevant (excluded)
  • More diverse priors = better initial model

Step 3: Active Learning Loop

# Programmatic screening with ASReview
from asreview import ASReviewData, ReviewSimulate
from asreview.models import NBModel
from asreview.query_strategies import MaxQuery
from asreview.feature_extraction import Tfidf

# Load data
data = ASReviewData.from_file("papers.csv")

# Configure model
model = NBModel()
query_strategy = MaxQuery()
feature_extraction = Tfidf()

# The model learns from each decision and reprioritizes remaining papers
# In practice, use the web interface (asreview lab) for interactive screening

Step 4: Stopping Criteria

When to stop screening:

MethodRuleConservative?
Consecutive irrelevantStop after N consecutive irrelevant papersModerate
PercentageScreen top 10-20% of all papersConservative
Recall targetEstimate 95% recall reachedModel-dependent
ASReview heuristicStop when model confidence stabilizesBuilt-in

Recommended: Screen until you've seen at least 50 consecutive irrelevant papers after finding all known relevant papers.

Quality Assessment

Simulation for Validation

If you have a fully labeled dataset, simulate to assess ASReview's performance:

# Run simulation
asreview simulate labeled_papers.csv \
  --state_file simulation.asreview

# Generate metrics
asreview insights simulation.asreview \
  --output metrics.json

# Key metrics:
# - WSS@95: Work Saved over Sampling at 95% recall
# - RRF@10: Relevant Records Found after screening 10%
# - ATD: Average Time to Discovery

Interpreting Results

MetricGoodExcellent
WSS@95> 70%> 85%
RRF@10> 40%> 60%
ATD< 30% of dataset< 15% of dataset

Integration with Systematic Review Workflow

literature-search → export results → asreview-screening → filtered papers → systematic-review
  1. literature-search: Multi-database search, deduplication
  2. Export: Convert to ASReview-compatible format (CSV/RIS)
  3. ASReview screening: Active learning prioritization
  4. Output: List of included/excluded papers with reasons
  5. systematic-review: Data extraction, meta-analysis, PRISMA report

PRISMA Flow Diagram Numbers

After screening, report:

  • Total records identified (from all databases)
  • Duplicates removed
  • Records screened (title/abstract)
  • Records excluded (with reasons)
  • Full-text articles assessed
  • Studies included in synthesis

Advanced Features

Multiple Models

# Compare model performance
asreview simulate papers.csv --model nb --state_file sim_nb.asreview
asreview simulate papers.csv --model svm --state_file sim_svm.asreview
asreview simulate papers.csv --model logistic --state_file sim_lr.asreview

Deduplication

# Remove duplicates before screening
asreview data dedup input.csv --output deduped.csv

Best Practices

  1. Always provide diverse prior knowledge (relevant + irrelevant examples)
  2. Use at least 2-3 relevant and 5-10 irrelevant seed papers
  3. Screen conservatively — missing a relevant paper is worse than extra screening
  4. Document your stopping criteria and justify in the methods section
  5. Run simulation on a subset if possible to estimate recall
  6. Export screening decisions for PRISMA flow diagram
  7. Never fabricate screening statistics or WSS values

Zero-Hallucination Rule

  • ALL screening statistics must come from actual ASReview output
  • NEVER estimate recall without running a proper simulation
  • Report exact numbers from the screening log, not approximations

Similar Skills

wiki-query

PApaperclipai/paperclip101k2,948 new stars in the last 7 days

Official

clinical-case-report

NEnexu-io/open-design101k1,126 new stars in the last 7 days

systematic-literature-review

BYbytedance/deer-flow84k368 new stars in the last 7 days

academic-paper-review

BYbytedance/deer-flow84k368 new stars in the last 7 days

directory-submissions

COcoreyhaines31/marketingskills54k958 new stars in the last 7 days

academic-paper

IMImbad0202/academic-research-skills52k972 new stars in the last 7 days