如何在大型文本数据中使用HashingVectorizer时获取TF-IDF

时间:2017-03-28 06:40:52

标签: python-2.7 scikit-learn tf-idf

我在python中使用scikit sklearn。当我使用countvectorizerHashingVectorizer中的所有文字数据时,它会报告内存错误。所以我试图通过在线学习大文本数据来TF-IDF使用HashingVectorizer。代码是:

chunk_size = 1000
vectorizer = HashingVectorizer()
transformer = TfidfTransformer()

train_data_text = []
tfidf = None
for i in range(0,df.shape[0]):
    file_word = convert_doc_to_wordlist(str(df.iloc[i,1]), cut_all=False)
    sentencestr = " ".join(word for word in file_word)
    train_data_text.append(sentencestr)

    if (i+1)%chunk_size == 0:
        Wordfrequency = vectorizer.transform(train_data_text)
        tfidfchunk = transformer.fit_transform(Wordfrequency)
        if tfidf == None:
            tfidf = tfidfchunk
        else:
            tfidf = np.vstack((tfidf, tfidfchunk))
        train_data_text =[]

        sys.stdout.flush()
        sys.stdout.write("%.3f" %(float(i)/float(df.shape[0])))
        sys.stdout.write( '  ')

我看到HashingVectorizer有方法partial_fit。我还看到the example如何通过HashingVectorizer从不适合主内存的数据中学习。但我没有看到partial_fit方法而是某些分类器的partial_fit方法。

  1. 如何使用partial_fit的{​​{1}}方法或仅使用HashingVectorizer方法 我的代码使用transform
  2. 我应该何时从TF-IDF计算HashingVectorizer,是 与HashingVectorizer或完成后进行 HashingVectorizer
  3. 是否可以使用在线学习来计算TF-IDF?怎么办? 它?

0 个答案:

没有答案