我在数据集中有大约100,000个文档的集合,其中包含唯一的doc_id和包含文本的四列(如下所示) .

original dataset

我想分别对四个文本列中的每一个进行矢量化,然后将所有这些特征组合在一起以创建一个大型数据集,以便构建预测模型 . 我使用如下代码来处理每个文本功能的矢量化:

stopwords = nltk.corpus.stopwords.words("english")

subject_transformer = CountVectorizer(stop_words=stopwords)
subject_vectorized = subject_transformer.fit_transform(full_docs['subject'])

body_transformer = CountVectorizer(stop_words=stopwords)
body_vectorized = body_transformer.fit_transform(full_docs['body'])

excerpt_transformer = CountVectorizer(stop_words=stopwords)
excerpt_vectorized = excerpt_transformer.fit_transform(full_docs['excerpt'])

regex_transformer = CountVectorizer(stop_words=stopwords)
regex_vectorized = regex_transformer.fit_transform(full_docs['regex'])

每个矢量化产生如下的稀疏矩阵,其中 column one 是文档编号, column two 是列编号(原始文本列中每个字一个), last column 是实际计数 .

sparse matrix

我想做的是以下内容:

  • 将每个稀疏矩阵转置为维度为nxp的完整数据帧,其中n =文档数量&p =该语料库中的单词数量

  • 将这些矩阵/数据帧中的每一个合并在一起,以构建预测模型

我最初尝试了以下内容:

regex_vectorized_df = pd.DataFrame(regex_vectorized.toarray())

然后我可以将四个单独的数据帧合并在一起 . 这不起作用,因为toarray()太占用内存 . 将这四个稀疏矩阵合并为一个数据集的最佳方法是什么,每个文档有一个唯一的行?