MediaWiki API Project: Category Under/Over-Coverage
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 25/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- jupyter-notebook, pandas, python, streamlit
- Ambito
- analytics, data, data-engineering, data-visualization
Direzione di ricerca
Inizia dalla documentazione collegata di MediaWiki Action API, Categorymembers, Revisions, Langlinks e PageAssessments, quindi esamina gli artefatti proposti e i deliverable della dashboard. Definisci una profondità di attraversamento limitata e un insieme di metriche prima dell’implementazione; il lavoro è completo quando sono presenti gli output parquet/CSV, la dashboard, il methods README e i test per l’attraversamento, la deduplicazione, i contatori e i controlli di coerenza delle metriche.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Overview
Quantify category-level under/over-coverage on Wikipedia by crawling sensitive topical categories (and their subcategories) and measuring article counts, content depth, references, and quality signals—then ranking categories against their peers to surface gaps.
Action Items
If this is the beginning (research & design)
- Define seed categories (e.g., human rights, policing, immigration, public health, Indigenous issues). Set a max traversal depth (start with 1–2).
- Decide metrics: pages per category, median article length, references/article, % with infobox, interlanguage links count, PageAssessments quality/importance (if enabled), and additions per month (from category-membership timestamps).
- Methods plan: breadth-first search of subcategories via
list=categorymembers; fetch page features viaprop=revisions(size),prop=revisions&rvprop=content(for<ref>and infobox detection),prop=langlinks(coverage across languages),prop=pageassessments(quality, if available). - Tooling (pick pairs):
requestsorhttpx;pandasorpolars; storage induckdborsqlite; visualization inAltairorPlotly.
If researched and ready (implementation steps)
-
Seed & crawl
- For each top-level category:
list=categorymembers&cmtype=subcat|page&cmlimit=max&cmnamespace=0|14. - BFS to a fixed depth; persist
(category, pageid, title, member_timestamp). De-duplicate pages across subcats.
- For each top-level category:
-
Feature extraction
- Size & timestamps:
prop=revisions&rvprop=size|timestamp&rvlimit=1&rvdir=older/neweras needed. - References & infobox: fetch wikitext for sampled/latest revids and count
<refoccurrences and{{Infobox. - Interlanguage breadth:
prop=langlinks&lllimit=max→ count. - Quality (optional):
prop=pageassessments→ map to quality/importance bins.
- Size & timestamps:
-
Aggregation
- Per category: page_count, median size, refs/article (median), % with infobox, median langlinks, quality mix, and monthly additions using
member_timestamp. - Normalize within the cohort (z-scores/percentiles) and compute an Under-Coverage Index (e.g., average rank of page_count, size, refs/article, langlinks).
- Per category: page_count, median size, refs/article (median), % with infobox, median langlinks, quality mix, and monthly additions using
-
Deliver
- Artifacts:
category_members.parquet,page_features.parquet,category_monthly.parquet,category_metrics.csv. - Dashboard: ranked table of categories (Under-Coverage Index), sparkline of monthly additions, metric drill-downs.
- Methods README with traversal depth, regex rules, and limitations.
- Artifacts:
-
Quality & Ops
- Caching + retries with exponential backoff; honor
maxlag; persistcontinuetokens and query manifests. - Tests: traversal correctness, duplicate handling, regex counters, and metric sanity checks.
- Error handling: wrap I/O in
try/exceptwith helpfulprint()for file-not-found; raise with trace on dtype mismatches; warn on recoverables. - Optional: scheduled monthly refresh (GitHub Actions).
- Caching + retries with exponential backoff; honor
Resources/Instructions
API docs to pin in repo
MediaWiki Action API overview: https://www.mediawiki.org/wiki/API:Action_API
Category members (pages & subcats): https://www.mediawiki.org/wiki/API:Categorymembers
Revisions (size, timestamps, content): https://www.mediawiki.org/wiki/API:Revisions
Langlinks (interlanguage links): https://www.mediawiki.org/wiki/API:Langlinks
PageAssessments (if enabled): https://www.mediawiki.org/wiki/Extension:PageAssessments#API
Query & continuation etiquette: https://www.mediawiki.org/wiki/API:Query
Suggested libraries (choose pairs)
- HTTP:
requests|httpx - DataFrames:
pandas|polars - Storage:
duckdb|sqlite - Viz:
Altair|Plotly - Parsing:
mwparserfromhell|wikitextparser
Sample queries (copy to notes)
# Members of a category (pages + subcats), with timestamps
action=query&list=categorymembers&cmtitle=Category:Human_rights&cmtype=page|subcat&cmprop=ids|title|type|timestamp&cmlimit=max
# Latest revision (size) for a page
action=query&prop=revisions&rvprop=size|timestamp&rvlimit=1&titles=<TITLE>
# Fetch content for counting <ref> and {{Infobox
action=query&prop=revisions&revids=<REVID>&rvslots=main&rvprop=content
# Interlanguage links count
action=query&prop=langlinks&lllimit=max&titles=<TITLE>
# Page assessments (if available)
action=query&prop=pageassessments&titles=<TITLE>
Ethics & caveats
-
Category systems are noisy; membership can be incomplete or inconsistent. Document traversal depth and exclusions (hidden cats if you choose).
-
Ref/infobox counts are proxies for depth, not quality. Treat PageAssessments as optional (not all wikis have it).
-
Aggregate reporting only; no editor-level profiling.
-
If this issue requires access to 311 data, please answer the following questions:
- Not applicable.
- N/A
- N/A
- N/A
Project Outline (detailed plan for this idea) in details:
Research question
Which sensitive topical categories are thin (few pages, short articles, sparse references, low interlanguage coverage) relative to peer categories, and how are they changing month to month?
Data sources & modules
list=categorymembersfor pages/subcats (+ timestamps).prop=revisions(size/content).prop=langlinks(language breadth).prop=pageassessments(quality/importance, when available).
Method
- BFS the category graph to a fixed depth, collecting member pages and timestamps.
- For each page, compute size, ref count, infobox presence, langlinks count, and optional quality labels.
- Aggregate per category; build Under-Coverage Index and rank.
- Produce monthly addition trends and highlight categories in the bottom decile on ≥2 core metrics.
Key metrics
page_count,median_size,median_refs_per_article,%_infobox,median_langlinks, quality mix.- Monthly additions; 12-mo Δ in page_count and size.
- Under-Coverage Index and bottom-decile flags.
Deliverables
- Clean tables (
category_members.parquet,page_features.parquet,category_monthly.parquet,category_metrics.csv). - Notebook +
reports/category_under_over_coverage.md. - Streamlit/Altair dashboard (ranked table, sparklines, metric drill-downs).
Limitations
- Category membership timestamps can reflect when categorization occurred, not page creation; call that out.
- Regex heuristics for refs/infobox may miss template edge cases—validate on a labeled subset and report precision.
- Interlanguage links vary by page age; consider age-adjusted comparisons if needed.
- Lingua principale
- Jupyter Notebook
- Stelle
- 33
- Fork
- 23
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di hackforla/data-science
-
H2 — Pandemic disruption accelerated a decline that began earlier | Student decline: More than pandemic learning loss aloneForse di nuovo libera @MissBrandyLea l’ha presa 55 giorni fa e non c’è nessuna pull request aperta. Aperta
hackforla/data-science#283 · 8 commenti · 1 assegnatario ·
-
complexity: Large CoP: Data Science project duration: one time role: data science size: 5pt
Difficoltà 5/5 Più di una settimana Idoneità per principianti 20/100
hackforla/data-science#281 ·
-
Investigate America’s Declining HealthspanForse di nuovo libera @wesdufelmeier l’ha presa 63 giorni fa e non c’è nessuna pull request aperta. Apertacomplexity: Large CoP: Data Science project duration: one time role: data science size: 8pt
hackforla/data-science#280 · 8 commenti · 1 assegnatario ·
-
complexity: Large CoP: Data Science project duration: one time role: data analysis role: data science size: 8pt
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
hackforla/data-science#279 ·
-
complexity: Large CoP: Data Science project duration: one time role: data science size: 8pt
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
hackforla/data-science#278 ·
Tutte le issue di hackforla/data-science
Issue simili
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
cathrynlavery/diagram-design#412 ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
headroomlabs-ai/headroom#4171 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
I maintainer di solito rispondono entro 2 giorni
-
auto-generated bug posthog
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
cevi/conveniat-webpage#2156 ·
I maintainer di solito rispondono entro 1 giorno
-
Birim ve Format düzeltmesiApertaenhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
HappyHackingSpace/Misko#234 ·
I maintainer di solito rispondono entro 1 giorno