如何在熊猫数据帧上迭代TfidfVectorizer()

时间:2018-07-18 05:32:06

标签: python-3.x pandas scikit-learn nlp tfidfvectorizer

我有一个大熊猫数据框,其中包含1000万条新闻报道。因此,这就是我申请TfidfVectorizer的方式。

from sklearn.feature_extraction.text import TfidfVectorizer
tfidf = TfidfVectorizer()
feature_matrix = tfidf.fit_transform(df['articles'])

处理所有文档花费了很多时间。我只想一次遍历数据帧中的每篇文章,还是有可能我可以分批传递文档,并且它可以不断更新现有词汇,而不会覆盖旧的词汇词典?

我已经看过这个post了,但是还没有完全了解如何将其应用于熊猫。我也听说过Python generators,但在此是否有用。

1 个答案:

答案 0 :(得分:0)

您可以按以下方式分块进行迭代。该解决方案改编自here

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)