Подтвердить что ты не робот

TF * IDF для поисковых запросов

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

Ответ 1

Вы определяете train_set и test_set как кортежи, но я думаю, что они должны быть списками:

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

Используя этот код, кажется, что он работает нормально.