You can see the tags the model discovered/trained in `model.docvecs.offset2doctag`.
Because a text-example (sentence/paragraph/document) can have multiple tags, the `tags` part of a example should be a list-of-tags. If you supply a single simple string, it looks like a list-of-single-characters - and thus your first example, rather than having the string tag 'ticket0000', will have the character tags 't', 'i', 'c', 'k', 'e', 't', '0', '0', '0', '0'. (Your 15 unique 'tags' are thus likely: 't', 'i', 'c', 'k', 'e', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'.) Even if an example just has one tag, it should be in a 1-element list: ['ticket0000', ]
If you're using the latest version of gensim, `TaggedDocument` is the preferred class name (rather than `LabeledSentence`), and there should also be a logged warning when all your tags are single characters – because this is a common mistake. (Do you have logging enabled and see any log output?)
When your examples have the right kind of tags, you'll be able to access doctag vectors with `model.docvecs['ticket0000']` as you expected.
A few other notes about your setup:
(1) You don't need to manage the epochs/alpha yourself - just supply an `iter=10` parameter to Doc2Vec and one call to `train()` will do 10 passes, with `alpha` linearly-falling from its initial value to whatever your desired `min_alpha`.
(2) Because the default `iter` is 5, each call to train does 5 passes, and your loop of 10 calls thus results in 50 passes total. You'd really only want to call `train()` multiple times yourself if you were (a) doing something more fancy with `alpha`; or (b) wanted to do something, like print extra progress/midway-evaluation-info, after each pass.
(3) Note that 1000 documents is a very small corpus, and Word2Vec/Doc2Vec generally needs many more examples to give sensible results. Using fewer dimensions or more iterations may help make small-corpus results a bit more stable/generalizable, but really you'll want a larger dataset if at all possible.
- Gordon