anchor.diff:      |  complex regular expressions. The language data has also been tidied up
       |  and simplified. It's now also possible to overwrite the functions that
       |  compute lexical attributes like #[code like_num], and supply
  -    |  language-specific syntax iterators, e.g. to determine noun chunks.
  -
  -+infobox
  +    |  language-specific syntax iterators, e.g. to determine noun chunks. spaCy
  +    |  now also supports simple lookup-based lemmatization. The data is stored
  +    |  in a dictionary mapping a string to its lemma.
  +
  ++infobox
  +    |  #[strong API:] #[+api("language") #[code Language]]
       |  #[strong Code:] #[+src(gh("spaCy", "spacy/lang")) spacy/lang]
  -    |  #[strong Usage:] #[+a("/docs/usage/adding-languages") Adding languages]
  -
  -+h(3, "features-pipelines") Improved processing pipelines
  -
  -+aside-code("Example").
  -    from spacy.language import Language
  -    nlp = Language(pipeline=['token_vectors', 'tags',
  -                             'dependencies'])
  -
  -+infobox
  -    |  #[strong API:] #[+api("language") #[code Language]]
  -    |  #[strong Usage:] #[+a("/docs/usage/processing-text") Processing text]
  -
  -+h(3, "features-lemmatizer") Simple lookup-based lemmatization
  -
  -+aside-code("Example").
  -    LOOKUP = {
  -        "aba": "abar",
  -        "ababa": "abar",
  -        "ababais": "abar",
  -        "ababan": "abar",
  -        "ababanes": "ababán"
  -    }
  -
  -p
  -    |  spaCy now supports simple lookup-based lemmatization. The data is stored
  -    |  in a dictionary mapping a string to its lemma. To determine a token's
  -    |  lemma, spaCy simply looks it up in the table. The lookup lemmatizer can
  -    |  be imported from #[code spacy.lemmatizerlookup]. It's initialised with
  -    |  the lookup table, and should be returned by the #[code create_lemmatizer]
  -    |  classmethod of the language's defaults.
  -
  -+infobox
  -    |  #[strong API:] #[+api("language") #[code Language]]
       |  #[strong Usage:] #[+a("/docs/usage/adding-languages") Adding languages]
   
   +h(3, "features-matcher") Revised matcher API
  
positive.code: +infobox
      |  #[strong API:] #[+api("displacy") #[code displacy]]
      |  #[strong Usage:] #[+a("/docs/usage/visualizers") Visualizing spaCy]
  
  +h(3, "features-loading") Loading
  
  +aside-code("Example").
      nlp = spacy.load('en') # shortcut link
      nlp = spacy.load('en_core_web_sm') # package
      nlp = spacy.load('/path/to/en') # unicode path
      nlp = spacy.load(Path('/path/to/en')) # pathlib Path
  
  p
      |  The improved #[code spacy.load] makes loading models easier and more
      |  transparent. You can load a model by supplying its
      |  #[+a("/docs/usage/models#usage") shortcut link], the name of an installed
      |  #[+a("/docs/usage/saving-loading#generating") model package], a unicode
      |  path or a #[code Path]-like object. spaCy will try resolving the load
      |  argument in this order. The #[code path] keyword argument is now deprecated.
  
  p
      |  The #[code Language] class to initialise will be determined based on the
      |  model's settings. If no model is found, spaCy will let you know and won't
      |  just return an empty #[code Language] object anymore. If you want a blank
      |  language, you can always import the class directly, e.g.
      |  #[code from spacy.lang.en import English].
  
  +infobox
      |  #[strong API:] #[+api("spacy#load") #[code spacy.load]]
      |  #[strong Usage:] #[+a("/docs/usage/saving-loading") Saving and loading]
  
  +h(3, "features-language") Improved language data and lazy loading
  
  
negative.code: +infobox
      |  #[strong API:] #[+api("matcher") #[code Matcher]]
      |  #[strong Usage:] #[+a("/docs/usage/rule-based-matching") Rule-based matching]
  
  +h(3, "features-models") Neural network models for English, German, French and Spanish
  
  