2016-11-23 69 views
0

我有一大批標註爲posneg的文字,用於對文本進行分類。我使用TextBlob(根據this tutorial)對文本進行分類。雖然它運行得很好,但對於大型訓練集(例如8k字)可能非常緩慢。scikit-learn:使用自定義標籤對文本進行分類

我想嘗試使用scikit-learn這樣做,但我不確定從哪裏開始。上述教程在scikit-learn中看起來如何?我也希望訓練集包含某些單詞的權重。有些應該保證特定文本被歸類爲「正面」,而另一些則保證歸類爲「負面」。最後,有沒有辦法暗示分析文本的某些部分比其他部分更有價值?

任何指向現有教程或文檔的指針讚賞!

回答

1

Sebastian Raschka's Python Machine Learning book中有關於此主題的精彩篇章,代碼可以在這裏找到:https://github.com/rasbt/python-machine-learning-book/blob/master/code/ch08/ch08.ipynb

他對IMDB數據集進行情感分析(您正在嘗試做什麼)。他的數據不像你的數據那麼幹淨 - 從外觀上看 - 所以他需要做更多的預處理工作。您的問題可以通過以下步驟來解決:

  1. 通過矢量化文本創建數字功能:http://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.HashingVectorizer.html

  2. 列車試驗分裂:http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html

  3. 訓練和測試你最喜愛的模型,如:http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html

+0

好資源,謝謝;我確實需要購買那本書!一個問題:如果我的訓練集字面上只是用布爾值標記的單個單詞(每個表示都無關緊要),是否仍可以構建一個用於多語句文本的分類器?我認爲這些模型的工作原理是分析整個文本,創建概率表,然後對輸入文本應用集合啓發式。 – mart1n

+0

哈希矢量化器使用TF-IDF爲單詞分配數值。 TF部分將只關心每個樣本 - 因此每個樣本的值都是1。 IDF部分將每個樣本與所有樣本進行比較,這就是您的數字特徵將如何創建。既然你會試圖從一個單一的數字特徵預測情緒,你可以覆蓋直方圖(由情感着色),並看到它在訓練任何模型之前將如何工作。 – AlexG

0

有很多方法可以做到這一點,如Tf-Idf (術語頻率 - 反向文檔頻率),向量計數器,潛在語義分析(LSA),潛在狄利克雷分配(LDA),Word2Vec。

在上述所有方法中,Word2Vec是最好的方法。您可以通過谷歌爲Word2Vec使用預訓練模型,可以用:

相關問題