\documentclass{article} \usepackage{arxiv} \usepackage[utf8]{inputenc} % allow utf-8 input \usepackage[T1]{fontenc} % use 8-bit T1 fonts \usepackage{hyperref} % hyperlinks \usepackage{url} % simple URL typesetting \usepackage{booktabs} % professional-quality tables \usepackage{amsfonts} % blackboard math symbols \usepackage{nicefrac} % compact symbols for 1/2, etc. \usepackage{microtype} % microtypography \usepackage{lipsum} % Can be removed after putting your text content \usepackage{graphicx} \usepackage{natbib} \usepackage{doi} \title{Internet Archive Scholar Citation Graph Dataset} \date{August 10, 2021} % Here you can change the date presented in the paper title %\date{} % Or removing it \author{ Martin Czygan \\ Internet Archive\\ San Francisco, CA 94118 \\ \texttt{martin@archive.org} \\ %% examples of more authors \And Bryan Newbold \\ Internet Archive\\ San Francisco, CA 94118 \\ \texttt{bnewbold@archive.org} \\ % \And % Helge Holzmann \\ % Internet Archive\\ % San Francisco, CA 94118 \\ % \texttt{helge@archive.org} \\ % \And % Jefferson Bailey \\ % Internet Archive\\ % San Francisco, CA 94118 \\ % \texttt{jefferson@archive.org} \\ %% \AND %% Coauthor \\ %% Affiliation \\ %% Address \\ %% \texttt{email} \\ %% \And %% Coauthor \\ %% Affiliation \\ %% Address \\ %% \texttt{email} \\ %% \And %% Coauthor \\ %% Affiliation \\ %% Address \\ %% \texttt{email} \\ } % Uncomment to remove the date %\date{} % Uncomment to override the `A preprint' in the header \renewcommand{\headeright}{Technical Report} \renewcommand{\undertitle}{Technical Report} % \renewcommand{\shorttitle}{\textit{arXiv} Template} %%% Add PDF metadata to help others organize their library %%% Once the PDF is generated, you can check the metadata with %%% $ pdfinfo template.pdf \hypersetup{ pdftitle={Internet Archive Scholar Citation Graph Dataset}, pdfsubject={cs.DL, cs.IR}, pdfauthor={Martin Czygan, Bryan Newbold, Helge Holzmann, Jefferson Bailey}, pdfkeywords={Web Archiving, Citation Graph}, } \begin{document} \maketitle \begin{abstract} As part of its scholarly data efforts, the Internet Archive releases a citation graph dataset derived from scholarly publications and additional data sources. It is composed of data gathered by the \href{https://fatcat.wiki}{fatcat cataloging project} and related web-scale crawls targeting primary and secondary scholarly outputs. In addition, relations are worked out between scholarly publications, web pages and their archived copies, books from the Open Library project as well as Wikipedia articles. This first version of the graph consists of over X nodes and over Y edges. We release this dataset under a Z open license under the collection at \href{https://archive.org/details/TODO-citation\_graph}{https://archive.org/details/TODO-citation\_graph}, as well as all code used for derivation under an MIT license. \end{abstract} % keywords can be removed \keywords{Citation Graph \and Scholarly Communications \and Web Archiving} \section{Introduction} The Internet Archive releases a first version of a citation graph dataset derived from a raw corpus of about 2.5B references gathered from metadata and from data obtained by PDF extraction tools such as GROBID\citep{lopez2009grobid}. The goal of this report is to describe briefly the current contents and the derivation of the Archive Scholar Citations Dataset (ASC). We expect this dataset to be iterated upon, with changes both in content and processing. Modern citation indexes can be traced back to the early computing age, when projects like the Science Citation Index (1955)\citep{garfield2007evolution} were first devised, living on in existing commercial knowledge bases today. Open alternatives were started such as the Open Citations Corpus (OCC) in 2010 - the first version of which contained 6,325,178 individual references\citep{shotton2013publishing}. Other notable sources from that time include CiteSeerX\citep{wu2019citeseerx} and CitEc\citep{CitEc}. The last decade has seen an increase of more openly available reference dataset and citation projects, like Microsoft Academic\citep{sinha2015overview} and Initiative for Open Citations\citep{i4oc}\citep{shotton2018funders}. In 2021, according to \citep{hutchins2021tipping} over 1B citations are publicly available, marking a tipping point for open citations. \section{Citation Graph Contents} % * edges % * edges exact % * edges fuzzy % * edges fuzzy reason (table) % * number of source docs % * number of target docs % * refs to papers % * refs to books % * refs to web pages % * refs to web pages that have been archived % * refs to web pages that have been archived but not on liveweb any more % % Overlaps % % * how many edges can be found in COCI as well % * how many edges can be found in MAG as well % * how many unique to us edges % % Additional numbers % % * number of unparsed refs % * "biblio" field distribution of unparted refs % % Potential routes % % * journal abbreviation parsing with suffix arrays % * lookup by name, year and journal \section{System Design} The constraints for the systems design are informed by the volume and the variety of the data. In total, the raw inputs amount to a few TB of textual content, mostly newline delimited JSON. More importantly, while the number of data fields is low, certain schemas are very partial with hundreds of different combinations of available field values found in the raw reference data. This is most likely caused by aggregators passing on reference data coming from hundreds of sources, each of which not necessarily agreeing on a common granularity for citation data and from artifacts of machine learning based structured data extraction tools. Each combination of fields may require a slightly different processing path. For example, references with an Arxiv identifier can be processed differently from references with only a title. Over 50\% of the raw reference data comes from a set of eight field manifestations, as listed in Table~\ref{table:fields}. \begin{table}[] \begin{center} \begin{tabular}{ll} \toprule \bf{Fields} & \bf{Share} \\ \midrule \multicolumn{1}{l}{CN|CRN|P|T|U|V|Y} & 14\% \\ \multicolumn{1}{l}{DOI} & 14\% \\ \multicolumn{1}{l}{CN|CRN|IS|P|T|U|V|Y} & 5\% \\ \multicolumn{1}{l}{CN|CRN|DOI|U|V|Y} & 4\% \\ \multicolumn{1}{l}{PMID|U} & 4\% \\ \multicolumn{1}{l}{CN|CRN|DOI|T|V|Y} & 4\% \\ \multicolumn{1}{l}{CN|CRN|Y} & 4\% \\ \multicolumn{1}{l}{CN|CRN|DOI|V|Y} & 4\% \\ \end{tabular} \vspace*{2mm} \caption{Top 8 combinations of available fields in raw reference data accounting for about 53\% of the total data (CN = container name, CRN = contrib raw name, P = pages, T = title, U = unstructured, V = volume, IS = issue, Y = year, DOI = doi, PMID = pmid). Unstructured fields may contain any value.} \label{table:fields} \end{center} \end{table} Overall, a map-reduce style approach is followed, which allows for some uniformity in the overall processing. We extract (key, document) tuples (as TSV) from the raw JSON data and sort by key. Then we group documents with the same key into groups and apply a function on each group in order to generate our target schema (currently named biblioref, or bref for short) or perform addition operations (such as deduplication). The key derivation can be exact (like an identifier like DOI, PMID, etc) or based on a normalization procedure, like a slugified title string. For identifier based matches we can generate the target biblioref schema directly. For fuzzy matching candidates, we pass possible match pairs through a verification procedure, which is implemented for release entity schema pairs. The current verification procedure is a domain dependent rule based verification, able to identify different versions of a publication, preprint-published pairs or or other kind of similar documents by calculating similarity metrics across title and authors. The fuzzy matching approach is applied on all reference documents, which only have a title, but no identifier. With a few schema conversions, fuzzy matching can be applied to Wikipedia articles and Open Library (edition) records as well. The aspect of precision and recall are represented by the two stages: we are generous in the match candidate generation phase in order to improve recall, but we are strict during verification, in order to control precision. \section{Fuzzy Matching Approach} % Take sample of 100 docs, report some precision, recall, F1 on a hand curated % small subset. The fuzzy matching approach currently implemented works in two phases: match candidate generation and verification. For candidate generation, we map each document to a key. We implemented a number of algorithms to form these clusters, e.g. title normalizations (including lowercasing, whitespace removal, unicode normalization and other measures) or transformations like NYSIIS\citep{silbert1970world}. The verification approach is based on a set of rules, which are tested sequentially, yielding a match signal from weak to exact. We use a suite of over 300 manually curated match examples\footnote{The table can be found here: \href{https://gitlab.com/internetarchive/fuzzycat/-/blob/master/tests/data/verify.csv}{https://gitlab.com/internetarchive/fuzzycat/-/blob/master/tests/data/verify.csv}} as part of a unit test suite to allow for a controlled, continuous adjustement to the verification procedure. If the verification yields either an exact or strong signal, we include consider it a match. We try to keep the processing steps performant to keep the overall derivation time limited. Map and reduce operations are parallelized and certain processing steps can process 100K documents per second or even more on commodity hardware with spinning disks. \section{Discussion} % need to iterate %\lipsum[2] %\lipsum[3] % \section{Headings: first level} % \label{sec:headings} % % \lipsum[4] See Section \ref{sec:headings}. % % \subsection{Headings: second level} % \lipsum[5] % \begin{equation} % \xi _{ij}(t)=P(x_{t}=i,x_{t+1}=j|y,v,w;\theta)= {\frac {\alpha _{i}(t)a^{w_t}_{ij}\beta _{j}(t+1)b^{v_{t+1}}_{j}(y_{t+1})}{\sum _{i=1}^{N} \sum _{j=1}^{N} \alpha _{i}(t)a^{w_t}_{ij}\beta _{j}(t+1)b^{v_{t+1}}_{j}(y_{t+1})}} % \end{equation} % % \subsubsection{Headings: third level} % \lipsum[6] % % \paragraph{Paragraph} % \lipsum[7] % % % % \section{Examples of citations, figures, tables, references} % \label{sec:others} % % \subsection{Citations} % Citations use \verb+natbib+. The documentation may be found at % \begin{center} % \url{http://mirrors.ctan.org/macros/latex/contrib/natbib/natnotes.pdf} % \end{center} % % Here is an example usage of the two main commands (\verb+citet+ and \verb+citep+): Some people thought a thing \citep{kour2014real, hadash2018estimate} but other people thought something else \citep{kour2014fast}. Many people have speculated that if we knew exactly why \citet{kour2014fast} thought this\dots % % \subsection{Figures} % \lipsum[10] % See Figure \ref{fig:fig1}. Here is how you add footnotes. \footnote{Sample of the first footnote.} % \lipsum[11] % % \begin{figure} % \centering % \fbox{\rule[-.5cm]{4cm}{4cm} \rule[-.5cm]{4cm}{0cm}} % \caption{Sample figure caption.} % \label{fig:fig1} % \end{figure} % % \subsection{Tables} % See awesome Table~\ref{tab:table}. % % The documentation for \verb+booktabs+ (`Publication quality tables in LaTeX') is available from: % \begin{center} % \url{https://www.ctan.org/pkg/booktabs} % \end{center} % % % \begin{table} % \caption{Sample table title} % \centering % \begin{tabular}{lll} % \toprule % \multicolumn{2}{c}{Part} \\ % \cmidrule(r){1-2} % Name & Description & Size ($\mu$m) \\ % \midrule % Dendrite & Input terminal & $\sim$100 \\ % Axon & Output terminal & $\sim$10 \\ % Soma & Cell body & up to $10^6$ \\ % \bottomrule % \end{tabular} % \label{tab:table} % \end{table} % % \subsection{Lists} % \begin{itemize} % \item Lorem ipsum dolor sit amet % \item consectetur adipiscing elit. % \item Aliquam dignissim blandit est, in dictum tortor gravida eget. In ac rutrum magna. % \end{itemize} \bibliographystyle{unsrtnat} \bibliography{references} %%% Uncomment this line and comment out the ``thebibliography'' section below to use the external .bib file (using bibtex) . %%% Uncomment this section and comment out the \bibliography{references} line above to use inline references. % \begin{thebibliography}{1} % \bibitem{kour2014real} % George Kour and Raid Saabne. % \newblock Real-time segmentation of on-line handwritten arabic script. % \newblock In {\em Frontiers in Handwriting Recognition (ICFHR), 2014 14th % International Conference on}, pages 417--422. IEEE, 2014. % \bibitem{kour2014fast} % George Kour and Raid Saabne. % \newblock Fast classification of handwritten on-line arabic characters. % \newblock In {\em Soft Computing and Pattern Recognition (SoCPaR), 2014 6th % International Conference of}, pages 312--318. IEEE, 2014. % \bibitem{hadash2018estimate} % Guy Hadash, Einat Kermany, Boaz Carmeli, Ofer Lavi, George Kour, and Alon % Jacovi. % \newblock Estimate and replace: A novel approach to integrating deep neural % networks with existing applications. % \newblock {\em arXiv preprint arXiv:1804.09028}, 2018. % \end{thebibliography} \section{Appendix} % Please add the following required packages to your document preamble: \begin{table}[] \begin{center} \begin{tabular}{@{}rlll@{}} \toprule \textbf{Number of matches} & \textbf{Citation Provenance} & \textbf{Match Status} & \textbf{Match Reason} \\ \midrule 934932865 & crossref & exact & doi \\ 151366108 & fatcat-datacite & exact & doi \\ 65345275 & fatcat-pubmed & exact & pmid \\ 48778607 & fuzzy & strong & jaccardauthors \\ 42465250 & grobid & exact & doi \\ 29197902 & fatcat-pubmed & exact & doi \\ 19996327 & fatcat-crossref & exact & doi \\ 11996694 & fuzzy & strong & slugtitleauthormatch \\ 9157498 & fuzzy & strong & tokenizedauthors \\ 3547594 & grobid & exact & arxiv \\ 2310025 & fuzzy & exact & titleauthormatch \\ 1496515 & grobid & exact & pmid \\ 680722 & crossref & strong & jaccardauthors \\ 476331 & fuzzy & strong & versioneddoi \\ 449271 & grobid & exact & isbn \\ 230645 & fatcat-crossref & strong & jaccardauthors \\ 190578 & grobid & strong & jaccardauthors \\ 156657 & crossref & exact & isbn \\ 123681 & fatcat-pubmed & strong & jaccardauthors \\ 79328 & crossref & exact & arxiv \\ 57414 & crossref & strong & tokenizedauthors \\ 53480 & fuzzy & strong & pmiddoipair \\ 52453 & fuzzy & strong & dataciterelatedid \\ 47119 & grobid & strong & slugtitleauthormatch \\ 36774 & fuzzy & strong & arxivversion \\ 35311 & fuzzy & strong & customieeearxiv \\ 33863 & grobid & exact & pmcid \\ 23504 & crossref & strong & slugtitleauthormatch \\ 22753 & fatcat-crossref & strong & tokenizedauthors \\ 17720 & grobid & exact & titleauthormatch \\ 14656 & crossref & exact & titleauthormatch \\ 14438 & grobid & strong & tokenizedauthors \\ 7682 & fatcat-crossref & exact & arxiv \\ 5972 & fatcat-crossref & exact & isbn \\ 5525 & fatcat-pubmed & exact & arxiv \\ 4290 & fatcat-pubmed & strong & tokenizedauthors \\ 2745 & fatcat-pubmed & exact & isbn \\ 2342 & fatcat-pubmed & strong & slugtitleauthormatch \\ 2273 & fatcat-crossref & strong & slugtitleauthormatch \\ 1960 & fuzzy & exact & workid \\ 1150 & fatcat-crossref & exact & titleauthormatch \\ 1041 & fatcat-pubmed & exact & titleauthormatch \\ 895 & fuzzy & strong & figshareversion \\ 317 & fuzzy & strong & titleartifact \\ 82 & grobid & strong & titleartifact \\ 33 & crossref & strong & titleartifact \\ 5 & fuzzy & strong & custombsiundated \\ 1 & fuzzy & strong & custombsisubdoc \\ 1 & fatcat & exact & doi \\ \bottomrule \end{tabular} \vspace*{2mm} \caption{Table of match counts, reference provenance, match status and match reason. The match reason identifier encode a specific rule in the domain dependent verification process and are included for completeness - we do not include the details of each rule in this report.} \label{table:fields} \end{center} \end{table} \end{document}