You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用正则表达式(regex)实现客户评论情感分类函数?

基于正则表达式的评论情感分类实现

核心思路

要实现评论的情感分类,核心是用正则表达式精准匹配正负关键词,需注意三个关键点:

  • 忽略大小写(比如Loving和loved都应被识别为正面关键词)
  • 匹配完整单词/短语(避免把goodness误判为包含good,或把not good拆成两个单词单独匹配)
  • 兼容多词关键词(比如示例中的not good这类短语)

具体实现步骤

  1. 转义关键词:用re.escape()处理所有关键词,避免关键词中的特殊字符(如!、?)干扰正则匹配逻辑
  2. 构建正则模式:用|连接所有处理后的关键词,并用单词边界\b包裹(多词短语整体加边界),同时开启大小写不敏感模式
  3. 匹配判断逻辑:优先检查正面关键词,匹配到则标记为正面;否则检查负面关键词,匹配到标记为负面;都无匹配则标记为中性

Python代码示例

import re

def sentiment(review, positive_keywords, negative_keywords):
    # 生成正面关键词的正则匹配模式
    positive_pattern = r'\b(' + '|'.join(re.escape(word) for word in positive_keywords) + r')\b'
    # 生成负面关键词的正则匹配模式
    negative_pattern = r'\b(' + '|'.join(re.escape(word) for word in negative_keywords) + r')\b'
    
    # 先检查正面匹配(忽略大小写)
    if re.search(positive_pattern, review, flags=re.IGNORECASE):
        return "positive"
    # 再检查负面匹配(忽略大小写)
    elif re.search(negative_pattern, review, flags=re.IGNORECASE):
        return "negative"
    # 无匹配则返回中性
    else:
        return "neutral"

# 测试示例场景
test_review = "I absolutely loved this product! Loving it!"
positive_words = ['loved','outstanding', 'exceeded']
negative_words = ['hated','not good', 'bad']

print(sentiment(test_review, positive_words, negative_words))  # 输出: positive

补充说明

  • 如果需要更精准的匹配(比如排除not loved这类带否定前缀的情况),可以在正则中添加否定前置的判断逻辑,但会增加复杂度,需根据实际业务需求调整
  • 若评论中同时出现正负关键词,当前逻辑会优先返回正面,你可以根据需求修改判断规则(比如统计匹配次数,取次数多的类别)

内容的提问来源于stack exchange,提问作者Dharmini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 09:42:15