      def train(self, Doc tokens, object gold_tag_strs):
          cdef int i
          cdef int loss
          cdef const weight_t* scores
          golds = [self.tag_names.index(g) if g is not None else -1
                   for g in gold_tag_strs]
          correct = 0
          for i in range(tokens.length):
              guess = self.update(i, tokens.data, golds[i])
              loss = golds[i] != -1 and guess != golds[i]
  
 
</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                 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             self.vocab.morphology.assign_tag(&tokens.data[i], tag_strs[i])
 </s> add             self.vocab.morphology.assign_tag(self.vocab.strings, &tokens.data[i], tag_strs[i]) </s> remove     cdef readonly int n_tags

 </s> add 
        golds = [self.tag_names.index(g) if g is not None else -1 for g in gold_tag_strs]
      def train(self, Doc tokens, object gold_tag_strs):
          cdef int i
          cdef int loss
          cdef const weight_t* scores
        golds = [self.tag_names.index(g) if g is not None else -1 for g in gold_tag_strs]
        golds = [self.tag_names.index(g) if g is not None else -1 for g in gold_tag_strs]
          correct = 0
          for i in range(tokens.length):
              guess = self.update(i, tokens.data, golds[i])
              loss = golds[i] != -1 and guess != golds[i]
  
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