python做情感分析【中、英文都有】

    科技2025-07-12  30

    对于英文的情感分析

    基于TextBlob包

    from textblob import TextBlob text = "I am happy today. I feel sad today." blob = TextBlob(text) blob # 运行结果 # TextBlob("I am happy today. I feel sad today.") blob.sentences # [Sentence("I am happy today."), Sentence("I feel sad today.")]

    对第一句话的情感分析,说明一下,情感极性的变化范围是[-1, 1],-1代表完全负面,1代表完全正面。

    blob.sentences[0].sentiment # Sentiment(polarity=0.8, subjectivity=1.0) # 情感极性0.8,主观性1.0。

    对第一句话的情感分析:

    blob.sentences[1].sentiment # Sentiment(polarity=-0.5, subjectivity=1.0)

    还可以让TextBlob综合分析出整段文本的情感:

    blob.sentiment # Sentiment(polarity=0.15000000000000002, subjectivity=1.0)

    不同极性的词,在数值上是有区别的。我们应该可以找到比“沮丧”更为负面的词汇。而且这也符合逻辑,谁会这么“天上一脚,地下一脚”矛盾地描述自己此时的心情呢?

    对于中文的情感分析

    基于SnowNLP包

    from snownlp import SnowNLP text = "我今天很快乐。我今天很愤怒。" s = SnowNLP(text) s.sentences # ['我今天很快乐', '我今天很愤怒']

    第一句的情感分析结果:

    SnowNLP(s.sentences[0]).sentiments # 0.971889316039116

    第二句的情感分析结果:

    SnowNLP(s.sentences[1]).sentiments # 0.07763913772213482

    这里你肯定发现了问题——“愤怒”这个词表达了如此强烈的负面情感,为何得分依然是正的?

    这是因为SnowNLP和textblob的计分方法不同。SnowNLP的情感分析取值,表达的是“这句话代表正面情感的概率”。也就是说,对“我今天很愤怒”一句,SnowNLP认为,它表达正面情感的概率很低很低。

    Processed: 0.014, SQL: 9