当前位置:   article > 正文

自然语言处理--一个基于规则的情感分析器VADER_vader计算原理

vader计算原理

一种情感分析的方法使用用户设计的规则(有时称为启发式规则)来度量文本的情感。一个常用的基于规则的方法是在文本中寻找关键词,并将每个关键词映射到某部字典或者映射上的数值得分或权重,例如这部字典可以是 Python 的 dict。

# VADER 的唯一不足在于,它只关注其词库中的 7500 个词条

from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer

sa = SentimentIntensityAnalyzer()
'''
SentimentIntensityAnalyzer.lexicon 包含了词条及其得分
这里的分词器最擅长处理标点符号和表情符号,这样 VADER 才能更好地工作。毕竟,设
计表情符号就是为了表达大量情感
如果在流水线中词干还原工具(或词形归并工具),需要将该词干还原工具
也用于 VADER 词库,使单个词干或词元中的所有词的得分组合起来
'''
print(sa.lexicon)
'''
在 VADER 定义的 7500 个词条中,只有 3 个包含空格,其中的两个实际上是 n-gram,
另一个是表达“kiss”的表情符号
'''
print([(tok, score) for tok, score in sa.lexicon.items() if " " in tok])

# VADER算法用3个不同的分数(正向、负向和中立)来表达情感极性的强度,然后将它们组合在一起得到一个复合的情感倾向性得分
print(sa.polarity_scores(text="Python is very readable and it's great for NLP."))
'''
注意,VADER 对于否定处理得非常好,相比于 not bad,
great 正向情感程度只是略微高一点。VADER 内置的分
词器忽略所有不在其词库中的词,也完全不考虑 n-gram
'''
print(sa.polarity_scores(text="Python is not a bad choice for most applications."))

# 几个极端情感语句
corpus = ["Absolutely perfect! Love it! :-] :-] :-]", "Horrible! Completely useless. :(", "It was OK. Some good and some bad things."]
for doc in corpus:
    scores = sa.polarity_scores(doc)
    print('{:+}: {}'.format(scores['compound'], doc))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/893877
推荐阅读
相关标签
  

闽ICP备14008679号