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.