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 HashingVectorizer
não leva em consideração as IDF
pontuações como um TfidfVectorizer
faz. 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 TfidfVectorizer
també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 HashingVectorizer
e a TfidfVectorizer
, e a razão pela qual essas matrizes têm tamanhos diferentes - particularmente no número de palavras / termos.