簡體   English   中英

如何使用TfIdfVectorizer使用SciKitLearn對文檔進行分類?

[英]How do I classify documents with SciKitLearn using TfIdfVectorizer?

以下示例顯示了如何使用Sklearn 20新聞組數據訓練分類器。

>>> from sklearn.feature_extraction.text import TfidfVectorizer 
>>> categories = ['alt.atheism', 'talk.religion.misc', 'comp.graphics', 'sci.space']
>>> newsgroups_train = fetch_20newsgroups(subset='train', ... categories=categories) 
>>> vectorizer = TfidfVectorizer() >>> vectors = vectorizer.fit_transform(newsgroups_train.data) 
>>> vectors.shape (2034, 34118)

但是,我有自己標記的語料庫,我想使用它。

獲得我自己的數據的tfidfvector后,我會訓練這樣的分類器嗎?

classif_nb = nltk.NaiveBayesClassifier.train(vectorizer)

回顧一下:我如何使用自己的語料庫而不是20個新組,但這里使用的方法相同? 那么如何使用我的TFIDFVectorized語料庫來訓練分類器呢?

謝謝!

解決評論中的問題; 在一些分類任務中使用tfidf表示的整個基本過程你應該:

  1. 您將矢量化器擬合到訓練數據並將其保存在某個變量中,我們稱之為tfidf
  2. 您通過data = tfidf.transform(...) 轉換訓練數據(沒有標簽,只是文本)
  3. 您使用some_classifier.fit(數據,標簽)來擬合模型(分類器),其中標簽與數據中的文檔順序相同
  4. 在測試期間,您對新數據使用tfidf.transform(...),並檢查模型的預測

一般來說,對於sklearn,流程是:

  1. 使用某些矢量化器將您的字符串數據轉換為數值,例如TfIDF,count等
  2. 適應和變換
  3. 將它傳遞給您選擇的分類器。

您沒有提到您的數據格式,但如果它是包含某些行的csv文件,則流程可能是:

  1. 閱讀每一行文字
  2. 預處理,如刪除停用詞等。
  3. raw_data_list = [row1,row2,rown ...]
  4. vectorizer = TfidfVectorizer()
  5. x_transformed = vectorizer.fit_transform(raw_data_list)
  6. 可以傳遞x_transformed以適合/訓練分類器的功能。

一旦你訓練了分類器,就可以調用預測新數據。 記得在將新數據傳遞給classif.predict之前,使用上面使用過的和適合的矢量化器將新數據轉換為與您訓練過的數據相同的格式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM