This sounds like a straightforward ULMFiT problem, if I understand you correctly. My guess would be the approach is:
- Build or use a pre-existing language model (like Wikitext103)
- Transform your dataset from [id, sentence, emotion] to [0, sentence] because you train your language model on unlabeled data. Also split it into train/validation
- Use the new dataset to finetune (load the LM weights from 1, retrain). Save the model, save the encoder
- Load the encoder and train a classifier with your [id, sentence, emotion] dataset (since the emotion is the label)
- Use predict to write your [id, emotion] target. You have to map the ids somehow.