У меня есть корпус из 5000 названий книг, и я пытаюсь выполнить их кластеризацию. Я использую библиотеку sklearn TfidfVectorizer для генерации матрицы TF-IDF для каждого заголовка.
Однако теперь я объединяю два из названий (поэтому «Книга А» и «Книга Б» становится «Книгой А Книга Б»), и мне интересно, есть ли способ получить матрицу TF-IDF для «Книги» «Книга B» путем объединения матрицы для «Книги A» и матрицы для «Книги B».
Я снова попытался пересчитать счет TF-IDF, но это может занять много времени, и я бы предпочел, чтобы был более быстрый способ сделать это, поскольку мне действительно нужно делать это несколько тысяч раз для разных комбинаций названий. .
Код ниже показывает, что я делаю сейчас.
import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
tf = TfidfVectorizer(analyzer='word', ngram_range=(1, 3), min_df=0, stop_words='english')
titles = list_of_strings
tfidf_matrix = tf.fit_transform(titles)
# This gives a matrix roughly (5000, 20000)
new_title = titles[0] + ' ' + titles[1]
# Get the tfidf_matrix for the new_title
Было бы здорово, если бы было что-то вроде:
matrix_for_book_a + matrix_for_book_b
и это дало матрицу для "Книги А, Книги Б", но я не уверен, возможно ли это.
Спасибо за любую помощь или предложения.