I am trying to build a bigram letter model.

I obtain a sequence of words in a form of ['hello','I','am','Johnny'].

Firstly, I lower all the words to obtain : ['hello','i','am','johnny'].

I am capable of building a bigram letter model, but I have read somewhere that you should provide some kind of empty strings / padding to the model.

Does anybody know why do you have to provide padding to the input data to build a proper language model? And how to use padding on this sample input to build letter model?

I was thinking about making a space in front of every word, but I am not convinced that this is the right solution - other options that I am considering are adding padding at the end of every sentence or after each sequence of 2 characters as this is a bigram letter model.

The padding is there since the distribution of letters at the beginning and end of words is very different from their distribution inside words. To capture that, separate words with spaces and add trailing spaces on both sides: ' hello i am johnny '.