How should I format input and output for text generation with LSTMs
You can use word embedding, to encode words as vectors of real numbers. Then all calculations, such as comparison of words (to find similarity), are performed in that high-dimensional space.


  "What would be the best way to format my input (and my output) for
  this problem?"


I cannot tell which is the best approach (depends on your problem) but this one is very common. It's also very easy to implement in Keras, using the Embedding layer.