我正在做一個簡單的二進制分類,我給你一個我有問題的例子:可以說我們有n文檔(Doc 1,Doc 2, ...,Doc n。)我們將使用TF-IDF作爲特徵值來訓練一個二進制分類器,使用bag-of-words。我們有m我們的培訓文件的功能(從技術上來說,這是我們在清理和預處理之後在所有這n個文件中具有的唯一令牌的數量)。使用TF-IDF的不同功能數量的測試和培訓組合
現在,讓我們說我們有一個訓練有素的模型,我們要預測一個新文檔的標籤。我們應該首先按照我們培訓文檔的方式預處理測試文檔。然後,我們應該使用TF-IDF爲我們的測試文檔構建一個特徵向量。這裏有兩個問題:
- 對於培訓和測試集,功能數量將不會相同。我已經閱讀了一些解決方案,但是,從科學的角度來看,我不能滿足!
- 對於只有一個測試文檔甚至其中幾個測試文檔計算TF-IDF沒有意義。因爲我們在訓練和測試集中使用的令牌字典不一定相同,即使我們具有相同數量的這兩個特徵,也不一定意味着這些特徵是相同的。
因此,現在我只是想弄清楚我們如何使用我們使用bag-of-words模型和TF-IDF值進行訓練的模型來標記新文檔。特別是,我正在尋找對上述兩個具體問題的合理答案。我們可以計算模型的準確性(例如使用交叉驗證),但我不知道我們應該如何爲標記新文檔做些什麼。
P.S.我正在使用scikit-learn和python。
更新:我可以找到我的問題的答案。在這種情況下,我們可以簡單地使用我們用來訓練分類器的相同的TfidfVectorizer。因此,現在每次我培訓一個新的分類器並使用tfidfVectorizer構建我的特徵向量時,我將我的矢量化器保存在一個文件中,使用pickle,並且在創建測試集特徵向量時使用此矢量化器。
想想你將如何在現實世界的場景中繼續前進,在這種場景中,您已經使用所有可用數據進行了訓練,但仍然會在預測時出現新的文本數據。 –