Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
80 commits
Select commit Hold shift + click to select a range
91472ba
New landing page
mjpost Jul 14, 2026
7a12575
"Compact, warmer revision"
mjpost Jul 14, 2026
caa754c
Compute stats in python, not hugo
mjpost Jul 14, 2026
6716674
Third refresh
mjpost Jul 14, 2026
50ee4ae
Remove welcome title
mjpost Jul 14, 2026
8699a4d
black
mjpost Jul 14, 2026
7dd1c6a
Merge remote-tracking branch 'origin/master' into landing-page
mjpost Jul 15, 2026
9d3e180
Pull out paper count
mjpost Jul 15, 2026
02b11e6
Consolidating features
mjpost Jul 15, 2026
2f4243a
Restore "years covered"
mjpost Jul 15, 2026
229f9a1
Remove dead space and replace Filter label
mjpost Jul 15, 2026
0657f6f
Count all venues, not just top-level ones
mjpost Jul 15, 2026
ac4c28f
Add per-venue "..." affordance
mjpost Jul 15, 2026
60022d2
Remove affordance if all years are displayed
mjpost Jul 15, 2026
3ff0574
Fix homepage venue_count to use top-level venues
Copilot Jul 15, 2026
1d7c720
Restore full venue count and fix test
mjpost Jul 15, 2026
4892722
Restore side-by-side behavior
mjpost Jul 15, 2026
4e77704
Front "All"
mjpost Jul 15, 2026
533f824
Add a box with recently ingested events
mjpost Jul 15, 2026
0b51e16
Ensmallen everything
mjpost Jul 15, 2026
e8bc9d3
Embiggen fonts
mjpost Jul 15, 2026
4b5c349
Add more glaring preview border
mjpost Jul 15, 2026
e8e0e27
Restore original palette
mjpost Jul 15, 2026
ffe6d59
Add EarlyMT to the top level so papers show
mjpost Jul 15, 2026
d1fd223
Muted red-based scheme
mjpost Jul 15, 2026
d5b34d1
Reduce the red a bit
mjpost Jul 15, 2026
9144577
Restore button colors
mjpost Jul 15, 2026
5339a24
Just a touch of color
mjpost Jul 15, 2026
dbc79d8
Reformat SIG block
mjpost Jul 15, 2026
843cd0f
Add a bit of muted color to headers
mjpost Jul 15, 2026
63d08bb
Head backgrounds
mjpost Jul 15, 2026
d5e7f17
Test colors for Nathan
mjpost Jul 16, 2026
7a85c48
Restore red
mjpost Jul 16, 2026
5c8e44f
Change year range
mjpost Jul 16, 2026
46b3571
int
mjpost Jul 16, 2026
e3d9ba7
Remove year links count
mjpost Jul 16, 2026
1890aff
Search over all venues
mjpost Jul 16, 2026
c553803
Change filter text
mjpost Jul 16, 2026
7b6a9e6
Inflect noun properly
mjpost Jul 16, 2026
fe087dd
Two-toned headers with muted button colors
mjpost Jul 16, 2026
e770e82
Restore bright buttons and incorpoate those colors into two-tone head…
mjpost Jul 16, 2026
24a8e46
Add click-to-dismiss for the site preview warning
mjpost Jul 16, 2026
2d81c2f
Fix blue in intro header
mjpost Jul 16, 2026
ab1eaf8
Fix text
mjpost Jul 16, 2026
3ad5cb0
Fix ellipsis spacing
mjpost Jul 16, 2026
d1367e8
Fix hover highlight inconsistency
mjpost Jul 16, 2026
c4274cd
Equalize font size
mjpost Jul 16, 2026
7c381c3
Dark red top border
mjpost Jul 16, 2026
89d9229
Add author stats
mjpost Jul 16, 2026
1561947
Add people index
mjpost Jul 16, 2026
76ed27f
Add missing files
mjpost Jul 16, 2026
d2e1c0d
Catch failure
mjpost Jul 16, 2026
03ab2f3
black
mjpost Jul 16, 2026
ba3f88c
Test case
mjpost Jul 16, 2026
8ad9c71
Add year of first paper histogram
mjpost Jul 17, 2026
23d70b1
Add affiliation map
mjpost Jul 17, 2026
4f51339
Minor edits to text
mjpost Jul 17, 2026
ae6427e
Add stats link from people index
mjpost Jul 17, 2026
fb63c6e
Add stub plan for extracting affiliations from PDFs
mjpost Jul 17, 2026
973a5b9
Document decisions
mjpost Jul 17, 2026
5a155fd
Manual check on affiliation overrides
mjpost Jul 17, 2026
ad99a06
Count each institution only once per paper
mjpost Jul 17, 2026
746c335
Fix bug that merged affiliations with nearby coordinates, add tests
mjpost Jul 17, 2026
a04f5e1
Fix affiliation
mjpost Jul 17, 2026
155b88c
Minor wording
mjpost Jul 17, 2026
fbce7e7
Enable zooming
mjpost Jul 17, 2026
f0bc2ee
Map params
mjpost Jul 17, 2026
629e5b8
Fix affiliation addresses and counts
mjpost Jul 17, 2026
7d4cde6
black
mjpost Jul 17, 2026
ac704b9
Add script to extract metadata with grobid and update plan
mjpost Jul 19, 2026
65a4740
Merge remote-tracking branch 'origin/master' into author-index
mjpost Jul 20, 2026
49ec951
Pick the example author name uniformly at random
mjpost Jul 20, 2026
1d0e461
Merge branch 'master' into stats
mjpost Jul 20, 2026
f453fc9
Merge branch 'stats' of github.com:acl-org/acl-anthology into stats
mjpost Jul 20, 2026
b811ed0
Merge remote-tracking branch 'origin/master' into stats
mjpost Jul 25, 2026
c047224
Add various author-by-year stats and longevity
mjpost Jul 25, 2026
02bb7c6
Add stats link
mjpost Jul 26, 2026
0444fe8
Generate data for all years, consolidate at build time
mjpost Jul 26, 2026
6dbd342
Plot more years, per-decade averages
mjpost Jul 26, 2026
71a4894
Just plot all years with per-decade averages
mjpost Jul 26, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ Icon
.idea

# generated website
/build/
/build*/

#virtual environment
/venv/
72 changes: 72 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,17 @@ endif
# Easiest if the server can just serve them from /anthology-files.
ANTHOLOGYFILES ?= /var/www/anthology-files

# Local GROBID service used by bin/extract_pdf_metadata.py. The full image uses
# the more accurate header and affiliation models; override GROBID_IMAGE with
# grobid/grobid:$(GROBID_VERSION)-crf for the smaller CRF-only image.
GROBID_VERSION ?= 0.9.0
GROBID_IMAGE ?= grobid/grobid:$(GROBID_VERSION)-full
GROBID_CONTAINER ?= acl-anthology-grobid
GROBID_PORT ?= 8070
GROBID_URL ?= http://localhost:$(GROBID_PORT)
GROBID_PLATFORM ?= linux/amd64
GROBID_STARTUP_TIMEOUT ?= 300

HUGO_ENV ?= production

sourcefiles=$(shell find data -type f '(' -name "*.yaml" -o -name "*.xml" ')')
Expand Down Expand Up @@ -190,6 +201,67 @@ sync:
test-scripts:
uv run python -m pytest tests/ -v

# Start a reusable local GROBID service for PDF metadata extraction. The image
# is amd64-only; Docker Desktop provides emulation on Apple Silicon.
.PHONY: grobid
grobid:
@if ! command -v docker >/dev/null 2>&1; then \
echo "FATAL Docker is required to run GROBID."; \
echo " Install Docker Desktop: https://docs.docker.com/desktop/"; \
exit 1; \
fi
@if ! docker info >/dev/null 2>&1; then \
echo "FATAL Docker is installed, but its daemon is not running."; \
echo " Start Docker Desktop, then run 'make grobid' again."; \
exit 1; \
fi
@existing_image="$$(docker inspect --format '{{.Config.Image}}' "$(GROBID_CONTAINER)" 2>/dev/null || true)"; \
replaced_container=false; \
if [[ -n "$$existing_image" && "$$existing_image" != "$(GROBID_IMAGE)" ]]; then \
echo "INFO Replacing $(GROBID_CONTAINER) ($$existing_image) with $(GROBID_IMAGE)..."; \
docker rm -f "$(GROBID_CONTAINER)" >/dev/null; \
existing_image=""; \
replaced_container=true; \
fi; \
if [[ "$$replaced_container" != true ]] && curl -fsS "$(GROBID_URL)/api/isalive" 2>/dev/null | grep -qx true; then \
echo "INFO GROBID is already ready at $(GROBID_URL)."; \
exit 0; \
fi; \
if [[ -n "$$existing_image" ]]; then \
if [[ "$$(docker inspect --format '{{.State.Running}}' "$(GROBID_CONTAINER)")" != true ]]; then \
echo "INFO Starting existing GROBID container..."; \
docker start "$(GROBID_CONTAINER)" >/dev/null; \
else \
echo "INFO Waiting for the running GROBID container..."; \
fi; \
else \
echo "INFO Pulling and starting $(GROBID_IMAGE)..."; \
docker run --detach \
--name "$(GROBID_CONTAINER)" \
--platform "$(GROBID_PLATFORM)" \
--init \
--ulimit core=0 \
--publish "$(GROBID_PORT):8070" \
"$(GROBID_IMAGE)" >/dev/null; \
fi; \
echo "INFO Waiting for GROBID to become ready..."; \
for attempt in $$(seq 1 "$(GROBID_STARTUP_TIMEOUT)"); do \
if curl -fsS "$(GROBID_URL)/api/isalive" 2>/dev/null | grep -qx true; then \
version="$$(curl -fsS "$(GROBID_URL)/api/version" 2>/dev/null || true)"; \
echo "INFO GROBID $${version:-unknown} is ready at $(GROBID_URL)."; \
exit 0; \
fi; \
if [[ "$$(docker inspect --format '{{.State.Running}}' "$(GROBID_CONTAINER)" 2>/dev/null)" != true ]]; then \
echo "FATAL GROBID stopped before becoming ready. Recent logs:"; \
docker logs --tail 50 "$(GROBID_CONTAINER)"; \
exit 1; \
fi; \
sleep 1; \
done; \
echo "FATAL GROBID did not become ready within $(GROBID_STARTUP_TIMEOUT) seconds. Recent logs:"; \
docker logs --tail 50 "$(GROBID_CONTAINER)"; \
exit 1

# Sometimes after a merge conflict the entries in people.yaml
# get miss-sorted. This corrects that by reloading and saving the file.
.PHONY: normalize
Expand Down
Loading
Loading