簡體   English   中英

scikit的標准方法是什么 - 學習安排文本數據進行文本分類?

[英]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數組,但我想它可能會不必要地使任務復雜化。 另一方面,我正在考慮將數據拆分為火車和測試文件夾,但我沒有想象如何在火車文件夾中設置標簽。

你的問題非常模糊。 您可以訪問有關該主題的書籍和課程。 看看這個博客的開始1和這些課程23

最簡單的選項是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.

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