辅助正念/朴素贝叶斯

朴素贝叶斯分类器算法

0.0.7 2024-05-10 23:18 UTC

This package is auto-updated.

Last update: 2024-09-12 07:30:17 UTC


README

Tests

朴素贝叶斯通过查看训练集并基于该集进行猜测来工作。它使用简单的统计和一些数学来计算结果。

我能用它做什么?

您可以使用它将任何文本内容分类到任意一组类别中。例如

  • 一封电子邮件是垃圾邮件还是非垃圾邮件?
  • 一篇新闻文章是关于技术、政治还是体育?
  • 一段文字表达的是积极情绪还是消极情绪?

安装

您可以使用Composer包管理器将朴素贝叶斯安装到您的项目中

composer require assisted-mindfulness/naive-bayes

学习

在算法能做任何事情之前,它需要一个包含历史信息的训练集。为了教会您的分类器文本属于哪个类别,请调用learn方法

$classifier = new Classifier();

$classifier
    ->learn('I love sunny days', 'positive')
    ->learn('I hate rain', 'negative');

猜测

在训练了分类器之后,您可以使用对传输文本所属类别的预测,例如

$classifier->most('is a sunny days'); // positive
$classifier->most('there will be rain'); // negative

为了使您能够输入更多类似的信息,您可以使用

$classifier->guess('is a sunny days');

/*
items: array:2 [
  "positive" => 0.0064
  "negative" => 0.0039062
]
*/

不均衡

当训练集中包含不均衡的数据(并非有意为之,而是由于数据不足)时,您可以通过启用一个“不均衡”模式来均衡文档类型概率的计算。

$classifier
   ->uneven()
   ->guess('is a sunny days');

分词器

该算法利用分词器将文本分割成单词。默认情况下,它通过空格分割文本,并包括长度超过3个符号的单词。您也可以使用以下示例定义您自己的自定义分词器

$classifier = new Classifier();

$classifier->setTokenizer(function (string $string) {
    return Str::of($string)
        ->lower()
        ->matchAll('/[[:alpha:]]+/u')
        ->filter(fn (string $word) => Str::length($word) > 3);
});

总结

这就是全部内容!即使是一个非常小的训练集,算法也能返回一些相当不错的结果。例如,朴素贝叶斯已被证明在情感分析中给出相当不错的结果

此外,朴素贝叶斯不仅可以应用于文本。如果您有其他方式来计算指标的几率,您也可以将其插入其中,效果同样不错。

许可

MIT许可(MIT)。有关更多信息,请参阅许可文件