Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Contents

Table of Contents
maxLevel4

Other EF Information

Children Display

Introduction

The HTRC Extracted Features (EF) dataset contains informative characteristics, at the page level, of text from public domain volumes in the HathiTrust Digital LIbrary (HTDL). These are slightly more than 5 million volumes, representing about 38% of the total digital content of the HTDL.

Rationale

Texts from the HTDL corpus that are not in the public domain are not available for download, which limits the usefulness of the corpus for research. However,  a great deal of fruitful research, especially in the form of text mining, can be performed on the basis of non-consumptive reading using extracted features (features extracted from the text) even when the full text is not available. To this end, the HathiTrust Research Center (HTRC) has started making available a set of page-level features extracted from the HTDL's public domain volumes. These extracted features can be the basis for certain kinds of  algorithmic analysis. For example, since topic modeling algorithms work with "bags of words" (sets of tokens), and since tokens and their frequencies are now being provided as extracted features, the EF dataset can enable a user to perform topic modeling with the data.

Worksets and the Extracted Features (EF) Dataset

Currently, the extracted features dataset is being provided in connection with worksets. (If you are not familiar with HathiTrust worksets, you may want to review the HTRC Workset Builder tutorial.)

The EF dataset for any HTRC workset can be retrieved as follows. A user first creates a workset (or chooses an existing workset) from the HTRC Portal. The EF datasets for the workset are transferred via rsync, a robust file synchronization/transfer utility. The user executes the EF rsync script generator algorithm (available as one of the algorithms provided at the HTRC Portal) with that workset. This produces a script that the user can then download and execute on his/her own machine. When executed on the user’s machine, the script transfers the EF data files for that workset from the HTRC’s server to the user’s hard disk, resulting in a file for each volume. The EF data is in JSON (JavaScript Object Notation) format — a commonly used lightweight data interchange format.

Content of an EF Dataset

An EF data file for a volume consists of volume-level metadata, and of the extracted feature data for each page in the volume, in JSON format.  The volume-level metadata consists of both volume metadata  (metadata about the volume) and  extracted features metadata (metadata about the extracted features).

Volume Metadata 

  1. schemaVersion: A version identifier for the format and structure of this metadata object.
  2. dateCreated: The time this metadata object was processed.
  3. title: Title of the given volume.
  4. pubDate: The publication year.
  5. language: Primary language of the given volume.
  6. htBibUrl: HT Bibliographic API call for the volume.
  7. handleUrl: The persistent identifier for the volume 
  8. oclc: The array of OCLC number(s).
  9. imprint: The publication place, publisher, and publication date of the given volume.

 

Extracted Features Metadata

  1. schemaVersion: A version identifier for the format and structure of the feature data.
  2. dateCreated: The time the batch of metadata was processed and recorded.
  3. pageCount: The number of pages in the volume.
  4. pages: An array of JSON objects, each representing a page of the volume. 

Extracted Features Data

The extracted features that HTRC currently provides include part-of-speech (POS) -tagged token counts, header and footer identification, and various line-level information. (Providing token information  information at the page level makes it possible to separate paratext from text — e.g. identify pages of publishers’ ads at the back of a book.)line level.   Each page is broken up into three partspage sections: header, body, and footer. Correction of hyphenation of tokens at end of lines has been carried out, but not any additional data cleaning or OCR correction.  

For each page, the following are provided:

  1. seq: A sequence number (pertaining to the page’s position)
  2. tokenCount: Number of tokens in the page.
  3. lineCount: Number of non-empty lines in the page.
  4. emptyLineCount: Number of empty lines in the page.
  5. sentenceCount: Number of sentences identified in page (using the open-source OpenNLP software).
  6. languages: List of languages and their respective percentage that were identified on this page.

The corresponding fields for a page section (header, body, or footer) have the same names, but are for that specific page section:

  1. tokenCount: Number of tokens in that page section.
  2. lineCount: Number of lines containing characters of any kind in that page section.
  3. emptyLineCount: Number of lines without text in that page section.
  4. sentenceCount: Number of sentences found in the text in that page section, parsed using OpenNLP.
  5. tokenPosCount: An unordered list of all tokens (characterized by part of speech using OpenNLP), and their corresponding frequency counts, in that page section. 
  6. beginLineChars: Count of the initial character of each line in that page section (ignoring whitespace).
  7. endLineChars: Count of the last character on each line in that page section (ignoring whitespace).
  8. capAlphaSeq: (body only) Maximum length of the alphabetical sequence of capital characters starting a line.


 
Notes: 

  1. Correction of hyphenation of tokens at ends of lines has been carried out, but no additional data cleaning or OCR correction has been performed. 
  2. Token information has been provided at the page level because this makes it possible to separate paratext from text — e.g. identify pages of publishers’ ads at the back of a book.

Example

Code Block
languagejs
titleExample EF data for basic features for a single page
{  "id":"loc.ark:/13960/t1fj34w02",
   "metadata":{
      "schemaVersion":"1.2",
      "dateCreated":"2015-02-12T13:30",
      "title":"Shakespeare's Romeo and Juliet,",
      "pubDate":"1920",
      "language":"eng",
      "htBibUrl":"http://catalog.hathitrust.org/api/volumes/full/htid/loc.ark:/13960/t1fj34w02.json",
      "handleUrl":"http://hdl.handle.net/2027/loc.ark:/13960/t1fj34w02",
      "oclc":"",
      "imprint":"Scott Foresman and company, [c1920]"
   },
   "features":{
      "schemaVersion":"2.0",
      "dateCreated":"2015-02-20T11:31",
      "pageCount":230,
      "pages":[
        {"seq":"00000015",
          “tokenCount":212,
          "lineCount":38,
          "emptyLineCount":10,
          "sentenceCount":7,
          "languages":[{"en":"1.00"}],
          "header":{
             "tokenCount":7,
             "lineCount":3,
             "emptyLineCount":1,
             "sentenceCount":1,
             "tokenPosCount":{
                "I.":{"NN":1},
                "THE":{"DT":1},
                "INTRODUCTION":{"NN":1},
                "DRAMA":{"NNPS":1},
                "SHAKESPEARE":{"NNP":1},
                "ENGLISH":{"NNP":1},
                "AND":{"CC":1}}},
          "body":{
             "tokenCount":205,
             "lineCount":35,
             "emptyLineCount":9,
             "sentenceCount":6,
             "tokenPosCount":{
                "striking":{"JJ":1},
                "his":{"PRP$":1},
                 "plays":{"NNS":1},
                "London":{"NNP":1},
                "four":{"CD":1},
                ".":{".":7},
                "dramatic":{"JJ":2},
                "1576":{"CD":1},
                "stands":{"VBZ":1},
                ...
                "growth":{"NN":1}
             }
          },
          "footer":{
             "tokenCount":0,
             "lineCount":0,
             "emptyLineCount":0,
                    "sentenceCount":0,
                    "tokenPosCount":{}}}]}}