Итак, у вас есть кое-что - для случая с одним словом - которое говорит что-то вроде:
while (true)
word = readNextWord()
register(word, now)
discardWordsOlderThan (now - windowSize)
Просто следите за предыдущим словом:
while (true)
word = readNextWord()
register(prev + " " + word, now)
prev = word
discardWordsOlderThan (now - windowSize)