Syllabus schema
Open Syllabus uses a unified document format to represent the metadata extracted from a syllabus:
|-- _id: long
|-- md5: string
|-- doc_type: string
|-- text: string
|-- syllabus_probability: float
|-- field: struct
| |-- _id: long
| |-- cip_codes: array
| | |-- element: string
| |-- name: string
|-- language: string
|-- institution: struct
| |-- _id: long
| |-- grid_id: string
| |-- wikidata_id: string
| |-- unitid: long
| |-- city: string
| |-- name: string
| |-- lat: float
| |-- lng: float
| |-- url: string
| |-- country_code: string
| |-- country: string
| |-- state_code: string
| |-- state: string
| |-- enrollment: long
| |-- two_year: boolean
| |-- four_year: boolean
| |-- graduate: boolean
| |-- research: boolean
| |-- wikipedia_url: string
| |-- description: string
| |-- image_url: string
|-- date: struct
| |-- term: string
| |-- year: long
|-- urls: array
| |-- element: string
|-- extracted_sections: struct
| |-- title: array
| | |-- element: struct
| | | |-- text: string
| | | |-- mean_proba: float
| | | |-- ci1: long
| | | |-- ci2: long
| | | |-- ti1: long
| | | |-- ti2: long
| |-- code: array
| | |-- element: struct
| | | |-- text: string
| | | |-- mean_proba: float
| | | |-- ci1: long
| | | |-- ci2: long
| | | |-- ti1: long
| | | |-- ti2: long
| |-- section: array
| | |-- element: struct
| | | |-- text: string
| | | |-- mean_proba: float
| | | |-- ci1: long
| | | |-- ci2: long
| | | |-- ti1: long
| | | |-- ti2: long
| |-- date: array
| | |-- element: struct
| | | |-- text: string
| | | |-- mean_proba: float
| | | |-- ci1: long
| | | |-- ci2: long
| | | |-- ti1: long
| | | |-- ti2: long
| |-- class_days: array
| | |-- element: struct
| | | |-- text: string
| | | |-- mean_proba: float
| | | |-- ci1: long
| | | |-- ci2: long
| | | |-- ti1: long
| | | |-- ti2: long
| |-- class_time: array
| | |-- element: struct
| | | |-- text: string
| | | |-- mean_proba: float
| | | |-- ci1: long
| | | |-- ci2: long
| | | |-- ti1: long
| | | |-- ti2: long
| |-- class_location: array
| | |-- element: struct
| | | |-- text: string
| | | |-- mean_proba: float
| | | |-- ci1: long
| | | |-- ci2: long
| | | |-- ti1: long
| | | |-- ti2: long
| |-- instructor: array
| | |-- element: struct
| | | |-- text: string
| | | |-- mean_proba: float
| | | |-- ci1: long
| | | |-- ci2: long
| | | |-- ti1: long
| | | |-- ti2: long
| |-- instructor_phone: array
| | |-- element: struct
| | | |-- text: string
| | | |-- mean_proba: float
| | | |-- ci1: long
| | | |-- ci2: long
| | | |-- ti1: long
| | | |-- ti2: long
| |-- office_hours_days: array
| | |-- element: struct
| | | |-- text: string
| | | |-- mean_proba: float
| | | |-- ci1: long
| | | |-- ci2: long
| | | |-- ti1: long
| | | |-- ti2: long
| |-- office_location: array
| | |-- element: struct
| | | |-- text: string
| | | |-- mean_proba: float
| | | |-- ci1: long
| | | |-- ci2: long
| | | |-- ti1: long
| | | |-- ti2: long
| |-- office_hours_times: array
| | |-- element: struct
| | | |-- text: string
| | | |-- mean_proba: float
| | | |-- ci1: long
| | | |-- ci2: long
| | | |-- ti1: long
| | | |-- ti2: long
| |-- credits: array
| | |-- element: struct
| | | |-- text: string
| | | |-- mean_proba: float
| | | |-- ci1: long
| | | |-- ci2: long
| | | |-- ti1: long
| | | |-- ti2: long
| |-- description: array
| | |-- element: struct
| | | |-- text: string
| | | |-- mean_proba: float
| | | |-- ci1: long
| | | |-- ci2: long
| | | |-- ti1: long
| | | |-- ti2: long
| |-- learning_outcomes: array
| | |-- element: struct
| | | |-- text: string
| | | |-- mean_proba: float
| | | |-- ci1: long
| | | |-- ci2: long
| | | |-- ti1: long
| | | |-- ti2: long
| |-- citations: array
| | |-- element: struct
| | | |-- text: string
| | | |-- mean_proba: float
| | | |-- ci1: long
| | | |-- ci2: long
| | | |-- ti1: long
| | | |-- ti2: long
| |-- required_reading: array
| | |-- element: struct
| | | |-- text: string
| | | |-- mean_proba: float
| | | |-- ci1: long
| | | |-- ci2: long
| | | |-- ti1: long
| | | |-- ti2: long
| |-- grading_rubric: array
| | |-- element: struct
| | | |-- text: string
| | | |-- mean_proba: float
| | | |-- ci1: long
| | | |-- ci2: long
| | | |-- ti1: long
| | | |-- ti2: long
| |-- assessment_strategy: array
| | |-- element: struct
| | | |-- text: string
| | | |-- mean_proba: float
| | | |-- ci1: long
| | | |-- ci2: long
| | | |-- ti1: long
| | | |-- ti2: long
| |-- topic_outline: array
| | |-- element: struct
| | | |-- text: string
| | | |-- mean_proba: float
| | | |-- ci1: long
| | | |-- ci2: long
| | | |-- ti1: long
| | | |-- ti2: long
| |-- assignment_schedule: array
| | |-- element: struct
| | | |-- text: string
| | | |-- mean_proba: float
| | | |-- ci1: long
| | | |-- ci2: long
| | | |-- ti1: long
| | | |-- ti2: long
| |-- school_name: array
| | |-- element: struct
| | | |-- text: string
| | | |-- mean_proba: float
| | | |-- ci1: long
| | | |-- ci2: long
| | | |-- ti1: long
| | | |-- ti2: long
|-- citations: array (nullable = false)
| |-- element: struct (containsNull = false)
| | |-- doc_span: struct
| | | |-- text: string
| | | |-- mean_proba: float
| | | |-- ci1: long
| | | |-- ci2: long
| | | |-- ti1: long
| | | |-- ti2: long
| | |-- parsed_citation: struct
| | | |-- title: array
| | | | |-- element: struct
| | | | | |-- text: string
| | | | | |-- mean_proba: float
| | | | | |-- ci1: long
| | | | | |-- ci2: long
| | | | | |-- ti1: long
| | | | | |-- ti2: long
| | | |-- subtitle: array
| | | | |-- element: struct
| | | | | |-- text: string
| | | | | |-- mean_proba: float
| | | | | |-- ci1: long
| | | | | |-- ci2: long
| | | | | |-- ti1: long
| | | | | |-- ti2: long
| | | |-- author: array
| | | | |-- element: struct
| | | | | |-- text: string
| | | | | |-- mean_proba: float
| | | | | |-- ci1: long
| | | | | |-- ci2: long
| | | | | |-- ti1: long
| | | | | |-- ti2: long
| | | |-- editor: array
| | | | |-- element: struct
| | | | | |-- text: string
| | | | | |-- mean_proba: float
| | | | | |-- ci1: long
| | | | | |-- ci2: long
| | | | | |-- ti1: long
| | | | | |-- ti2: long
| | | |-- publisher: array
| | | | |-- element: struct
| | | | | |-- text: string
| | | | | |-- mean_proba: float
| | | | | |-- ci1: long
| | | | | |-- ci2: long
| | | | | |-- ti1: long
| | | | | |-- ti2: long
| | | |-- isbn: array
| | | | |-- element: struct
| | | | | |-- text: string
| | | | | |-- mean_proba: float
| | | | | |-- ci1: long
| | | | | |-- ci2: long
| | | | | |-- ti1: long
| | | | | |-- ti2: long
| | |-- catalog_key: struct
| | | |-- clean_title: string
| | | |-- clean_author: struct
| | | | |-- forenames: string
| | | | |-- keyname: string
| | | |-- title_key: string
| | | |-- author_key: string
| | |-- catalog_record: struct
| | | |-- _id: long
| | | |-- work_cluster_size: long
| | | |-- sources: map
| | | | |-- key: string
| | | | |-- value: array (valueContainsNull = true)
| | | | | |-- element: string
| | | |-- title: string
| | | |-- subtitle: string
| | | |-- authors: array
| | | | |-- element: struct
| | | | | |-- forenames: string
| | | | | |-- keyname: string
| | | |-- publisher: string
| | | |-- year: long
| | | |-- description: string
| | | |-- image_urls: array
| | | | |-- element: string
| | | |-- dois: array
| | | | |-- element: string
| | | |-- isbns: array
| | | | |-- element: string
| | | |-- issns: array
| | | | |-- element: string
| | | |-- urls: array
| | | | |-- element: string
| | | |-- publication_type: string
| | | |-- open_access: boolean
| | | |-- article: struct
| | | | |-- venue: string
| | | | |-- volume: string
| | | | |-- issue: string
| | | | |-- page_start: string
| | | | |-- page_end: string
| | | | |-- abstract: string
Syllabus
The top-level document schema in the Open Syllabus dataset. Each row in the syllabi
dataframe is a single Syllabus
instance.
_id
An OS-assigned surrogate identifier for the syllabus.
Note
This unique identifier is not guaranteed to be consistent across versions of the dataset.
md5
The md5 checksum of the raw document bytes.
Note
This field is removed in some distributions of the dataset.
doc_type
The underlying source document type. Possible values are html
, plain
, pdf
, doc
, docx
, rtf
.
Note
This field is removed in some distributions of the dataset.
text
The plain text extracted from the document.
Note
This field is removed in some distributions of the dataset.
syllabus_probability
The probability that the document is a syllabus, per the syllabus classifier The classifier is trained and tested around a 0.5 threshold: Every document assigned a score above 0.5 is considered a syllabus. The majority of documents in the syllabi dataframe have a score greater than 0.5, but ocassionally OS will manually identify certain groups of documents as being syllabi, regardless of the output of the syllabus classifier.
Filtering the syllabi dataframe by a value greater than 0.5 will return a set of documents with higher precision, at the cost of recall. At the 0.5 threshold, the model is 97% accurate on held-out test data. (See Pipeline and models for details.)
field
Instance of Field
– The academic field assigned to the document, as determined by the OS field classifier. See Pipeline and models for details about the model.
language
The language code for the document, as inferred by pycld2.
institution
Instance of Institution
– The college or university where the syllabus was taught, as determined by the OS institution matcher. Null if no institution was matched.
date
Instance of Date
– The year and semester of the course.
urls
Instance of URLs
– URLs extracted from the document.
Note
This field is removed in some distributions of the dataset.
extracted_sections
Instance of ExtractedSections
– Normalized document sections extracted by the parser.
citations
List of Citation
– Parsed and linked citations extracted from the document.
Field
_id
An OS-assigned surrogate identifier for the field.
Note
This unique identifier is not guaranteed to be consistent across versions of the dataset.
cip_codes
A list of one or more IPEDS CIP codes, representing the academic field(s) representing the field.
OS’s field classifier draws heavily from the IPEDS 2010 CIP taxonomy in order to determine the academic field best associated with each syllabus. CIP codes come in lengths of two-, four- and six-digits, where two-digit codes represent a discipline, four-digit codes a subdivision of that discipline, and six-digit codes a further subdivision of the previous subdivision. For example, the two-digit CIP code ‘01’ is the code for all ‘Agriculture, Agriculture Operations, and Related Sciences’ courses; within that, the four-digit CIP code ‘01.01’ is the subdivision for all ‘Agricultural Business and Management’ courses, and within that, ‘01.0103’ is the subdivision for all ‘Agricultural Economics’ courses.
Our field classifier is trained and tested on a subset of the CIP taxonomy that we find most useful for describing syllabi. In some cases, we have combined codes, though we have generally done so only within the same two-digit branch of the taxonomy. For example, the codes ['45.09', '45.10']
are a combination of ‘International Relations and National Security Studies’ and ‘Political Science and Government’, which are both subdivisions of code ‘45’, ‘Social Sciences’; we combine them into a field that we call “Political Science” (see name).
name
The field, as chosen by OS.
Institution
_id
An OS-assigned surrogate identifier for the field.
Note
This unique identifier is not guaranteed to be consistent across versions of the dataset.
grid_id
The GRID unique identifier of the institution.
wikidata_id
The Wikidata unique identifier of the institution.
unitid
The IPEDS unique identifier of the institution. Only defined for institutions within the United States.
city
The city the syllabus was taught in.
name
The name of the institution.
lat
The latitude of the institution location.
lng
The longitude of the institution location.
url
The URL to the home webpage of the institution.
country_code
The ISO 3166-1 alpha-2 code of the institution country.
country
The full English name of the country corresponding to country_code.
state_code
The ISO 3166-2 region code of the region (state, parish, district, etc.) the syllabus was taught in.
state
The English name of the state corresponding to state_code.
enrollment
The number of total students enrolled at the institution, as aggregated from several data sources. This data is the most recent available, usually the 2018-2019 school year.
two_year
Whether or not the institution is primarily a two year institution.
This value is derived from the carnegie_basic2018
classification. It is true when carnegie_basic2018
is in the range [1, 14].
four_year
Whether or not the institution is a four year institution.
This value is derived from the carnegie_basic2018
classification. It is true when carnegie_basic2018
is in the range [15, 32].
graduate
Whether or not the institution is a graduate institution.
This value is derived from the carnegie_basic2018
classification. It is true when carnegie_basic2018
is in the range [15, 20].
research
Whether or not the institution is an R1 or R2 research institution.
wikipedia_url
The URL of the institution’s Wikipedia article.
description
A paragraph-length description of the institution, extracted from Wikipedia.
image_url
A URL to a “profile” image for the school (a logo, seal, or wordmark), extracted from Wikipedia.
Date
year
The academic year the syllabus was or will be taught.
term
The academic term of the syllabus. Possible values are winter
, spring
, summer
and fall
.
ExtractedSections
Normalized document sections extracted by the parser. Each field is an instance of Span
.
title
The name of the course. E.g., Statistical Learning Theory and Applications
.
code
The identifier that appears in the institutional course catalog. Generally (but not always) a combination of a department code and course number. E.g., CS224n
or 9.520
.
section
The identifier for the specific section of the course that the syllabus corresponds to. Most common for lower-level courses with large enrollments.
date
The raw, un-normalized representation of the course date, as it appears in the document. Generally a term + year pair – eg, Fall 2009
.
class_days
The days of the week when the class meets.
class_time
The time when the class meets.
class_location
The location of the class meetings.
instructor
The name of the instructor(s).
Note
This field is removed in anonymized distributions of the dataset.
instructor_phone
The instructor’s phone number.
Note
This field is removed in anonymized distributions of the dataset.
office_hours_days
The days of the week when office hours are held.
office_location
The location of the instructor’s office.
office_hours_times
The time when office hours are held.
credits
The credits earned by taking the course.
description
Narrative description of course content. Often a 1-2 paragraphs at the beginning of the syllabus.
learning_outcomes
Lists of competencies or skills that students are expected to acquire in the course. Often structured as verb phrases. These will often overlap with description
and topic_outline
. E.g.:
Articulate the relationship between derivatives and integrals using the Fundamental Theorem of Calculus
Sharpen and develop new research methodology skills
.
citations
Book and article citations in the syllabus. These are the raw document spans that are taken in by the citation parsing and linking models, the output of which is provided under the top-level citations
key.
required_reading
The citation(s) for books, articles, or other resources that are required for the course.
grading_rubric
The description of the range of grades that can be assigned. Often - a mapping between letter grades and numeric ranges. E.g., A+ = 90-100, A = 85-89, ...
assessment_strategy
Descriptions of how grades are calculated – the types of assignments, the weighting or percentage assigned to each, etc.
topic_outline
Lists of topics that are covered in the course. Compared to learning_outcomes
, these lists tend to be more narrowly focused on the course material itself (as opposed to the student interaction with the material), and are often structured like a table of contents in a book.
assignment_schedule
A chronologically-ordered sequence of assignments, readings, or topics. Often structured as an ordered list where each item corresponds to a week or class meeting.
school_name
The name of the institution where the course was taught. When present, this value is passed into the institution matcher and used as the basis for one of the entity linking routines used to match the syllabus with an institution.
Citation
doc_span
Instance of Span
– The raw span from the document where the citation appears.
parsed_citation
Instance of ParsedCitation
– A segmented version of the citation, with title, subtitle, author, editor, publisher, and ISBN extracted as structured items.
catalog_key
Instance of CatalogKey
– The normalized title and author values used to link the citation with an canonical bibliographic record.
catalog_record
Instance of CatalogRecord
– The linked bibliographic record. Null if no record is found.
ParsedCitation
Normalized sections extracted by the citation parser. Each field is an instance of Span
.
title
The title of the work.
subtitle
The subtitle of the work.
editor
The editor of the work.
publisher
The publisher of the work.
isbn
The ISBN of the work.
CatalogKey
clean_title
A lightly normalized version of the title string.
title_key
A heavily normalized version of the title string. Used for lookups into the bibliographic database.
CatalogRecord
_id
An OS-assigned surrogate identifier for the record.
Note
This unique identifier is not guaranteed to be consistent across versions of the dataset.
work_cluster_size
The number of individual “expression” records that were clustered together to form this work record.
sources
Third-party identifiers of the work in the source catalogs. A dictionary of {source_name: [id1, id2, id3, ...]}
.
title
The title of the work.
subtitle
The subtitle of the work.
publisher
The publisher of the work.
year
The year the work was published.
description
A free-text description of the work, intended for display.
image_urls
URLs to cover images for the work.
dois
A list of DOIs for the work, derived from lists in the source catalogs.
isbns
A list of ISBNs for the work, derived from lists in the source catalogs.
issns
A list of ISSNs for the work, derived from lists in the source catalogs.
urls
A list of URLs for the work, derived from lists in the source catalogs.
publication_type
The type of publication the work is. Possible values are book
, book-chapter
, article
, or report
.
open_access
Whether or not the work is an open access work.
article
Instance of Article
– Metadata specific to article records.
Article
venue
The name of the journal or conference.
volume
The journal volume.
issue
The journal issue.
page_start
The starting page number.
page_end
The ending page number.
abstract
The abstract of the article.
Author
forenames
A single string containing the names or initials of the first and/or middle names.
keyname
The last name of the author.
Span
text
The raw text span extracted from the document, without any postprocessing.
mean_proba
The average of the probabilities assigned by the model to the start and end “boundary” tokens that define the span in the document. (Or, for single-token spans, just the probability assigned to the one token.) This can be used in a comparative sense as a signal for the confidence of the model on the prediction.
ci1
The index of the first character in the span.
ci2
The index of the last character in the span.
ti1
The index of the first token in the span.
ti2
The index of the last token in the span.