spaCy/spacy/pipeline/_parser_internals
Daniël de Kok 63fa55089d Use constant-time head lookups in StateC::{L,R}
This change changes the type of left/right-arc collections from
vector[ArcC] to unordered_map[int, vector[Arc]], so that the arcs are
keyed by the head. This allows us to find all the left/right arcs for a
particular head in constant time in StateC::{L,R}.

Benchmarks with long docs (N is the number of text repetitions):

Before (using #10019):

    N  Time (s)

  400   3.2
  800   5.0
 1600   9.5
 3200  23.2
 6400  66.8
12800  220.0

After (this commit):

   N   Time (s)

  400   3.1
  800   4.3
 1600   6.7
 3200  12.0
 6400  22.0
12800  42.0

Related to #9858 and #10019.
2022-01-13 12:08:46 +01:00
..
__init__.pxd Add beam_parser and beam_ner components for v3 (#6369) 2020-12-13 09:08:32 +08:00
__init__.py
_beam_utils.pxd Add beam_parser and beam_ner components for v3 (#6369) 2020-12-13 09:08:32 +08:00
_beam_utils.pyx Getting scores out of beam_ner (#6575) 2021-01-06 12:02:32 +01:00
_state.pxd Use constant-time head lookups in StateC::{L,R} 2022-01-13 12:08:46 +01:00
_state.pyx
arc_eager.pxd Getting scores out of beam_parser (#6684) 2021-01-07 16:28:27 +11:00
arc_eager.pyx Use dict.copy().items() instead of list(.items()) (#9868) 2021-12-16 09:17:33 +01:00
ner.pxd
ner.pyx Support negative examples in partial NER annotations (#8106) 2021-06-17 17:33:00 +10:00
nonproj.pxd
nonproj.pyx Clean up spacy.tokens (#6046) 2020-09-16 20:32:38 +02:00
stateclass.pxd Add beam_parser and beam_ner components for v3 (#6369) 2020-12-13 09:08:32 +08:00
stateclass.pyx Add beam_parser and beam_ner components for v3 (#6369) 2020-12-13 09:08:32 +08:00
transition_system.pxd Support negative examples in partial NER annotations (#8106) 2021-06-17 17:33:00 +10:00
transition_system.pyx Support negative examples in partial NER annotations (#8106) 2021-06-17 17:33:00 +10:00