9th-place solution (of 200 teams, team edgeknife) of the KDD Cup 2024 Paper Source Tracing task: given a sentence containing citations in a scientific paper, identify which of its references each citation actually refers to.
A feature-rich ranking pipeline — we explored many directions, and although not every step moved the score significantly, all of them are kept here for reference:
- Document structure parsing with an open-source project SmartCite (with our bug fixes) to parse paper XML — details in smartcite.md
- Three BERT scoring models as ranking features, trained on sentences containing all references vs. a single reference: bert.py, bert-sig.py, bert-sigunion.py
- PageRank score and rank of each reference as ranking features
- Whether each reference appears alone in a sentence as a binary feature
- oagbert-v2 similarity between the citation context and candidate references — scoring in sim.sh
- A DNN classifier (2 hidden layers, L1 regularization, BatchNorm) for the final decision — dnn.py
Intermediate artifacts and models are on
cloud storage
(access code: kte4).
Python 3.9 required. Download the data files and unzip them into data/, then:
pip install -r requirements.txt
python data_prepare.py # prepare features
python dnn.py # train & infer