mirror of https://github.com/explosion/spaCy.git
Trigger nonproj.deprojectivize as a postprocess
This commit is contained in:
parent
3a65a0c970
commit
0384f08218
|
@ -97,7 +97,7 @@ class Language(object):
|
||||||
'tokenizer': lambda nlp: nlp.Defaults.create_tokenizer(nlp),
|
'tokenizer': lambda nlp: nlp.Defaults.create_tokenizer(nlp),
|
||||||
'tensorizer': lambda nlp, **cfg: TokenVectorEncoder(nlp.vocab, **cfg),
|
'tensorizer': lambda nlp, **cfg: TokenVectorEncoder(nlp.vocab, **cfg),
|
||||||
'tagger': lambda nlp, **cfg: NeuralTagger(nlp.vocab, **cfg),
|
'tagger': lambda nlp, **cfg: NeuralTagger(nlp.vocab, **cfg),
|
||||||
'parser': lambda nlp, **cfg: NeuralDependencyParser(nlp.vocab, **cfg), # nonproj.deprojectivize,
|
'parser': lambda nlp, **cfg: NeuralDependencyParser(nlp.vocab, **cfg),
|
||||||
'ner': lambda nlp, **cfg: NeuralEntityRecognizer(nlp.vocab, **cfg),
|
'ner': lambda nlp, **cfg: NeuralEntityRecognizer(nlp.vocab, **cfg),
|
||||||
'similarity': lambda nlp, **cfg: SimilarityHook(nlp.vocab, **cfg),
|
'similarity': lambda nlp, **cfg: SimilarityHook(nlp.vocab, **cfg),
|
||||||
'textcat': lambda nlp, **cfg: TextCategorizer(nlp.vocab, **cfg)
|
'textcat': lambda nlp, **cfg: TextCategorizer(nlp.vocab, **cfg)
|
||||||
|
|
|
@ -28,6 +28,7 @@ from thinc.neural._classes.difference import Siamese, CauchySimilarity
|
||||||
from .tokens.doc cimport Doc
|
from .tokens.doc cimport Doc
|
||||||
from .syntax.parser cimport Parser as LinearParser
|
from .syntax.parser cimport Parser as LinearParser
|
||||||
from .syntax.nn_parser cimport Parser as NeuralParser
|
from .syntax.nn_parser cimport Parser as NeuralParser
|
||||||
|
from .syntax import nonproj
|
||||||
from .syntax.parser import get_templates as get_feature_templates
|
from .syntax.parser import get_templates as get_feature_templates
|
||||||
from .syntax.beam_parser cimport BeamParser
|
from .syntax.beam_parser cimport BeamParser
|
||||||
from .syntax.ner cimport BiluoPushDown
|
from .syntax.ner cimport BiluoPushDown
|
||||||
|
@ -773,11 +774,19 @@ cdef class DependencyParser(LinearParser):
|
||||||
if isinstance(label, basestring):
|
if isinstance(label, basestring):
|
||||||
label = self.vocab.strings[label]
|
label = self.vocab.strings[label]
|
||||||
|
|
||||||
|
@property
|
||||||
|
def postprocesses(self):
|
||||||
|
return [nonproj.deprojectivize]
|
||||||
|
|
||||||
|
|
||||||
cdef class NeuralDependencyParser(NeuralParser):
|
cdef class NeuralDependencyParser(NeuralParser):
|
||||||
name = 'parser'
|
name = 'parser'
|
||||||
TransitionSystem = ArcEager
|
TransitionSystem = ArcEager
|
||||||
|
|
||||||
|
@property
|
||||||
|
def postprocesses(self):
|
||||||
|
return [nonproj.deprojectivize]
|
||||||
|
|
||||||
def init_multitask_objectives(self, gold_tuples, pipeline, **cfg):
|
def init_multitask_objectives(self, gold_tuples, pipeline, **cfg):
|
||||||
for target in []:
|
for target in []:
|
||||||
labeller = NeuralLabeller(self.vocab, target=target)
|
labeller = NeuralLabeller(self.vocab, target=target)
|
||||||
|
@ -818,6 +827,11 @@ cdef class BeamDependencyParser(BeamParser):
|
||||||
if isinstance(label, basestring):
|
if isinstance(label, basestring):
|
||||||
label = self.vocab.strings[label]
|
label = self.vocab.strings[label]
|
||||||
|
|
||||||
|
@property
|
||||||
|
def postprocesses(self):
|
||||||
|
return [nonproj.deprojectivize]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
__all__ = ['Tagger', 'DependencyParser', 'EntityRecognizer', 'BeamDependencyParser',
|
__all__ = ['Tagger', 'DependencyParser', 'EntityRecognizer', 'BeamDependencyParser',
|
||||||
'BeamEntityRecognizer', 'TokenVectorEnoder']
|
'BeamEntityRecognizer', 'TokenVectorEnoder']
|
||||||
|
|
|
@ -739,6 +739,14 @@ cdef class Parser:
|
||||||
for i in range(doc.length):
|
for i in range(doc.length):
|
||||||
doc.c[i] = state.c._sent[i]
|
doc.c[i] = state.c._sent[i]
|
||||||
self.moves.finalize_doc(doc)
|
self.moves.finalize_doc(doc)
|
||||||
|
for hook in self.postprocesses:
|
||||||
|
for doc in docs:
|
||||||
|
hook(doc)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def postprocesses(self):
|
||||||
|
# Available for subclasses, e.g. to deprojectivize
|
||||||
|
return []
|
||||||
|
|
||||||
def add_label(self, label):
|
def add_label(self, label):
|
||||||
for action in self.moves.action_types:
|
for action in self.moves.action_types:
|
||||||
|
|
Loading…
Reference in New Issue