TF * IDF pour les requêtes de recherche

Ok, donc j'ai suivi ces deux messages sur TF * IDF mais je suis un peu confus: http://css.dzone.com/articles/machine-learning-text-feature

fondamentalement, je veux créer une requête de recherche qui contient des recherches à travers plusieurs documents. Je voudrais utiliser la boîte à outils scikit-learn ainsi que la bibliothèque NLTK pour Python

le problème est que je ne vois pas d'où viennent les deux vecteurs TF*IDF. J'ai besoin d'une recherche interrogation et documents multiples à rechercher. J'ai pensé que je calcule les scores TF * IDF de chaque document par rapport à chaque requête et trouve la similitude cosinus entre eux, et puis les classer en triant les scores dans l'ordre décroissant. Cependant, le code ne semble pas trouver les bons vecteurs.

chaque fois que je réduis la requête à une seule recherche, il retourne une énorme liste de 0 qui est vraiment étrange.

voici le code:

from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfTransformer
from nltk.corpus import stopwords

train_set = ("The sky is blue.", "The sun is bright.") #Documents
test_set = ("The sun in the sky is bright.") #Query
stopWords = stopwords.words('english')

vectorizer = CountVectorizer(stop_words = stopWords)
transformer = TfidfTransformer()

trainVectorizerArray = vectorizer.fit_transform(train_set).toarray()
testVectorizerArray = vectorizer.transform(test_set).toarray()
print 'Fit Vectorizer to train set', trainVectorizerArray
print 'Transform Vectorizer to test set', testVectorizerArray

transformer.fit(trainVectorizerArray)
print transformer.transform(trainVectorizerArray).toarray()

transformer.fit(testVectorizerArray)

tfidf = transformer.transform(testVectorizerArray)
print tfidf.todense()
13
demandé sur tabchas 2012-08-11 06:44:49

1 réponses

vous définissez train_set et test_set comme des tuples, mais je pense qu'ils devraient être des listes:

train_set = ["The sky is blue.", "The sun is bright."] #Documents
test_set = ["The sun in the sky is bright."] #Query

le code semble fonctionner correctement.

13
répondu Sicco 2013-02-15 12:25:35