Данное задание взято из Coursera -> Python -> Andwanced week 4 и решено мною в ходе проф деятельности по решению подобных задач. На сайте реализована автоматическая проверка данного задания эта программа его проходит на 100%.
Программа из строк / массивов строк формирует словарь токенов, а затем вектора.
Для чего это необходимо? Программа подготавливает строки для обучения нейросетей.
Пример.
Дан массив строк
corpus = [
'AABBOOHHBB',
'HOPPAAABTA',
'HPTAABBNNK'
]
Создаем копию класса CountVectorizer (в коде программы это есть). Входные данные ngram size (в этом примере число 2. это означает что токены будем разбивать по 2 символа)
Далее формируется список токенов.
для первой строки - AA AB BB BO OO OH HH HB BB
для остальных по аналогии.
Далее удаляются все повторы из списка, список сортируется в лексикографическом порядке (по алфавиту).
Из списка формируется словарь где токен - ключ, а значение порядковый номер.
{'AA': 0, 'AB': 1, 'BB': 2, 'BN': 3, 'BO': 4, 'BT': 5, 'HB': 6, 'HH': 7, 'HO': 8, 'HP': 9, 'NK': 10, 'NN': 11, 'OH': 12, 'OO': 13, 'OP': 14, 'PA': 15, 'PP': 16, 'PT': 17, 'TA': 18} - словарь.
Конечный итог работы программы список векторов строк.
[
[1, 1, 2, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0],
[2, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1],
[1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1]
]