          self.cfg["entity_width"] = self.kb.entity_vector_length
  
          if self.model is True:
              self.model = self.Model(**self.cfg)
              self.sgd_context = self.create_optimizer()
  
          if sgd is None:
              sgd = self.create_optimizer()
  
          return sgd
 
</s> remove         self.sgd_context = None
        if not self.cfg.get("context_width"):
            self.cfg["context_width"] = 128
 </s> add  </s> remove         predictions, bp_model = self.model.begin_update(np.asarray(vectors), drop=self.DROP)
 </s> add         predictions, bp_model = self.model.begin_update(
            np.asarray(vectors), drop=self.DROP
        ) </s> remove             self.encoder = (
                Affine(hidden_with, orig_width)
 </s> add             self.encoder = Affine(hidden_with, orig_width)
            self.model = self.encoder >> zero_init(
                Affine(orig_width, hidden_with, drop_factor=0.0) </s> remove             context_gradients = [list(x[0:self.cfg.get("context_width")]) for x in mention_gradient]
            bp_context(self.model.ops.asarray(context_gradients, dtype="float32"), sgd=self.sgd_context)
 </s> add         if scores.shape != entity_encodings.shape:
            raise RuntimeError(Errors.E147.format(method="get_loss", msg="gold entities do not match up")) </s> remove             if losses is not None:
                losses[self.name] += loss
            return loss
        return 0
 </s> add         loss, gradients = get_cossim_loss(yh=scores, y=entity_encodings)
        loss = loss / len(entity_encodings)
        return loss, gradients
          self.cfg["entity_width"] = self.kb.entity_vector_length
  
          if self.model is True:
              self.model = self.Model(**self.cfg)

  
          if sgd is None:
              sgd = self.create_optimizer()
  
          return sgd
keep keep keep keep replace keep keep keep keep keep
 CLI scripts for entity linking (wikipedia & generic) (#4091)

* document token ent_kb_id

* document span kb_id

* update pipeline documentation

* prior and context weights as bool's instead

* entitylinker api documentation

* drop for both models

* finish entitylinker documentation

* small fixes

* documentation for KB

* candidate documentation

* links to api pages in code

* small fix

* frequency examples as counts for consistency

* consistent documentation about tensors returned by predict

* add entity linking to usage 101

* add entity linking infobox and KB section to 101

* entity-linking in linguistic features

* small typo corrections

* training example and docs for entity_linker

* predefined nlp and kb

* revert back to similarity encodings for simplicity (for now)

* set prior probabilities to 0 when excluded

* code clean up

* bugfix: deleting kb ID from tokens when entities were removed

* refactor train el example to use either model or vocab

* pretrain_kb example for example kb generation

* add to training docs for KB + EL example scripts

* small fixes

* error numbering

* ensure the language of vocab and nlp stay consistent across serialization

* equality with =

* avoid conflict in errors file

* add error 151

* final adjustements to the train scripts - consistency

* update of goldparse documentation

* small corrections

* push commit

* turn kb_creator into CLI script (wip)

* proper parameters for training entity vectors

* wikidata pipeline split up into two executable scripts

* remove context_width

* move wikidata scripts in bin directory, remove old dummy script

* refine KB script with logs and preprocessing options

* small edits

* small improvements to logging of EL CLI script 
spacy/pipeline/pipes.pyx