Almacene la matriz Tf-idf y actualice la matriz existente en nuevos artículos en pandas

Tengo un dataframe de pandas con text columna que consta de news articles de news articles . Dado como:

 text article1 article2 article3 article4 

He calculado los valores Tf-IDF para los artículos como:

 from sklearn.feature_extraction.text import TfidfVectorizer tfidf = TfidfVectorizer() matrix_1 = tfidf.fit_transform(df['text']) 

Como mi dataframe se mantiene actualizado de vez en cuando. Entonces, digamos que después de calcular-si como matriz_1 mi dataframe se actualizó con más artículos. Algo como:

 text article1 article2 article3 article4 article5 article6 article7 

Como tengo millones de artículos y todos, quiero almacenar una matriz tf-IDF del artículo anterior y actualizarlo con las puntuaciones tf-IDF del nuevo artículo. Ejecutar el código of-IDF para todos los artículos, una y otra vez, consumirá memoria. ¿Hay alguna manera de que pueda realizar esto?

    No he probado este código pero siento que esto debería funcionar.

     import numpy as np from sklearn.feature_extraction.text import TfidfVectorizer df = pd.DataFrame() while True: if not len(df): # When you dataframe is populated for the very first time tfidf = TfidfVectorizer() matrix_1 = tfidf.fit_transform(df['text'].iloc[last_len:]) last_len = len(df) else: # When you dataframe is populated again and again # If you have to use earlier fitted model matrix_1 = np.vstack(matrix_1, tfidf.transform(df['text'].iloc[last_len:])) # If you have to update tf-idf every time which is kinda doesn't make sense matrix_1 = np.vstack(matrix_1, tfidf.fit_transform(df['text'].iloc[last_len:])) last_len = len(df) # TO-DO Some break condition according to your case ##### 

    Si la duración entre las actualizaciones del dataframe es mayor de lo que puede usar pickle en matrix_1 para almacenar resultados intermedios.

    Sin embargo, lo que creo que es usar tfidf.fit_transform(df['text']) una y otra vez en diferentes entradas no le dará ningún resultado significativo o puede que no lo entiendan. ¡¡Aclamaciones!!