Estou convertendo um corpus de documentos de texto em vetores de palavras para cada documento. Eu tentei isso usando um TfidfVectorizer e um HashingVectorizer
Entendo que um HashingVectorizernão leva em consideração as IDFpontuações como um TfidfVectorizerfaz. A razão pela qual ainda estou trabalhando com a HashingVectorizeré a flexibilidade que ela oferece ao lidar com grandes conjuntos de dados, conforme explicado aqui e aqui . (Meu conjunto de dados original possui 30 milhões de documentos)
Atualmente, estou trabalhando com uma amostra de 45339 documentos, portanto, tenho a capacidade de trabalhar com uma TfidfVectorizertambém. Quando uso esses dois vetorizadores nos mesmos documentos 45339, as matrizes que recebo são diferentes.
hashing = HashingVectorizer() with LSM('corpus.db')) as corpus: hashing_matrix = hashing.fit_transform(corpus) print(hashing_matrix.shape)forma da matriz de hash (45339, 1048576)
tfidf = TfidfVectorizer() with LSM('corpus.db')) as corpus: tfidf_matrix = tfidf.fit_transform(corpus) print(tfidf_matrix.shape)forma da matriz tfidf (45339, 663307)
Quero entender melhor as diferenças entre a HashingVectorizere a TfidfVectorizer, e a razão pela qual essas matrizes têm tamanhos diferentes - particularmente no número de palavras / termos.