ACL Anthology

repository·master·Indexed 20 days ago

https://github.com/acl-org/acl-anthology

A large-scale digital repository of linguistics and NLP research papers. This project manages data ingestion, metadata processing, and static site generation via Hugo. It includes a Python library for retrieving paper and author metadata, as well as a suite of analysis and correction scripts for managing author identities, ORCIDs, and BibTeX title capitalization.

Tokens
66.1K
Snippets
244
Records
333
Agent score
72%

What's inside acl-anthology

  1. Overview of bin/analysis scripts

    master
    The bin/analysis directory contains read-only scripts used to compute statistics and reports over the ACL Anthology. These scripts load the Anthology data (or a git diff) and print reports to the console or files; they do not modify the data/ directory. By default, all scripts locate the Anthology data/ directory relative to the repository root, allowing them to be run from any location within the repository.
  2. Use fixed-case scripts to mark BibTeX title words

    master
    The scripts in the bin/fixedcase/ directory are used to identify and mark fixed-case uppercase sequences in BibTeX titles or booktitles within XML files using the <fixed-case> tag. This ensures proper capitalization is preserved in the ACL Anthology. The process uses a combination of heuristics and curated lists (truelist and special-case-titles) to determine which characters should be wrapped in tags.
  3. Website technology stack

    master

    The ACL Anthology website is a static site built using the following technologies:

    • Hugo: The static site generator framework.
    • Bootstrap: Used for the design and layout.
    • Font Awesome: Used for icon fonts.

    To build the site, the script create_hugo_data.py is used to generate the necessary JSON data structures from the source metadata.

  4. Understand the separation of content and presentation

    master

    The Anthology follows a strict separation between data and how it is displayed.

    Content (Data Files)

    All authoritative metadata is stored in the data/ directory:

    • data/xml/: Authoritative paper metadata (validated against data/xml/schema.rnc).
    • data/json/: JSON files defining Special Interest Groups (sigs.json), Venues (venues.json), and Verified authors (people.json).

    Important: The recommended way to modify this data is using the acl_anthology Python library.

    Presentation (Templates)

    Visual layout is managed via Hugo templates in hugo/layouts/:

    • Main skeleton: hugo/layouts/_default/baseof.html
    • Front page: hugo/layouts/index.html
    • Paper pages: hugo/layouts/papers/single.html
    • List entries: hugo/layouts/papers/list-entry.html
    • CSS: Compiled from hugo/assets/css/main.scss using Bootstrap 5.3.
  5. Use containers as dictionaries

    master

    Containers (CollectionIndex, Collection, and Volume) provide complete dictionary-like functionality.

    Note: Using bracket notation container[id] will raise a KeyError if the ID is invalid, whereas .get(id) returns None.

    volume = anthology.get_volume("2022.acl-long")
    volume.get("220")         # returns the Paper '2022.acl-long.220'
    volume["220"]             # returns the Paper '2022.acl-long.220'
    "220" in volume           # returns True if paper ID '220' exists
    len(volume)               # returns the number of papers in this volume
    list(volume)              # returns a list of paper IDs in this volume
  6. Understand paper numbering conventions

    master

    Papers are numbered consecutively within their bound volume.

    • Multiple Volumes: If a proceedings is split into multiple volumes, numbering restarts at 1 for each new volume.
    • Front Matter: Assigned the paper number 0 (e.g., 2020.acl-srw.0).
    • Back Matter: Assigned the last paper number in the volume.
    • Internal Matter: Front/back matter appearing inside a volume is treated as an ordinary paper.
  7. Heuristics used for fixed-case detection

    master

    The protect() function determines fixed-caseness using the following priority-ordered rules:

    1. Special Case Titles: If the full title matches an entry in special-case-titles (case-insensitive), only the capitalized characters in that entry are marked.
    2. Phrasal Truelist: Multiword phrases in truelist (ignoring hyphens) are marked greedily from left to right.
    3. Word Truelist: Individual words in truelist are marked.
    4. Internal Capitalization: Any word with a capital letter in a non-initial position (e.g., "TextTiling", "QA") is marked.
    5. Exclusions: French contracted forms "L’" and "D’" are not marked.
    6. Single Letters: Single uppercase letters (excluding "A", "K", or "N") or a single uppercase letter followed by a period (e.g., "A.") are marked.
    7. Adjectival Modifiers: Modifiers like "North" or "Modern" (from amodifiers in common.py) are marked if they precede a fixed-case word.
    8. Noun Descriptors: Descriptors like "Island" or "University" (from ndescriptors in common.py) are marked if they immediately follow a fixed-case word or precede it with "of".

    Note: The first word of a title is not treated specially; its first character is not automatically marked fixed-case.

  8. Understand the difference between verified and unverified authors

    master

    The ACL Anthology distinguishes between two types of author pages based on whether they have an explicit entry in the names database:

    • Verified Authors: These authors have an explicit entry in the names database. Entries are created automatically via ORCID iD information attached to papers, or manually by the Anthology team to disambiguate names. Verified pages feature an ORCID icon linked to the author's profile.
    • Unverified Authors: These authors do not have an explicit entry in the names database. These pages are created automatically when papers are ingested without ORCID iD information. Unverified URLs have /unverified/ appended to the path, and the author's name is accompanied by a question mark icon.

    Note: An ORCID icon on a verified page indicates the author is verified, but it does not guarantee that every paper listed belongs to them (papers matching the name string without an explicit ORCID iD may still be included).

  9. Understand the modern Anthology ID format

    master

    For all items ingested after 2020, the Anthology uses a structured identifier format: YEAR.VENUE-VOLUME.NUMBER.

    • YEAR: 4-digit year (e.g., 2020).
    • VENUE: Lowercased, alphanumeric identifier (e.g., acl, repl4nlp).
    • VOLUME: Volume name (e.g., 1, long, main).
    • NUMBER: The specific paper number.

    Examples:

    • Paper ID: 2020.acl-1.12 (the 12th paper in volume 1 of ACL 2020).
    • Volume ID: 2020.acl-main (formed by removing the paper number and delimiter from the paper ID).

    Event Pages: Events can be accessed via the year and venue code at https://aclanthology.org/events/[venue]-[year]. For example, https://aclanthology.org/events/acl-2020 contains all volumes and colocated workshops for ACL 2020.

    2020.acl-1.12
  10. Understand the ACL Anthology data hierarchy

    master

    The ACL Anthology is organized into a three-tier hierarchy:

    1. Collection: A group of volumes published under the same venue (e.g., 2022.acl).
    2. Volume: A set of related papers (e.g., long for long papers).
    3. Paper: An individual publication (e.g., 220).

    A full Anthology ID follows the pattern {collection}-{volume}.{paper_id} (e.g., 2022.acl-long.220).