Я пытаюсь быстро закодировать какой-нибудь текст, посимвольно. Сначала я сопоставил текст с целочисленными значениями.
with open('data/texts/anna.txt') as data:
text = data.read()
vocab = tuple(set(text))
int2char = dict(enumerate(vocab))
char2int = {i: char for char, i in int2char.items()}
encoded = np.array([char2int[i] for i in text]).reshape(1, -1)
categories = np.array([char2int[i] for i in vocab])
# encoder = OneHotEncoder(categories)
encoder = OneHotEncoder()
encoder.fit(encoded)
test = encoder.transform(encoded[:10])
Две вещи:
- Эта операция невероятно медленная как для подгонки, так и для преобразования, поэтому я должен что-то делать неправильно.
- Результат теста - (1, 1985223) ndarray всех единиц. Я ожидал, что будут закодированы только 10 значений, которые я ему передал. Опять же, я делаю что-то не так.
Может, мне стоит рассматривать свой текст как образцы 1985223, а не как функции? Редактировать: Кажется, это так. Теперь мне просто интересно, какая интуиция стоит за этим.
Любая помощь приветствуется!