Добре, следя тези две публикации в TF*IDF, но съм малко объркан: http://css.dzone.com/articles/machine-learning-text-feature
По принцип искам да създам заявка за търсене, която съдържа търсения в множество документи. Бих искал да използвам инструментариума scikit-learn, както и библиотеката NLTK за Python
Проблемът е, че не виждам откъде идват двата TF*IDF вектора. Имам нужда от една заявка за търсене и множество документи за търсене. Реших, че изчислявам TF*IDF резултатите на всеки документ спрямо всяка заявка и намирам косинусното сходство между тях и след това ги класирам, като сортирам резултатите в низходящ ред. Обаче кодът изглежда не предлага правилните вектори.
Всеки път, когато намаля заявката само до едно търсене, тя връща огромен списък от 0, което е наистина странно.
Ето кода:
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()