1

我正在尝试实现朴素贝叶斯算法以从 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')
]
4

1 回答 1

4

你必须首先了解贝叶斯是如何工作的:

在此处输入图像描述

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

  • P(B) = 句子中出现这些单词的概率
  • P(A) = 阳性概率
  • P(B | A) = 给定积极情绪,在 B 中找到单词的概率是多少

你需要做的是:

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

接下来,给定一个测试语句:

  1. 将其拆分为特征,就像您对训练句子所做的那样。
  2. 求这些词的分数(B)
  3. 计算这些表示“正面”或“负面”情绪的概率 (=P(A|B))。

这些论点中有一些手工编织,请在此处找到更具体的说明,您已经在问题中提到了第二个链接:

要回答您的具体问题:

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

为了测试,您需要知道正确的结果是什么。否则你无法判断算法的性能有多好,因为它总是会给你“一些”答案。这就是为什么您必须在测试中包含标签(第二个参数)。

于 2014-11-15T18:11:01.917 回答