Python朴素贝叶斯将推文分类为类别。方法

时间:2014-03-05 23:33:51

标签: python machine-learning nltk bayesian textblob

我正在尝试实施Naive Bayes算法来读取csv文件中的推文,并将它们分类为我定义的类别(例如:技术,科学,政治)

我想使用NLTK的朴素贝叶斯分类算法,但这个例子并不接近我需要做的事情。

我最大的困惑之一是如何提高NB的分类准确度?

* *我希望获得一些有关我需要采取的详细步骤的指导。

  • 我必须为每个类别创建单独的csv文件 手动把推文放在那里?
  • 如果我执行上述操作,如何训练算法以及算法如何测试?**

我一直在网上研究并找到一些简短的例子,如TextBlob,如果使用NLTK的NB算法来做推文的情感分类。它很容易理解,但很难为初学者调整。

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')
]

1 个答案:

答案 0 :(得分:4)

你必须首先了解贝叶斯的工作原理:

enter image description here

换句话说,你必须找到P(B | A),P(A)和P(B)。在你的情况下,P(A | B)= P(正|句子)。那就是:

  • P(B)=句子中有单词的概率
  • P(A)=正面概率
  • P(B | A)=给出正面情绪,在B中找到单词的概率是多少

你需要做的是:

  • 将句子分成单词
  • 删除“填充物”,例如“the”,“and”,“is”,“was”等。
  • 为每个句子创建一个属性列表,如“好”,“坏”,“惊人”等。这些属性成为贝叶斯分类器的特征。
  • 找出构成“积极”情绪的概率B(特征百分比)。

接下来,给出一个测试句:

  1. 将其拆分为与训练句子一样的功能。
  2. 找到这些单词的分数(B)
  3. 计算表示“正面”或“负面”情绪的概率(= P(A | B))。
  4. 在这些参数中有一些手工编织,在这里找到更具体的说明,你已经提到了你问题中的第二个链接:

    回答您的具体问题:

      

    在他上面的链接示例中,当他已将情绪放在推文旁边时,他如何实施测试?我想过   测试时,我们应该隐藏第二个参数。

    为了测试你需要知道正确的结果是什么。否则你无法分辨算法的执行情况,因为它总会给你“一些”答案。这就是为什么你必须在测试中包含标签(第二个参数)。