              print("Trained on", processed, "entities across", self.EPOCHS, "epochs")
              print("Final loss:", loss)
  
      def _train_model(self, description_list):
          # TODO: when loss gets too low, a 'mean of empty slice' warning is thrown by numpy
  
          self._build_network(self.input_dim, self.desc_width)
  
          processed = 0
          loss = 1
          descriptions = description_list.copy()   # copy this list so that shuffling does not affect other functions
 
</s> remove             print("Trained on", processed, "entities across", self.EPOCHS, "epochs")
 </s> add             print(
                "Trained entity descriptions on",
                processed,
                "(non-unique) entities across",
                self.epochs,
                "epochs",
            ) </s> remove         descriptions = description_list.copy()   # copy this list so that shuffling does not affect other functions
 </s> add         # copy this list so that shuffling does not affect other functions
        descriptions = description_list.copy()
        to_continue = True </s> remove         for i in range(self.EPOCHS):
 </s> add         for i in range(self.epochs): </s> remove     def __init__(self, nlp, input_dim, desc_width):
 </s> add     # Set min. acceptable loss to avoid a 'mean of empty slice' warning by numpy
    MIN_LOSS = 0.01

    # Reasonable default to stop training when things are not improving
    MAX_NO_IMPROVEMENT = 20

    def __init__(self, nlp, input_dim, desc_width, epochs=5): </s> remove                 print(i, batch_nr, loss)
 </s> add                 if batch_nr % 25 == 0:
                    print("loss:", loss)
        best_loss = 1.0
        iter_since_best = 0
              print("Trained on", processed, "entities across", self.EPOCHS, "epochs")
              print("Final loss:", loss)
  
      def _train_model(self, description_list):
        best_loss = 1.0
        iter_since_best = 0
        best_loss = 1.0
        iter_since_best = 0
          self._build_network(self.input_dim, self.desc_width)
  
          processed = 0
          loss = 1
          descriptions = description_list.copy()   # copy this list so that shuffling does not affect other functions
keep keep keep keep replace 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 
bin/wiki_entity_linking/train_descriptions.py