2014-03-05 109 views
1

我想實現一個樸素貝葉斯算法從CSV文件中讀取微博和它們分爲I類定義(例如:科技,科學,政治)Python樸素貝葉斯推文分類分類。方法

我想用NLTK的樸素貝葉斯分類算法,但這個例子並沒有接近我需要做的事情。

我的一個最大的困惑的是我們如何提高NB的分類準確度?

* *我希望能得到我需要拿去做分類的詳細步驟的指導。

  • 我一定要創建單獨的CSV文件爲每個類別在那裏我 手動將鳴叫在那裏?
  • 我如何訓練算法,如果我做了以上以及如何算法測試?**

我一直在網上研究,發現像TextBlob一些簡單的例子,這使得使用中如果NLTK的NB算法做Tweets的情緒分類。它很容易理解,但很難爲初學者調整。

http://stevenloria.com/how-to-build-a-text-classification-system-with-python-and-textblob/

在他的例子從上面的鏈接,他如何實現測試時,他已經把情緒旁邊的鳴叫?我想要測試,我們應該隱藏第二個參數。

train = [ 
    ('I love this sandwich.', 'pos'), 
    ('This is an amazing place!', 'pos'), 
    ('I feel very good about these beers.', 'pos'), 
    ('This is my best work.', 'pos'), 
    ("What an awesome view", 'pos'), 
    ('I do not like this restaurant', 'neg'), 
    ('I am tired of this stuff.', 'neg'), 
    ("I can't deal with this", 'neg'), 
    ('He is my sworn enemy!', 'neg'), 
    ('My boss is horrible.', 'neg') 
] 
test = [ 
    ('The beer was good.', 'pos'), 
    ('I do not enjoy my job', 'neg'), 
    ("I ain't feeling dandy today.", 'neg'), 
    ("I feel amazing!", 'pos'), 
    ('Gary is a friend of mine.', 'pos'), 
    ("I can't believe I'm doing this.", 'neg') 
] 
+0

我可以用另一個回答你的最終問題:如果你沒有提供正確的情緒,你會如何衡量你的測試的成功?測試例程將答案與文本分開,通過分類器運行文本,並將結果與​​答案進行比較。您可以查看NLTK源代碼來查看它。 – alexis

回答

4

你必須瞭解貝葉斯如何工作擺在首位:

enter image description here

換句話說,你必須要找到P(B | A),P(A)和P( B)。在你的情況下,P(A | B)= P(正)。那就是:

  • P(B)=具有非常詞在句子
  • P(A)=正
  • P的概率的概率(B | A)=給出的樂觀情緒,什麼是概率找到B中的話

你必須做的是這樣的:

  • 句子分成詞
  • 刪除「填料」喜歡「」,「和」,「是」,「是」等
  • 每個句子創建這樣的「好」,「壞」,「驚豔」等,這些屬性的列表成爲你的貝葉斯分類器的特徵。
  • 找到的概率B(的特點百分比),使一個「積極」的情緒。

下,給定一個測試一句話:

  1. 將它分成功能,如你的訓練句子一樣。
  2. 查找這些單詞的得分(B)
  3. 計算這些表示「正面」或「負面」情緒的概率(= P(A | B))。

有一點,這些參數手工編織的,在這裏找到更具體的說明,你已經提到你的問題的第二個鏈接:

回答您的具體問題:

在他上面的鏈接的例子中,他是如何在推文旁邊放置情緒的時候執行測試的?我想到 測試,我們應該隱藏第二個參數。

爲了測試你需要知道什麼是正確的結果。否則,你無法告訴算法的性能如何,因爲它總會給你「一些」的答案。這就是爲什麼你必須在你的測試中包含標籤(第二個參數)。