Utilisation de la transformation TfidfVectorizer de Sklearn
J'essaie d'obtenir le vecteur TF-idf pour un seul document en utilisant L'objet TfidfVectorizer de Sklearn. Je crée un vocabulaire basé sur certains documents de formation et utilise fit_transform pour former le TfidfVectorizer. Ensuite, je veux trouver les vecteurs TF-idf pour n'importe quel document de test donné.
from sklearn.feature_extraction.text import TfidfVectorizer
self.vocabulary = "a list of words I want to look for in the documents".split()
self.vect = TfidfVectorizer(sublinear_tf=True, max_df=0.5, analyzer='word',
stop_words='english')
self.vect.fit_transform(self.vocabulary)
...
doc = "some string I want to get tf-idf vector for"
tfidf = self.vect.transform(doc)
Le problème est que cela renvoie une matrice avec n Lignes où n est la taille de ma chaîne doc. Je veux qu'il retourne juste un seul vecteur représentant le TF-idf pour la chaîne entière. Comment puis-je faire voir la chaîne comme un seul document, plutôt que chaque caractère étant un document? En outre, je suis très nouveau dans l'exploration de texte, donc si je fais quelque chose de mal conceptuellement, ce serait génial de savoir. Toute aide est appréciée.
1 réponses
Si vous voulez calculer la tf-idf uniquement pour un vocabulaire, utiliser vocabulary
argument TfidfVectorizer
constructeur,
vocabulary = "a list of words I want to look for in the documents".split()
vect = TfidfVectorizer(sublinear_tf=True, max_df=0.5, analyzer='word',
stop_words='english', vocabulary=vocabulary)
Ensuite, pour ajuster, c'est-à-dire calculer les comptes, avec un corpus
donné, c'est-à-dire un itérable de documents, utilisez fit
:
vect.fit(corpus)
Méthode fit_transform
est un raccourcissement de
vect.fit(corpus)
corpus_tf_idf = vect.transform(corpus)
Enfin, la méthode transform
accepte un corpus, donc pour un seul document, vous devez le passer en tant que liste, ou il est traité comme itérable de symboles, chaque symbole étant un document.
doc_tfidf = vect.transform([doc])