          correct = 0
          for i in range(tokens.length):
              guess = self.update(i, tokens.data, golds[i])
              loss = golds[i] != -1 and guess != golds[i]
  
              self.vocab.morphology.assign_tag(&tokens.data[i], guess)
              correct += loss == 0
              self.freqs[TAG][tokens.data[i].tag] += 1
          return correct
  
      cdef int predict(self, int i, const TokenC* tokens) except -1:
 
</s> remove         golds = [self.tag_names.index(g) if g is not None else -1
                 for g in gold_tag_strs]
 </s> add         golds = [self.tag_names.index(g) if g is not None else -1 for g in gold_tag_strs] </s> remove                 self.vocab.morphology.assign_tag(&tokens.data[i], guess)
 </s> add                 self.vocab.morphology.assign_tag(self.vocab.strings, &tokens.data[i], guess) </s> remove     #cdef int set_morph(self, const int i, const PosTag* tag, TokenC* tokens) except -1
    #cdef int lemmatize(self, const univ_pos_t pos, const LexemeC* lex) except -1
 </s> add  </s> remove     cdef readonly int n_tags

 </s> add 
            self.vocab.morphology.assign_tag(self.vocab.strings, &tokens.data[i], guess)
          correct = 0
          for i in range(tokens.length):
              guess = self.update(i, tokens.data, golds[i])
              loss = golds[i] != -1 and guess != golds[i]
            self.vocab.morphology.assign_tag(self.vocab.strings, &tokens.data[i], guess)
            self.vocab.morphology.assign_tag(self.vocab.strings, &tokens.data[i], guess)
              correct += loss == 0
              self.freqs[TAG][tokens.data[i].tag] += 1
          return correct
  
      cdef int predict(self, int i, const TokenC* tokens) except -1:
keep keep keep keep replace replace keep keep keep keep keep
 * Tagger training now working. Still need to test load/save of model. Morphology still broken. 
spacy/tagger.pyx