Erro de memória ao tentar aplicar 'fit_transform ()' no TFidfVectorizer contendo a coluna Pandas Dataframe (contendo cadeias)

Estou tentando uma operação semelhante, como mostradoaqui. Começo com a leitura em duas colunas de um arquivo CSV que contém 2405 linhas no formato de: Ano p. "1995" E limpo p. ["this", "is," exemplar "," document "," contents "], ambas as colunas utilizam cadeias como tipos de dados.

    df = pandas.read_csv("ukgovClean.csv", encoding='utf-8', usecols=[0,2])

Eu já limpei os dados previamente e mostra abaixo o formato das quatro linhas principais:

     [IN] df.head()

    [OUT]   Year    cleaned
         0  1909    acquaint hous receiv follow letter clerk crown...
         1  1909    ask secretari state war whether issu statement...
         2  1909    i beg present petit sign upward motor car driv...
         3  1909    i desir ask secretari state war second lieuten...
         4  1909    ask secretari state war whether would introduc...

    [IN] df['cleaned'].head()

   [OUT] 0    acquaint hous receiv follow letter clerk crown...
         1    ask secretari state war whether issu statement...
         2    i beg present petit sign upward motor car driv...
         3    i desir ask secretari state war second lieuten...
         4    ask secretari state war whether would introduc...
         Name: cleaned, dtype: object

Então eu inicializo o TfidfVectorizer:

    [IN] v = TfidfVectorizer(decode_error='replace', encoding='utf-8')

Depois disso, chamar a linha abaixo resulta em:

    [IN] x = v.fit_transform(df['cleaned'])
   [OUT] ValueError: np.nan is an invalid document, expected byte or unicode string.

Eu superei isso usando a solução acima mencionadafio:

    [IN] x = v.fit_transform(df['cleaned'].values.astype('U'))

no entanto, isso resultou em um erro de memória (Traceback completo)

Tentei procurar armazenamento usando Pickle para burlar o uso de memória em massa, mas não sei como filtrá-lo nesse cenário. Qualquer dica seria muito apreciada, e obrigado pela leitura.

[ATUALIZAR]

@ pittsburgh137 publicou uma solução para um problema semelhante envolvendo dados de ajusteaqui, em que os dados de treinamento são gerados usandopandas.get_dummies (). O que eu fiz com isso é:

    [IN] train_X = pandas.get_dummies(df['cleaned'])
    [IN] train_X.shape
   [OUT] (2405, 2380)

    [IN] x = v.fit_transform(train_X)
    [IN] type(x)
   [OUT] scipy.sparse.csr.csr_matrix

Eu pensei que deveria atualizar qualquer leitor enquanto vejo o que posso fazer com esse desenvolvimento. Se houver alguma armadilha prevista com esse método, eu adoraria ouvi-las.

questionAnswers(1)

yourAnswerToTheQuestion