#python #scikit-learn #scipy #tf-idf #tfidfvectorizer
Вопрос:
Как я могу рассчитать баллы TF-IDF корпуса, а затем использовать эти баллы для расчета TF-DF в новом документе без необходимости пересчета исходного корпуса? В идеале я также хотел бы сохранить исходные результаты корпуса, чтобы я мог рассчитать баллы tf-idf в новом документе в любое время, когда захочу.
Что следует отметить:
- Я забочусь только о том, чтобы получить оценки TF-IDF для токенов в «новом документе», однако мне все еще требуются оценки IDF для всего корпуса, включая новый документ
- Я использую результаты для удаления чрезмерно общих слов из каждого «нового документа» для другой задачи
Я читал, что вы, возможно, можете «подогнать» словарь, а затем «подогнать» новый документ, например:
corpus = ['my_file.txt', 'my_file_2.txt', 'my_file_3.txt']
vectorizer = TfidfVectorizer(input='filename')
vectorizer.fit(corpus)
pickle.dump(vectorizer.vocabulary_, open("feature.pkl", "wb"))
Затем, позже, когда я захочу рассчитать оценки нового документа, я смогу:
loaded_vec = TfidfVectorizer(vocabulary=pickle.load(open("feature.pkl", "rb")))
matrix = loaded_vec.fit_transform('my_new_doc.txt')
Однако это дает разные результаты, когда я вычисляю все документы вместе за один раз, но также отличается от того, когда я вычисляю новый документ самостоятельно.
Я думаю, что в идеале я хотел бы, чтобы результаты «новых документов» были такими, как если бы они были рассчитаны вместе с остальной частью корпуса.
Возможно ли это?