Это две совершенно разные вещи. Keras и его индексы и вложения предназначены для глубокого изучения, scikit-learn и CountVectorizer
происходят из классического машинного обучения.
В Keras (или в основах глубокого обучения в целом) слова обычно представлены целым числоминдексы. Индексы тогда служат ключами в матрице внедрения, чтобы подобрать соответствующее вложение слова, которое будет использоваться в нейронной сети. В этом случае все векторы плотны, потому что нейронные сети работают с плотными непрерывными представлениями.
CountVectorizer
в scikit-learn предназначен для представления предложений или документов (не совсем изолированных слов). Учитывая учебный корпус, он создает словарь слов, встречающихся в корпусе (с использованием метода fit
). Затем предложение или документ представляется в виде вектора частот слов, которые в нем встречаются (при вызове метода transform
). Поскольку большая часть словарного запаса отсутствует в одном документе, многие значения являются нулями и, следовательно, имеет смысл использовать разреженный вектор.
Такое представление в основном имеет смысл для традиционного машинного обучения. При глубоком обучении вы вместо этого использовали бы вложения, усредняли их, а RNN / CNN над ними или что-то еще.