anchor.diff:      |  #[+src(gh("spacy-dev-resources", "templates/new_language")) language data],
       |  so that Python functions can be used to help you generalise and combine
       |  the data as you require.
  +
  +p
  +    |  Here's an overview of the individual components that can be included
  +    |  in the language data. For more details on them, see the sections below.
  +
  ++image
  +    include ../../assets/img/docs/language_data.svg
  +
  ++table(["File name", "Variables", "Description"])
  +    +row
  +        +cell #[+src(gh()) stop_words.py]
  +        +cell #[code STOP_WORDS] (set)
  +        +cell
  +            |  List of most common words. Matching tokens will return #[code True]
  +            |  for #[code is_stop].
  +
  +    +row
  +        +cell #[+src(gh()) tokenizer_exceptions.py]
  +        +cell #[code TOKENIZER_EXCEPTIONS] (dict), #[code TOKEN_MATCH] (regex)
  +        +cell
  +            |  Special-case rules for the tokenizer, for example, contractions
  +            |  and abbreviations containing punctuation.
  +
  +    +row
  +        +cell #[+src(gh()) punctuation.py]
  +        +cell
  +            |  #[code TOKENIZER_PREFIXES], #[code TOKENIZER_SUFFIXES],
  +            |  #[code TOKENIZER_INFIXES] (dicts)
  +        +cell Regular expressions for splitting tokens, e.g. on punctuation.
  +
  +    +row
  +        +cell #[+src(gh()) lex_attrs.py]
  +        +cell #[code LEX_ATTRS] (dict)
  +        +cell
  +            |  Functions for setting lexical attributes on tokens, e.g.
  +            |  #[code is_punct] or #[code like_num].
  +
  +    +row
  +        +cell #[+src(gh()) tag_map.py]
  +        +cell #[code TAG_MAP] (dict)
  +        +cell
  +            |  Dictionary mapping strings in your tag set to
  +            |  #[+a("http://universaldependencies.org/u/pos/all.html") Universal Dependencies]
  +            |  tags.
  +
  +    +row
  +        +cell #[+src(gh()) morph_rules.py]
  +        +cell #[code MORPH_RULES] (dict)
  +        +cell
  +
  +    +row
  +        +cell #[+src(gh()) lemmatizer.py]
  +        +cell #[code LOOKUP] (dict)
  +        +cell
  +            |  Lookup-based lemmatization table. If more lemmatizer data is
  +            |  available, it should live in #[code /lemmatizer/lookup.py].
  +
  +    +row
  +        +cell /lemmatizer
  +        +cell #[code LEMMA_RULES], #[code LEMMA_INDEX], #[code LEMMA_EXC] (dicts)
  +        +cell Lemmatization rules, keyed by part of speech.
   
   +infobox("For languages with non-latin characters")
       |  In order for the tokenizer to split suffixes, prefixes and infixes, spaCy
  
positive.code:     |  need to:
  
  +list("numbers")
      +item
          |  Create a #[strong #[code Language] subclass] and
          |  #[a(href="#language-subclass") implement it].
  
      +item
          |  Define custom #[strong language data], like a
          |  #[a(href="#stop-words") stop list], #[a(href="#tag-map") tag map]
          |  and #[a(href="#tokenizer-exceptions") tokenizer exceptions].
  
      +item
          |  #[strong Build the vocabulary] including
  
negative.code:         |  #[a(href="#word-vectors") word vectors].
  
      +item
          |  #[strong Set up] a #[a(href="#model-directory") model direcory] and
          |  #[strong train] the #[a(href="#train-tagger-parser") tagger and parser].
  
  p
      |  For some languages, you may also want to develop a solution for
  