Python 使用NRC词典进行情感分类
情感识别 或 情感识别 是一个人或物体感知环境中的特定情感并将其归入许多情感类别的能力。
情感分类 在Python中是传统情感分析技术的可行替代品,该技术将单词或句子标记为 积极 或 消极 并根据情感分配极性分数。
该算法的基本思想是模仿 人类思维过程 ,并尝试从文本中分离出表达情感的单词。分析是通过 训练数据集 来完成的,其中一组预设信息被输入系统,作为分类的基础。
这里的包基于来自 NLTK库 的WordNet同义词集和加拿大 国家研究委员会(NRC) 的情感词典,其中包含超过 27,000个术语 。
该库使用以下类别来衡量和分类单词的情感效应:
- 害怕
- 愤怒
- 期望
- 信任
- 惊讶
- 积极
- 消极
- 悲伤
- 厌恶
- 喜悦
安装步骤
- 步骤1 - 在终端中使用pip安装命令安装NRC模块。
pip install NRCLex
在jupyter中安装
笔记本电脑 命令提示符
在MacOs中安装也遵循相同的命令。直接使用终端。
- 步骤2 - 除了 nrclex 之外,还安装 textblob 以避免出现 MissingCorpusError
pip install textblob
- 步骤 3 - 从 textblob 下载语料库
python -m textblob.download_corpora
安装完成后,我们可以导入库并创建一个文本对象。
基本方法
1. 原始文本转为过滤后的文本(为了获得最佳结果,’text’ 应该是 Unicode)。
text_object.load_raw_text(text: str)
2. 将分词列表转换为令牌列表
text_object.load_token_list(list_of_tokens: list)
3. 返回单词列表。
text_object.words
4. 返回句子列表。
text_object.sentences
5. 返回影响列表。
text_object.affect_list
6. 返回情感字典。
text_object.affect_dict
7. 返回原始的情感计数。
text_object.raw_emotion_scores
8. 返回最高情绪。
text_object.top_emotions
9. 返回频率。
Text_object.frequencies
在这里,我们使用了top_emotions函数来根据情感对单词列表进行分类。
步骤
步骤 1 − 导入nrclex
步骤 2 − 从nrclex导入NRCLex
步骤 3 − 初始化一个字符串列表-words,包含您想要分类的单词
步骤 4 − 对于i在range len(text)
步骤 4 − emotion = NRCLex(text[i]) #为每个文本创建一个对象
步骤 5 − emotion.top_emotions #对情感进行分类
示例
# Import module
import nrclex
from nrclex import NRCLex
text = ['happy', 'beautiful', 'exciting', 'depressed']
# Iterate through list
for i in range(len(text)):
# call by object creation
emotion = NRCLex(text[i])
# Classify emotion
print('\n', text[i], ': ', emotion.top_emotions)
输出
innocent : [('trust', 0.5), ('positive', 0.5)]
hate : [('fear', 0.2), ('anger', 0.2), ('negative', 0.2), ('sadness', 0.2), ('disgust', 0.2)]
irritating : [('anger', 0.3333333333333333), ('negative', 0.3333333333333333),
('disgust', 0.3333333333333333)]
annoying : [('anger', 0.5), ('negative', 0.5)]
步骤
步骤1 - 导入nrclex
步骤2 - 从nrclex导入NRCLex
步骤3 - 初始化一个字符串列表-您想要分类的单词
步骤4 - for i in range len(text)
步骤4 - emotion = NRCLex(text[i]) #为每个文本创建一个对象
步骤5 - emotion.top_emotions #分类情绪
示例
import nrclex
from nrclex import NRCLex
# Assign list of strings
text = ['innocent','hate', 'irritating','annoying']
# Iterate through list
for i in range(len(text)):
# Create object
emotion = NRCLex(text[i])
# Classify emotion
print('\n\n', text[i], ': ', emotion.top_emotions)
输出
innocent : [('trust', 0.5), ('positive', 0.5)]
hate : [('fear', 0.2), ('anger', 0.2), ('negative', 0.2), ('sadness', 0.2), ('disgust', 0.2)]
irritating : [('anger', 0.3333333333333333), ('negative', 0.3333333333333333), ('disgust', 0.3333333333333333)]
annoying : [('anger', 0.5), ('negative', 0.5)]
结论
NRC情感词典广泛应用于情感分析和情感分类任务的研究和工业领域。这意味着有大量用户和可用于支持和进一步发展的资源。通过借助谷歌翻译,NRCLex成功打破了语言障碍,在全球范围内为100多种语言提供稳定的输出。这在了解大流行病反应方面在卫生保健领域有着广泛的应用。实际应用包括心理学和行为科学、假新闻检测和提升人机交互。