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

如何在用户评论分析程序中处理否定词,排除带否定修饰的目标词汇?

解决评论中否定场景的统计问题

先指出原代码的两个核心问题:

  • 仅处理了单条评论(df['review_text'].loc[i]中的i未定义,且未遍历所有行)
  • 未覆盖"not cheap"、"never cheap"这类否定修饰的场景

以下是优化后的完整解决方案:

步骤1:准备分词器

确保nltk的分词资源已下载,避免运行报错:

import nltk
nltk.download('punkt')

步骤2:优化文本处理函数

简化分词逻辑,同时处理空评论/缺失值:

import pandas as pd
import nltk

def get_review_words(review):
    # 处理空评论或缺失值,防止分词报错
    if pd.isna(review):
        return []
    # 分词并统一转小写
    return [word.lower() for word in nltk.word_tokenize(review)]

步骤3:定义否定词与判断逻辑

覆盖常见否定词(含缩写形式),检查目标词是否被否定修饰:

# 常见否定词集合,可根据实际评论风格补充
negation_words = {'not', 'never', 'no', 'none', 'hardly', 'scarcely', 'barely', 
                  'don\'t', 'didn\'t', 'wasn\'t', 'isn\'t', 'haven\'t', 'hasn\'t'}

def is_positive_mention(review_words, target_word='cheap'):
    # 目标词未出现,直接返回False
    if target_word not in review_words:
        return False
    
    # 找到所有目标词的出现位置
    target_indices = [idx for idx, word in enumerate(review_words) if word == target_word]
    
    for idx in target_indices:
        # 检查目标词前1-2个词是否有否定词(覆盖直接否定场景)
        start_pos = max(0, idx - 2)
        for i in range(start_pos, idx):
            if review_words[i] in negation_words:
                # 发现否定修饰,该评论不计入统计
                return False
    # 所有目标词均未被否定,返回True
    return True

步骤4:遍历所有评论统计数量

修正原代码单条评论的问题,遍历整个数据集:

# 读取数据
df = pd.read_csv("lastFile3.csv", sep=',')

# 初始化统计变量
x = 0

# 逐条处理评论
for review in df['review_text']:
    review_words = get_review_words(review)
    if is_positive_mention(review_words):
        x += 1

# 大数据量可改用更高效的apply方式:
# df['valid_mention'] = df['review_text'].apply(lambda r: is_positive_mention(get_review_words(r)))
# x = df['valid_mention'].sum()

print(f"符合条件的评论数:{x}")

关键说明

  • 否定词范围:检查目标词前1-2个词是平衡准确性与复杂度的方案,既覆盖"not cheap"这类直接否定,又不会误判距离过远的无关否定(比如"I don't like the color, but it's cheap"不会被错误排除)。若需更精准,可引入句法分析,但会大幅提升复杂度。
  • 扩展性:可根据评论的语言习惯,在negation_words中补充更多否定词(如"rarely"、"seldom"等)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 19:46:17