Bad results with terms.teach

To find other terms , the terms.teach recipe will iterate over the entries in the model's vocab. So maybe your custom model doesn't actually have the words present in its vocabulary?

This would explain why the only terms you see are the seed terms (which were added to the target Doc and are then part of the vocab) and why it works when you use the model manually (because words you process are then added to the vocabulary). You can test this by looking at len(nlp.vocab) – the number should be roughly the number of word you've added vectors for.

In your code, make sure to use the vocab.set_vector method to also add the word to the vocab. Alternatively, you could also use vocab.strings.add to add strings to the vocabulary directly.