>Стэмминг
Воспользуйтесь
SnowballStemmer'ом из библиотеки
nltk и выделите корень для каждого слова из вашего датасета, добавляя результат в set.
>замена одинаковых слов числами по словарику
Создайте словарь, где каждому слову из множества соответствует свое число, что-то вроде:
words = {w: i for i, w in enumerate(set_of_stemmed_words)}
Далее вам нужно представить каждое предложение из датасета в виде списка токенов, в данном случае - с помощью словаря words. После этого вы готовы обучать свою модель, ура!
Впрочем, я хочу отметить, что такое представление слов (гуглите word embeddings) является не самой лучшей идеей, потому что сеть может сделать "ошибочные выводы" о важности или близости слов, руководствуясь величиной их токена. Гораздо эффективнее использовать вектора, полученные с помощью
word2vec'а или
TF-IDF etc.
UPD.
На коленке сделал для вас
тетрадку. Подтяните для начала теорию в области машинного обучения в общем, а потом уже беритесь за нейросети. Начать можно вот с
этой замечательной статьи.