Okay, so habe ich die folgenden zwei Beiträge auf IDF TF * bin aber wenig verwirrt: http://css.dzone.com/articles/machine-learning-text-featureTF * IDF für Suchanfragen
Grundsätzlich möchte ich eine Suchabfrage erstellen, die Suche durch mehrere Dokumente enthält. Ich würde gerne das Scikit-lernen-Toolkit sowie die NLTK-Bibliothek für Python verwenden
Das Problem ist, dass ich nicht sehe, wo die beiden TF * IDF-Vektoren herkommen. Ich brauche eine Suchanfrage und mehrere Dokumente zu suchen. Ich dachte mir, dass ich die TF * IDF-Scores jedes Dokuments für jede Abfrage berechnen und die Kosinusähnlichkeit zwischen ihnen ermitteln und sie dann ordnen werde, indem ich die Scores in absteigender Reihenfolge sortiere. Der Code scheint jedoch nicht mit den richtigen Vektoren zu kommen.
Immer wenn ich die Abfrage auf nur eine Suche reduziere, gibt es eine riesige Liste von Nullen zurück, die wirklich seltsam ist. Hier
ist der 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()
Ich frage mich, ob Sie den Kosinus mit der endgültigen Matrix berechnet haben, die Sie von print tfidf.todense() bekommen, wenn ja, wie machen Sie das? –
Hey eine Sekunde ... Ill post ein Beispiel bald. – tabchas
Danke das wäre fantastisch. Würdest du hier einen Link setzen? Das ist sogar noch besser. –