本文目录导读:

在 PHP 项目中实现情感分析(判断文本正负倾向),通常有以下几种主流方法,按复杂度从低到高排列:
基于词典的情感分析(最常用,适合中小项目)
原理
使用预先构建的正负面情感词典,对文本分词后计算情感得分。
步骤
-
准备情感词典
- 正面词:开心、喜欢、优秀、完美
- 负面词:讨厌、差劲、糟糕、失望
- 可包含程度副词(非常、稍微)和否定词(不、没)
-
实现流程
function sentimentAnalysis($text, $posDict, $negDict) { // 简单分词(可用explode或中文分词库) $words = preg_split('/[\s,,。!?!?]+/u', $text); $score = 0; foreach ($words as $word) { if (in_array($word, $posDict)) $score++; if (in_array($word, $negDict)) $score--; } // 加入否定词反转逻辑 // "不" + 正面词 → 负面 if ($score > 0) return 'positive'; if ($score < 0) return 'negative'; return 'neutral'; }
优缺点
- ✅ 简单快速,无需外部API
- ❌ 对复杂语料(反讽、上下文)准确率低
- 推荐中文词典:BosonNLP情感词典、大连理工大学情感词汇本体库
调用第三方API(高精度,适合生产环境)
推荐服务
- 百度AI情感分析(免费额度充足)
- 腾讯云自然语言处理
- 阿里云NLP
- Google Cloud Natural Language
PHP调用示例(百度AI)
require_once 'AipNlp.php'; // 百度SDK $client = new AipNlp(APP_ID, API_KEY, SECRET_KEY); $result = $client->sentimentClassify($text); $sentiment = $result['items'][0]['sentiment']; // 0负面 1中性 2正面 $confidence = $result['items'][0]['confidence'];
优缺点
- ✅ 准确度高,支持上下文理解
- ❌ 有调用次数限制/费用,依赖网络
朴素贝叶斯分类器(需要训练数据)
原理
基于机器学习,用已标注的正负面语料训练模型。
PHP实现
use Phpml\Classification\NaiveBayes;
use Phpml\FeatureExtraction\TfIdfTransformer;
// 1. 准备训练数据
$samples = [
'这个产品很棒',
'质量太差了',
'非常满意',
'完全不能用'
];
$labels = ['pos', 'neg', 'pos', 'neg'];
// 2. 向量化文本
$tokenizer = new WordTokenizer();
$samples = array_map(function($text) use ($tokenizer) {
return $tokenizer->tokenize($text);
}, $samples);
// 3. 训练模型
$classifier = new NaiveBayes();
$classifier->train($samples, $labels);
// 4. 预测
$newText = '不算太好但也不差';
$tokenized = $tokenizer->tokenize($newText);
echo $classifier->predict($tokenized); // 输出 pos/neg
优缺点
- ✅ 可针对特定领域定制
- ❌ 需要大量标注数据,训练过程有学习成本
使用PHP-ML库(集成多种算法)
安装
composer require php-ai/php-ml
示例(支持向量机SVM)
use Phpml\Classification\SVC; use Phpml\SupportVectorMachine\Kernel; $model = new SVC(Kernel::RBF, 1.0, 3); $model->train($trainSamples, $trainLabels); $predicted = $model->predict($textVector);
实际项目建议
| 场景 | 推荐方案 |
|---|---|
| 简单Demo / 少量文本 | 词典法(10分钟搞定) |
| 商业应用(准确率优先) | 第三方API(百度/腾讯) |
| 特殊领域(如金融评论) | 自训练朴素贝叶斯 |
中文处理关键点
- 需要结合分词工具:
scws扩展、jieba-php、phpanalysis - 处理否定词:
不漂亮、不是很满意 - 处理程度副词:
极其讨厌(权重5)、有点失望(权重5)
如果有具体的技术实现细节(如分词库集成、词典文件格式)需要帮助,可以进一步沟通。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播