2015-10-20 55 views
2

我正在使用TextBlob for python對推文進行一些情感分析。 TextBlob中的默認分析器是PatternAnalyzer,它運行良好,速度相當快。TextBlob NaiveBayesAnalyzer非常緩慢(與圖案相比)

sent = TextBlob(tweet.decode('utf-8')).sentiment 

我現在已經嘗試切換到NaiveBayesAnalyzer,發現運行時是不切實際的我的需要。 (接近每鳴叫5秒。)

sent = TextBlob(tweet.decode('utf-8'), analyzer=NaiveBayesAnalyzer()).sentiment 

我已經使用了scikit之前瞭解實施樸素貝葉斯分類,並沒有發現它是這種緩慢的,所以我如果我使用它的權利知道在這種情況下。

我假設分析儀是預訓練的,至少the documentation指出「在電影評論數據集上訓練過的樸素貝葉斯分析器」。但是它也有一個函數train(),它被描述爲「在電影評論語料庫上訓練樸素貝葉斯分類器」。它是否在每次運行前在內部訓練分析儀?我希望不是。

有沒有人知道一種方法來加速?

回答

5

是的,Textblob將在每次運行前訓練分析儀。您可以使用以下代碼避免每次都訓練分析儀。

from textblob import Blobber 
from textblob.sentiments import NaiveBayesAnalyzer 
tb = Blobber(analyzer=NaiveBayesAnalyzer()) 

print tb("sentence you want to test") 
+0

這太好了!我的測試文件的運行時間從5小時縮短到7秒以內! –

+0

@MattM。你認爲哪種分析儀更好?模式庫或nltk的NaiveBayes? –

+0

@ soham.m17我沒有廣泛地比較它們,但我似乎記得(至少對於我的目的)它們表現相當。 –