 <p>A few important differences:</p> <ul> <li>partially <strong>reversible</strong> (<code>CountVectorizer</code>) <strong>vs irreversible</strong> (<code>HashingTF</code>) - since hashing is not reversible you cannot restore original input from a hash vector. From the other hand count vector with model (index) can be used to restore unordered input. As a consequence models created using hashed input can be much harder to interpret and monitor.</li> <li><strong>memory and computational overhead</strong> - <code>HashingTF</code> requires only a single data scan and no additional memory beyond original input and vector. <code>CountVectorizer</code> requires additional scan over the data to build a model and additional memory to store vocabulary (index). In case of unigram language model it is usually not a problem but in case of higher n-grams it can be prohibitively expensive or not feasible.</li> <li>hashing <strong>depends on</strong> a size of the vector , hashing function and a document. Counting depends on a size of the vector, training corpus and a document. </li> <li><strong>a source of the information loss</strong> - in case of <code>HashingTF</code> it is dimensionality reduction with possible collisions. <code>CountVectorizer</code> discards infrequent tokens. How it affects downstream models depends on a particular use case and data.</li> </ul>