[ 'keywords' => [ '有效', '好用', '好了', '治愈', '见效', '不错', '管用', '有用', '灵验', '缓解', '痊愈', '见效', '神效', '推荐', '感谢', '好了', '管用', '有效果', '有效果', '奏效', '改善', '见效快', '神奇', '有效', '有效果', '有效果', '有效果', '有效果', '有效果' ], 'patterns' => [ '/(喝|吃|用)了?\s*\d+\s*次?[就]?(好|痊愈|缓解|不咳|不痛)了/u', '/(效果|结果)\s*(非常|很)?\s*(好|明显|不错|显著|惊人)/u', '/(尝试|试了|用了)\s*\d+\s*[天个]?\s*(就)?(好|痊愈|缓解|见效)/u', '/(咳嗽|咳|痛|疼|症状)\s*(明显)?\s*(减轻|缓解|消失|好了)/u', '/(感谢|谢谢)\s*(分享|博主|张医生|宝旬)/u' ] ], 'negative' => [ 'keywords' => [ '无效', '没用', '不好', '没效果', '不行', '不见效', '没好转', '加重', '恶化', '白费', '失望', '避雷', '没用', '没效果', '无效果', '无改善', '没作用', '不灵', '骗人', '忽悠', '上当' ], 'patterns' => [ '/(还是|依然|仍旧|仍然)\s*(咳|难受|痛|疼|没效果)/u', '/(一点|完全|根本|丝毫)\s*没(效果|用|好转|作用|改善)/u', '/(不仅|不但)\s*没(好|改善).*(反而|而且)\s*(加重|恶化)/u', '/(浪费|白费|白忙|白折腾)\s*(时间|精力)/u', '/(失望|后悔|上当|骗人|忽悠|别信)\s*(了|吧|!)/u' ] ] ]; /** * 分析评论情感 * * @param string $comment 评论内容 * @return string 情感分类: 'positive', 'negative' 或 'neutral' */ public function analyze($comment) { // 预处理:去除多余空格和特殊字符 $comment = $this->preprocess($comment); // 1. 检查否定词(优先级高) foreach ($this->config['negative']['keywords'] as $word) { if (mb_strpos($comment, $word) !== false) { return 'negative'; } } // 2. 检查肯定词 foreach ($this->config['positive']['keywords'] as $word) { if (mb_strpos($comment, $word) !== false) { return 'positive'; } } // 3. 检查否定句式 foreach ($this->config['negative']['patterns'] as $pattern) { if (preg_match($pattern, $comment)) { return 'negative'; } } // 4. 检查肯定句式 foreach ($this->config['positive']['patterns'] as $pattern) { if (preg_match($pattern, $comment)) { return 'positive'; } } return 'neutral'; } /** * 预处理评论内容 */ private function preprocess($comment) { // 移除多余空格 $comment = preg_replace('/\s+/u', ' ', $comment); // 移除常见标点符号(保留中文字符) $comment = preg_replace('/[^\p{Han}\p{P}\w\s]/u', '', $comment); return trim($comment); } } // ===================== 使用示例 ===================== $analyzer = new CommentAnalyzer(); // 微博内容 $weibo = "针灸匠张宝旬\n原创\n25-7-7 14:41\n发布于 北京\n来自 华为 Mate X5 典藏版\n#张宝旬妙招# 刀片桑用花椒蒸梨。按图示做。汤水清甜微麻,一点不辣,还带股淡淡的花椒香味,吃梨肉、喝梨汤,效果好。 "; // 示例评论 $comments = [ "去年冬天寒咳,直接切梨加花椒加少许水蒸半个小时,喝几次就好了", "试了完全没效果,咳嗽更严重了", "花椒蒸梨一点用都没有,避雷!", "喝了三天,依然咳得睡不着", "效果非常明显,第二天就不咳了", "这个方子对我很管用,咳嗽明显减轻了", "按照方法做了,但感觉没什么变化", "张医生的方法总是这么神奇,感谢分享!", "孩子咳嗽试了这个方法,结果反而加重了", "蒸梨的时候花椒放多了,味道有点怪", "这个方法简单易行,推荐给大家", "试了两次,效果不明显,可能不适合我", "中医小妙招真是博大精深", "花椒蒸梨?这是什么奇怪的组合", "喝了当晚就不怎么咳了,太有效了!", "完全没好转,白忙活一场", "这个方法在抖音上看到过,亲测有效", "咳嗽没缓解,反而胃不舒服了", "张宝旬医生的方法值得信赖", "没坚持喝,不知道效果如何" ]; // 分析评论并分类 $results = [ 'positive' => [], 'negative' => [] ]; foreach ($comments as $comment) { $result = $analyzer->analyze($comment); if ($result !== 'neutral') { $results[$result][] = $comment; } } // ===================== 显示结果 ===================== ?>
自动筛选用户对中医方法有效性的反馈