Хорошо, поэтому я следил за этими двумя сообщениями в 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()