# Data Preparation for next word prediction

In most places, I have seen that when preparing the training data and label for next-word prediction from the corpus one uses a fixed window size say of length 4, and then scans the subsequences of length 4 as X and the next token as y.

For example: Consider this sentence "The quick brown fox jumps over the lazy dog" and a window of size say 4. Then my training data looks something like this as (X, y) pair

["The quick brown" , "fox"], ["quick brown fox", "jumps"], ["brown fox jumps", "over"], .....


I have the following doubts.

1. When we train a language model over the data it expects the sequence of length 4, but suppose a sentence only contains 2 words say "quick brown" and I need to predict the next word "fox" I know we can pad to sequence of length 4 but my doubt is will model do any good with a sequence of shorter length if it's trained on the fixed sequence of length 4?
2. Is it a good idea to have all subsequences of length say from 1 to 4 as training data and pad the shorter ones to a maximum length which is 4 in this case? One problem I see is the issue of the underrepresentation of larger lengths and the overrepresentation of smaller lengths.
• The method you describe is by no means the standard for language model training. Please cite sources so that we can check why they used such a method.
– noe
Commented Feb 18, 2023 at 8:23

The approach you described is called the n-gram model, where n represents the window size, and the model is trained to predict the next word based on the previous n-1 words.

However, n-gram models have several limitations, including:

• Sparsity: As the length of the n-gram increases, the number of distinct n-grams in the corpus tends to increase exponentially, resulting in many n-grams having very few occurrences.
• Inability to capture long-range dependencies: N-gram models can only model the dependencies between adjacent words and are unable to capture long-range dependencies.
• Difficulty handling out-of-vocabulary words: N-gram models cannot handle words that are not present in the training corpus.

One alternative you can use a transformer model for mask prediction, in this approach, you randomly mask out a certain percentage of the input tokens at a variable length and then train the model to predict the original values of those masked tokens.

For example, if the input sequence is "The quick brown fox", the masked training sequence would be "The quick [MASK] fox". Here, "[MASK]" represents a special token indicating the target token to be predicted.

When training a language model on fixed-size sequences, it is common to pad shorter sequences to the maximum length with a special token, such as <PAD>. This ensures that all sequences have the same length and can be processed by the model. However, padding should not be used when evaluating the model on test data, as it may introduce artifacts that affect performance.

Regarding your first question, it is true that a model trained on fixed sequences of length 4 may not be able to handle shorter sequences as well. However, the impact of this on performance depends on the specifics of the model and the data. It is possible that a model trained on fixed-length sequences will still be able to generalize well to shorter sequences. If you have a lot of shorter sequences in your data, you may want to consider training a separate model on these sequences specifically.

As for your second question, including all subsequences of length 1 to 4 as training data could be a good idea, as it provides more training examples and can help the model learn to handle sequences of different lengths. However, as you mentioned, this may result in an over-representation of shorter sequences and an under-representation of longer sequences. To address this, you could try weighting the training examples based on their sequence length, or augmenting the training data with additional longer sequences. It is also important to validate the performance of the model on test data to ensure that it is able to generalize to sequences of different lengths.