朴素贝叶斯分类器的意见和文本挖掘

基于朴素贝叶斯分类器的意见和文本挖掘的最佳实践。
本文将对计算事项进行详细、分步详细的解释和描述。

情绪分析

人们倾向于想知道其他人如何看待他们和他们的业务,无论是什么,无论是汽车、餐厅等产品还是服务。如果您知道客户对您的看法,那么您可以保持或改进甚至改变您的策略以提高客户满意度。可以通过收集他们发送给您的电子邮件,并使用一些方法根据他们使用的词语对他们的意见进行分类。此外,它在工业和科学研究中还有其他应用。

  1. 它重新启动营销。
  2. 办公室里的分类文件。
  3. 为客户或您的公司制作推荐列表。

在下图中,在训练集上,有关于特定句子的样本,并根据其内容为它们分配正号或负号。然后我们在右边的部分有测试数据,它的阳性或阴性对我们来说是模棱两可的,应该通过一些方法来计算,比如朴素贝叶斯分类器。

科学研究中的文本挖掘

曼彻斯特大学的一个项目分析 15,000 只小鼠研究,没有它们的性别和年龄,这对研究结果和产出有不良影响。但借助文本挖掘工具和扫描文档,现在可以根据基于小鼠性别和年龄的新信息填补这一空白并改进研究。[*]

意见挖掘

不同的人对一个主题有不同的反应,您可以衡量有多少人同意特定主题以及有多少人同意。自然语言处理解决方案是可能的。但是朴素贝叶斯分类器还有另一种方法。

朴素贝叶斯

朴素贝叶斯是分类和解释数据最适用的数据挖掘算法之一。该算法通过给出每次出现的概率来帮助进行统计解释。

简单定义:根据发生的一些条件(x 1 , x 2, x 3, …, x n )找出各种事件 ( 1 , C 2, …, n )发生的概率比特定的C.发生得更早。

有给定的训练数据集,并根据一些因素进行分类。在上面的示例中,有一些文本将其内容确定为正面或负面。然后作为一个测试数据集,有两个句子,它们的内容方向为正或负是不明确的。我们的目标是通过研究训练集找到他们的方向。适当的解决方案是使用最适用于文本和意见挖掘的朴素贝叶斯分类器。

为了达到我们的目的,我们应该了解或回顾一些关于统计和概率科学的概念。有一些基本定义,我解释如下:

可能性

当一个事件发生时,我们会仔细观察它,计算特定事件发生的所有可能性,并将其称为样本空间,然后计算它会发生多少次。如果我们扔一枚硬币,我们的样本空间是二,因为我们有 S = {head, tail},当我们扔硬币时,只有一个发生或事件,无论是正面还是尾部,在健康条件下,硬币正好落入这两个之一。但是当新掷骰子时,有六种可能性作为样本空间。S = {1, 2, 3, 4, 5, 6},同样在落下的骰子中,只有一个发生。概率是通过将事件计数除以总样本空间来计算的,例如,在数字 1 上掉骰子的概率是 1/6。还有其他事件不止一次发生。在上表中,您可以看到有 8 个作为样本空间。发生事件“正面”的概率是 4/8=0.5,因为正面发生了 4 次,总共 8 次,“负面”也是如此,

条件概率

一个事件发生的概率基于另一事件发生的概率 P(A|B) 称为条件概率,读作“A 在 B 下的概率”。例如,一位患者首先患有高血糖,即“B”,然后我们测量发生糖尿病的概率为“A”,因此我们测量 P(A= 糖尿病 | B= 葡萄糖)。在上面的例子中,在“积极”条件下发生“好”的概率是多少。

在好列中,有三个是蓝色,是好与阳性的组合,最后一列的阳性发生了四次,因此三除以四是0.75。

贝叶斯理论

在其他一些问题中,我们有一些事件,也有一些不同的类,其中一些特定类型的事件属于特定类。然后在研究了过去的信息之后,我们想将新的条件分类。在上面的例子中,有不同的句子有正面或负面。然后我们要根据之前的分类对新句子进行分类。P(新句子|否定)或P(新句子|肯定)表示新句子是肯定的还是否定的。因为句子包含不同的词,所以应该用朴素贝叶斯分类器来解决。

根据下面的十个公式,我证明了朴素贝叶斯是如何从条件概率公式中提取出来的。首先,句子应该被不同的单词划分,然后一旦计算出来,根据肯定然后否定状态的概率。然后比较两个值(负数和正数),无论哪个更大,所以句子属于该类别。在下面的例子中,“It is good”是 0.28,大于 0.047,所以它是一个肯定句。

在上面的等式中,c 出现的百分比很高,并且是总假设的子集,因为 P(x) 与 h 无关,并且 P(x) 的存在会减小 ,最终我们删除 P(x)。

朴素贝叶斯分类器

该方法与神经网络和决策树一样实用,适用于文本分类和医学诊断。朴素贝叶斯是一种方法,当我们拥有大量数据样本但它们从相互独立且联合的特征集中选择有限值时。假设 f 是目标函数,x 将从 中选择取值范围,我们的目标是计算最大概率。

计算说明

代码

下载 Python

如果你想拥有一个舒适的 IDE 和专业的编辑器,而不需要安装库,你可以使用Anaconda & Spider

然后从star打开Anaconda Navigator,选择“ Spider ”:

朴素贝叶斯

朴素贝叶斯分类器的 Python 实现

第 1 步:打开“Anaconda 提示”

第 2 步:安装“textblob”以获得必要的库

第 3 步:下载语料库

第 4 步:导入重要的库,例如 textblob 和 textblob.classifiers

from textblob.classifiers import NaiveBayesClassifier
from textblob import TextBlob

第 5 步:导入训练和测试集并使用朴素贝叶斯

train = [
    ('It is good', 'positive'),
    ('I feel good about it', 'positive'),
    ('It is bad', 'negative'),
    ('It is good', 'positive'),
    ('It is bad', 'negative'),
     ('I feel bad about it', 'negative'),
     ('I feel it is not bad about', 'positive'),
     ('I feel not good about', 'negative')
 ]

test = [
     ('It is good', 'positive'),
     ('I feel bad about it', 'negative')
 ]


NB = NaiveBayesClassifier(train)

第 6 步:精度计算

print("Accuracy: {0}".format(NB.accuracy(test)))

第 7 步:用不同的句子测试算法

print(NB.classify('I feel good about spring'))  # 'positive'
print(NB.classify('I feel bad about dark'))   # 'negative'

第 8 步:针对一个文档而不是句子进行意见挖掘或文本挖掘

#Put collect of text in one textblob
#and textblob gives the result by sum up wach result of sentence
#Classify a TextBlob
blob = TextBlob("I feel bad about dark."      # 'negative'
                "I feel good about spring. "  # 'positive'
                "finally darkness is bad."    # 'negative'
                , classifier=NB)        #sum up='negative'
print(blob)
print(blob.classify())

for sentence in blob.sentences:
     print(sentence)
     print(sentence.classify())
     print(sentence.sentiment.polarity)

结论

贝叶斯方法

  • 为数据集收集存在可能的数据和关于特定知识的知识
  • 将它们的概率、概率分布、独立假设分配给这些数据
  • 我们在不观察未知参数的情况下根据我们的判断执行上述步骤
  • 从环境中收集原始数据
  • 观察数据并与数据集进行比较
  • 计算二次概率分布
  • 根据二次概率的平均值进行预测
  • 做出减少结果错误的决定

优势

  • 对每个样本的观察可以偏离我们的假设准确性
  • 结合已有知识和新样本得到新假设
  • 贝叶斯方法能够以概率方式预测情况
  • 将新样本按合成到几个假设的权重分类
  • 在某些情况下,如果贝叶斯方法不起作用,它们是评估其他方法的良好尺度

坏处

  • 几乎完整数据集的先决条件(海量数据)
  • 在没有这个训练数据集的情况下,我们必须估计概率
  • 这个估计是基于以前的观察、经验……
  • 进行这种近似是非常昂贵的

发表评论

邮箱地址不会被公开。 必填项已用*标注