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

基于Naive Bayes的Twitter情感分析仅返回neutral标签求助

解决Twitter情感分析仅返回neutral/irrelevant的问题

咱们一步步排查问题,先从最核心的环节入手:

1. 先检查训练数据的标签与分布

你目标是分positive/negative/neutral三类,但结果出现了irrelevant,这大概率是训练数据的问题:

  • 先确认processedtrainingdata里的标签集合:是不是混入了irrelevant标签?如果训练数据里本身就有这个类别,分类器自然会输出它;
  • 统计训练数据的标签分布:比如positive和negative样本是不是少得可怜?如果训练集里90%都是neutral/irrelevant,分类器会倾向于输出它见过最多的类别,根本学不到pos/neg的特征;
  • 验证训练数据格式:每个元素必须是(预处理后的单词列表, 情感标签)的结构,比如(['i', 'am', 'happy'], 'positive'),格式错了分类器根本学不到对应关系。

2. 补全缺失的推文预处理步骤

你的代码里没展示预处理逻辑,但这是情感分析的核心环节,没做好的话分类器抓不到关键情感特征:

  • 必须做的预处理操作:
    • 把所有单词转小写(不然Happy和happy会被当成两个不同的词);
    • 去掉停用词(比如the/and这类无意义的词,会干扰特征);
    • 清理特殊内容:去掉@用户名、链接、话题标签符号(比如把#happy变成happy)、非字母字符;
    • 用NLTK的分词器拆分推文(不要直接按空格拆分,要处理缩写、连字符等)。

给你补一个简单的预处理示例:

def preprocess_tweet(tweet):
    # 转小写
    tweet = tweet.lower()
    # 分词
    tokens = nltk.word_tokenize(tweet)
    # 过滤停用词和非字母字符
    stop_words = set(nltk.corpus.stopwords.words('english'))
    filtered_tokens = [token for token in tokens if token.isalpha() and token not in stop_words]
    return filtered_tokens

3. 检查分类器的训练与特征提取逻辑

从你的代码看,有几个关键环节可能漏了:

  • 确认分类器已训练:你只写了Nbayes.classify,但没展示训练代码,必须执行这步才能生成有效模型:
    Nbayes = nltk.NaiveBayesClassifier.train(training_features)
    
  • 优化特征选择:buildvocab里直接用了所有词的keys(),建议取前N个高频词(比如前2000个),减少低频噪声:
    word_features = list(wordlist.keys())[:2000]
    
  • 测试单条推文的特征提取:拿一句明确的positive推文,比如['i', 'am', 'so', 'happy'],调用extract_features看看是否返回'contains(happy)': True,如果没有,说明特征提取逻辑有问题。

4. 修正结果判断的逻辑

你的代码最后只比较positive和negative的计数,完全忽略了irrelevant标签,建议先打印全部分布:

from collections import Counter
print(Counter(Nbayes_result_labels))

这样能直观看到分类器到底输出了哪些标签,再针对性调整。另外,先拿单条明确的测试推文验证,比如:

test_tweet = "I love this sunny day!"
processed_test = preprocess_tweet(test_tweet)
print(Nbayes.classify(extract_features(processed_test)))  # 正常应该输出positive

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:45:12