projects
software, datasets, and research tools.
software
theoryminer
Python package that turns papers into causal maps of the claims they make
theoryminer assembles theories from text. It reads a PDF or a folder of PDFs, finds the sentences that make causal claims, extracts each cause and effect pair, and groups the different names authors give to the same construct. The result is an interactive causal map in which every arrow leads back to the sentences, and the papers, that claim it.
- Documentation
- Package on PyPI (
pip install theoryminer) - Tutorial in Google Colab
- GitHub repository
The package brings several of my earlier projects into one pipeline:
- Extraction: causal relations come from the SocioCausaNet model.
- Harmonisation: similar constructs are grouped by clustering and named from their own words, or mapped to the ELSST thesaurus, following the construct harmonization work.
- Snowballing: it collects the DOIs a set of papers cites and downloads the open-access copies, with a licence check, for the next round of reading.
- The map: a single offline HTML page. You can search and filter by paper, role and evidence count, click an arrow to read its sentences with their DOIs, and export the map as PNG, SVG or GraphML.
The thumbnail is the map built from the seven open-access sample papers that ship with the package.
statcheck-ml
Machine-learned extraction of reported statistics, in Python, R and the browser
statcheck-ml replaces the extraction step of the R package statcheck. statcheck finds reported test results with regular expressions and then recomputes each p-value. The arithmetic is sound, but the regular expressions fail when PDF conversion damages the text, and in a real corpus about half of the results are damaged that way. statcheck-ml uses a small character-level model to find those results. The p-value check itself stays closed-form arithmetic: the model finds results, it never judges them.
On a holdout of unseen documents, running statcheck first and letting the model add what it missed raises F1 from 0.636 to 0.908.
The project ships in three forms, all built from one shared specification and checked against the same parity cases:
- Web app: try it in the browser. Drop in up to ten PDFs; everything runs in the tab and nothing is uploaded. Source
- Python package and command line tool:
statcheck-ml check paper.pdf. Source, models, dataset and full report - R package:
statcheckml, withsc_check("paper.pdf"). Source
The training labels are bronze: three language-model raters annotated each passage and a fourth adjudicated disagreements, and no human gold set exists yet. The report gives the agreement study and every number with its interval.
statcheck-ml builds on statcheck by Michèle B. Nuijten, Sacha Epskamp and colleagues.
CESSC
causal and non-causal sentence classification dataset and model
CESSC provides a curated dataset and a fine-tuned BERT-based model for binary classification of causal and non-causal sentences within social science texts. The work is connected to the paper (Norouzi et al., 2025).
- Published article
- Fine-tuned BERT model on Hugging Face
- Dataset on Hugging Face
- Dataset on GitHub
- Source code
1,000 manually annotated sentences, supplementary machine-labeled sentences, scripts for model fine-tuning and evaluation, and benchmark results.
SocioCausaNet
Multi-task BERT model for joint causal extraction from text
SocioCausaNet is a fine-tuned BERT-based multi-task model that jointly extracts causal relationships from text. It performs three tasks simultaneously: classifying whether sentences contain causal claims, identifying cause and effect spans via BIO tagging, and linking cause-effect pairs with typed relations. The model handles complex patterns including one-to-many and many-to-many cause-effect structures.
- Hugging Face model
- Hugging Face dataset — annotated causal sentence and cause–effect span dataset
- GitHub repository
- Streamlit web app (PDF causal relation miner)
The model is used in production by the MetaCheck tool on ScienceVerse for evaluating randomization and causal claims in scientific reports. Training data includes expert-annotated sentences and the model supports multiple prediction strategies with adjustable confidence thresholds.
Social Science Construct Harmonization
Benchmarking ML models for merging heterogeneous social science concepts
Social Science Construct Harmonization evaluates machine learning models for concept integration — merging heterogeneous social science terms like “Insomnia” and “Sleeping Disorders” into standardized, unified constructs. The project uses a factorial experimental design testing five vector representation models against three harmonization strategies, with an evaluation framework assessing performance, reliability, and bias.
The companion webapp is a fully client-side tool for clustering conceptual terms and mapping them to the ELSST thesaurus hierarchy. It offers three techniques:
- Pairwise and HDBSCAN (with UMAP dimensionality reduction): with default best-calibrated hyperparameters, these methods cluster related constructs by semantic similarity directly in the embedding space (powered by All-MPNet-Base-v2).
- ELSST Lookup: based on the ELSST thesaurus, this mode standardizes a user’s input query and maps it to the most similar concept within the taxonomy, with an optional two-stage cross-encoder re-ranking pipeline using
ms-marco-MiniLM-L-6-v2for more accurate matching.
Paper Hunter
Human-in-the-loop bulk paper downloader using DOIs, forked from the eScience project
Paper Hunter is a human-in-the-loop tool for bulk-downloading academic papers by DOI, created as an independent project by a fork of eScience project. It provides a straightforward browser-based interface where researchers paste a list of DOIs and receive direct download links, with smart handling for both open-access and paywalled content.
research
Research Tools in Progress
DAG generation and Meta-Science RAG prototypes
Several research tools are currently in development:
- DAG Generator: automated generation of directed acyclic graphs from causal texts.
- Meta-Science RAG: a retrieval-augmented generation pipeline for supporting theory-building in the social sciences.
These entries are placeholders for ongoing work and will be expanded as the tools become ready to share.
fun
Audio Compress
browser-based tool to compress and split audio files
A browser-based tool to compress, split, or both — process audio files directly in the browser. Supports MP3, M4A, OGG, FLAC, WAV, and WebM formats. No uploads to any server, everything runs client-side via Web Audio API.
Sub Translator
SRT subtitle translation tool that runs in the browser
SRT subtitle translator that runs entirely client-side. Upload .srt files, choose source/target languages, and batch-translate via DeepSeek, Google Gemini, or OpenRouter. Side-by-side preview with individual or bulk .zip download.
Live app: rasoulnorouzi.github.io/sub_translator