在Python中使用 NRC Lexicon 进行情感分类
很多时候,对于现实世界的项目,情感识别往往只是项目的开始。那个时候在上面写一个完整的代码,不仅会增加时间,而且会阻碍效率。
NRCLexicon是 MIT 批准的pypi项目,由 Mark M. Bailey 设计,可预测给定文本的情绪和情感。该软件包包含大约 27,000 个单词,基于加拿大国家研究委员会 (NRC) 影响词典和NLTK库的WordNet同义词集。
安装:
要安装此模块,请在终端中键入以下命令。
pip install NRCLex
即使安装了这个模块,在运行程序时也可能会出现MissingCorpusError 。因此,建议在命令提示符下使用以下命令也安装textblob.download_corpora 。
python -m textblob.download_corpora
方法:
- 导入模块
Python3
# Import required modules
from nrclex import NRCLex
Python3
# Assigning list of words
text = ['hate', 'lovely', 'person', 'worst']
Python3
for i in range(len(text)):
# creating objects
emotion = NRCLex(text[i])
Python3
# Import module
from nrclex import NRCLex
# Assign list of strings
text = ['hate', 'lovely', 'person', 'worst']
# 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)
Python3
# Import module
from nrclex import NRCLex
# Assign emotion
text = 'love'
# Create object
emotion = NRCLex(text)
# Using methods to classigy emotion
print('\n', emotion.words)
print('\n', emotion.sentences)
print('\n', emotion.affect_list)
print('\n', emotion.affect_dict)
print('\n', emotion.raw_emotion_scores)
print('\n', emotion.top_emotions)
print('\n', emotion.affect_frequencies)
- 分配输入文本
蟒蛇3
# Assigning list of words
text = ['hate', 'lovely', 'person', 'worst']
- 为每个输入文本创建NRCLex对象。
蟒蛇3
for i in range(len(text)):
# creating objects
emotion = NRCLex(text[i])
- 应用方法对情绪进行分类。
Sr. | Method | Description |
---|---|---|
1 | emotion.words | Return words list. |
2 | emotion.sentences | Return sentences list. |
3 | emotion.affect_list | Return affect list. |
4 | emotion.affect_dict | Return affect dictionary. |
5 | emotion.raw_emotion_scores | Return raw emotional counts. |
6 | emotion.top_emotions | Return highest emotions. |
7 | emotion.affect_frequencies | Return affect frequencies. |
- 测量的情绪影响包括以下内容:
- 害怕
- 愤怒
- 预期
- 相信
- 惊喜
- 积极的
- 消极的
- 悲伤
- 厌恶
- 喜悦
下面是实现。
示例 1:
基于上述方法,下面的示例使用top_emotions 对各种情绪进行分类。
蟒蛇3
# Import module
from nrclex import NRCLex
# Assign list of strings
text = ['hate', 'lovely', 'person', 'worst']
# 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)
输出:
示例 2:
这里使用NCRLex模块的所有方法对单一情感爱进行分类。
蟒蛇3
# Import module
from nrclex import NRCLex
# Assign emotion
text = 'love'
# Create object
emotion = NRCLex(text)
# Using methods to classigy emotion
print('\n', emotion.words)
print('\n', emotion.sentences)
print('\n', emotion.affect_list)
print('\n', emotion.affect_dict)
print('\n', emotion.raw_emotion_scores)
print('\n', emotion.top_emotions)
print('\n', emotion.affect_frequencies)
输出: