Мне нужно получить матрицу функций TF-IDF из текста, хранящегося в столбцах огромного dataframe, загруженный из файла CSV (который не помещается в памяти). Я пытаюсь перебрать фрейм данных, используя куски, но он возвращает объекты генератора, которые не являются ожидаемым типом переменной для метода TfidfVectorizer. Думаю, я делаю что-то не так при написании метода генератора ChunkIterator
, показанного ниже.
import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer
#Will work only for small Dataset
csvfilename = 'data_elements.csv'
df = pd.read_csv(csvfilename)
vectorizer = TfidfVectorizer()
corpus = df['text_column'].values
vectorizer.fit_transform(corpus)
print(vectorizer.get_feature_names())
#Trying to use a generator to parse over a huge dataframe
def ChunkIterator(filename):
for chunk in pd.read_csv(csvfilename, chunksize=1):
yield chunk['text_column'].values
corpus = ChunkIterator(csvfilename)
vectorizer.fit_transform(corpus)
print(vectorizer.get_feature_names())
Кто-нибудь может посоветовать, как изменить метод ChunkIterator
, указанный выше, или любой другой подход, используя фрейм данных. Я бы не хотел создавать отдельные текстовые файлы для каждой строки в фрейм данных. Ниже приведены некоторые фиктивные данные файла CSV для воссоздания сценария.
id,text_column,tags
001, This is the first document .,['sports','entertainment']
002, This document is the second document .,"['politics', 'asia']"
003, And this is the third one .,['europe','nato']
004, Is this the first document ?,"['sports', 'soccer']"