Более удобная обработка слов в генераторе списков?
docs = [[] for i in range(1)]
Серьёзно?
Из-за ваших "генераторов списков" страдает ваша же производительность и читабельность. Да, они быстрее, но что, если ваша функция preprocessing, вызываемая в некоторых случаях дважды, только усугубляет скорость выполнения?document = []
for line in open(mypath + '\\' + files[0]).readlines():
    for word in line.split():
        w = preprocessing(word, stop_words_list)
        if w:
            document.append(w)
Не используйте такие громоздкие конструкции, вроде if w != ''. Во-первых, в булевом виде ноль, пустая строка, None, пустой список, пустое множество и словарь (и много ещё чего, что логично) дают False. Обычно так конкретно сравнивают, если переменная может быть другого типа и в булевом виде давать False (например, None) и это нужно учесть.
Генераторы списков здесь не нужно использовать. Они подходят для простых операций с последовательностями, в вашем случае явно код будет более правильный и читабельный, если использовать обычный цикл. И вам точно не стоит заморачиваться с преждевременной оптимизацией.