Конечно, вы можете делать это в игрушечных задачах и только в образовательных целях, но это совершенно нецелесообразно и крайне не рекомендуется для реальных.
Причина в том, что такие матрицы терминов документа разрежены (т.е. большинство их записей на самом деле равны 0), и эта разреженность используется для их эффективного хранения в соответствующих структурах данных. Преобразование их в не разреженные структуры (например, pandas фреймы данных), скорее всего, переполнит память вашей машины; цитирование из соответствующего scikit-learn docs :
Поскольку в большинстве документов обычно используется очень небольшое подмножество слов, используемых в корпусе, результирующая матрица будет иметь много значений признаков это нули (как правило, более 99% из них).
Например, коллекция из 10 000 коротких текстовых документов (например, электронных писем) будет использовать словарь размером порядка 100 000 уникальных слов, в то время как каждый документ будет использовать от 100 до 1000 уникальных слов по отдельности.
Чтобы иметь возможность хранить такую матрицу в памяти, а также ускорить алгебраические операции c матрица / вектор операций, реализации обычно используют разреженное представление. такие как реализации, доступные в пакете scipy.sparse
.
Тем не менее, вы можете сделать это в образовательных целях; вот как, адаптируя пример в TfidfVectorizer
документах :
from sklearn.feature_extraction.text import TfidfVectorizer
import pandas as pd
corpus = [
... 'This is the first document.',
... 'This document is the second document.',
... 'And this is the third one.',
... 'Is this the first document?',
... ]
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(corpus)
df = pd.DataFrame.sparse.from_spmatrix(X, columns = vectorizer.get_feature_names())
df
# result:
and document first is one second the third this
0 0.000000 0.469791 0.580286 0.384085 0.000000 0.000000 0.384085 0.000000 0.384085
1 0.000000 0.687624 0.000000 0.281089 0.000000 0.538648 0.281089 0.000000 0.281089
2 0.511849 0.000000 0.000000 0.267104 0.511849 0.000000 0.267104 0.511849 0.267104
3 0.000000 0.469791 0.580286 0.384085 0.000000 0.000000 0.384085 0.000000 0.384085