Python 3.x 如何在数据帧上迭代TfidfVectorizer()

Python 3.x 如何在数据帧上迭代TfidfVectorizer(),python-3.x,pandas,scikit-learn,nlp,tfidfvectorizer,Python 3.x,Pandas,Scikit Learn,Nlp,Tfidfvectorizer,我有一个大熊猫数据框,有1000万条新闻记录。因此,这就是我如何应用tfidfvectorier from sklearn.feature_extraction.text import TfidfVectorizer tfidf = TfidfVectorizer() feature_matrix = tfidf.fit_transform(df['articles']) 处理所有文件花了很多时间。我只想在dataframe中一次迭代一篇文章,还是我可以分块传递文档,并且它可以在不覆盖旧词汇词

我有一个大熊猫数据框,有1000万条新闻记录。因此,这就是我如何应用
tfidfvectorier

from sklearn.feature_extraction.text import TfidfVectorizer
tfidf = TfidfVectorizer()
feature_matrix = tfidf.fit_transform(df['articles'])
处理所有文件花了很多时间。我只想在dataframe中一次迭代一篇文章,还是我可以分块传递文档,并且它可以在不覆盖旧词汇词典的情况下不断更新现有词汇表


我已经经历了这一过程,但并不完全了解如何将其应用到熊猫身上。我也听说过
Python生成器
,但不知道它在这里是否有用。

您可以按如下所示进行分块迭代。解决方案已从


这就是TFIDF矢量器所做的。它一次迭代一个文档并更新词汇表。你还想做什么。请详细解释。@VivekKumar谢谢你的评论。我只想减少使用TfidfVectorizer处理文档的迭代时间。我现在所做的好像是在一次处理所有df['article']时,花费更多的时间来计算结果矩阵,我希望它一个接一个地完成。通过
或使用iterable生成器在pandas中一次传递一个文档,在大型数据集上执行Tfidf是否有更专业的方法?希望你得到了我上面说的,它不是一次处理所有的。在内部,它迭代您传递的序列并逐个处理,以填充词汇表和计数矩阵。然后它处理计数矩阵以准备tfidf矩阵。@VivekKumar那么,对于
df['articles']
,计算tfidf的另一种方法是什么呢?对于1000万条记录来说,哪种方法更方便?是的,您可以加快速度。请看这里:我使用的代码与上面(您)给出的代码相同,但为什么在fit_转换过程中仍然消耗了太多内存?我再次耗尽了内存。任何想法都不确定,您可能可以参考网站上的评论。有人在那里也出现了内存错误
def ChunkIterator():
    for chunk in pd.read_csv(csvfilename, chunksize=1000):
      for doc in  chunk['articles'].values:
             yield doc

corpus  = ChunkIterator()
tfidf = TfidfVectorizer()
feature_matrix = tfidf.fit_transform(corpus)