使用 NRC 词典进行 Python 情感分类
情感识别或情感辨识是指个人或物体感知环境中表现出的特定情感并将其归入众多情感类别之一的能力。
Python 中的情感分类是传统情感分析技术的可行替代方案,传统情感分析技术将单词或句子标记为正面或负面,并相应地分配极性得分。
该算法背后的基本思想是模仿人类思维过程,并试图从文本中分割出表达情感的单词。分析是使用训练数据集进行的,其中将一组预先假设的信息馈送到系统,作为分类的基础。
这是一个基于NLTK 库的 WordNet 同义词集和加拿大国家研究委员会 (NRC)的情感词典的软件包,其中包含超过27,000 个术语。
库使用以下类别来衡量和分类单词的情感影响:
恐惧
愤怒
预期
信任
惊讶
正面
负面
悲伤
厌恶
快乐
安装步骤
步骤 1 - 使用终端中的 pip install 命令安装 NRC 模块。
pip install NRCLex
在 Jupyter
笔记本和命令提示符中安装通常遵循相同的步骤(如果您使用的是 Windows)。在 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 导入 nrclex
步骤 2 - 从 nrclex 导入 NRCLex
步骤 3 - 初始化要分类的字符串-单词列表
步骤 4 - 对于范围内的 i 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 - 对于范围内的 i 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 多种语言提供了稳定的输出。这在医疗保健领域理解疫情应对方面有着广泛的应用。实际应用包括心理学和行为科学、虚假新闻检测以及增强人机交互。