[英]What is the standard way in scikit-learn to arrange textual data for text classification?
我有一個NLP任務,基本上是監督文本分類 。 我用它的POS標簽標記了一個語料庫,然后我使用scikit-learn提供的不同的矢量化器來提供scikit-learn提供的一些分類算法。 我還有以前以無人監督的方式獲得的語料庫的標簽(類別)。
首先我對語料庫進行了POS標記,然后我獲得了一些不同的雙字母組合,它們具有以下結構:
bigram = [[('word','word'),...,('word','word')]]
顯然,似乎我有一切可以歸類(我已經准備好用一些小例子進行分類,但不能用所有語料庫進行分類)。
我想使用bigrams作為功能,以便將它們呈現給分類算法(Multinomial naive bayes,SVM等)。
什么可以是標准(pythonic)方式來安排所有文本數據來分類和顯示分類語料庫的結果? 我正在考慮使用arff文件並使用numpy數組,但我想它可能會不必要地使任務復雜化。 另一方面,我正在考慮將數據拆分為火車和測試文件夾,但我沒有想象如何在火車文件夾中設置標簽。
最簡單的選項是load_files
,它需要一個目錄布局
data/
positive/ # class label
1.txt # arbitrary filename
2.txt
...
negative/
1.txt
2.txt
...
...
(這不是一個真正的標准 ,它只是方便和習慣。網上的一些ML數據集以這種格式提供。)
load_files
的輸出是一個包含數據的dict
。
1) larsmans
已經提到了一種安排和存儲數據的便捷方式。 2)當使用scikit時,numpy數組總是讓生活更輕松,因為它們具有許多功能,可以輕松地更改數據的排列。 3)訓練數據和測試數據以相同的方式標記。 所以你通常會有類似的東西:
bigramFeatureVector = [(featureVector0, label), (featureVector1, label),..., (featureVectorN, label)]
培訓數據與測試數據的比例在很大程度上取決於數據的大小。 您應該確實學習n-fold cross validation
。 因為它會解決您的所有疑慮,並且很可能您必須使用它來進行更准確的評估。 簡單地解釋一下,對於進行10倍交叉驗證,我們假設您將擁有一個數組,其中包含所有數據以及標簽(類似於上面的示例)。 然后在循環運行10次,您將留下十分之一的數據用於測試,其余的用於培訓。 如果您了解這一點,那么您就不會對培訓或測試數據的外觀產生任何混淆。 它們看起來應該完全一樣。 4)如何可視化您的分類結果,取決於您想要使用的評估方法。 在你的問題中不清楚,但如果你有其他問題,請告訴我。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.