Product
Introducing License Enforcement in Socket
Ensure open-source compliance with Socket’s License Enforcement Beta. Set up your License Policy and secure your software!
中文情感分析库(Chinese Sentiment))可对文本进行情绪分析、正负情感分析。
https://github.com/thunderhit/cnsenti
https://pypi.org/project/cnsenti/
pip install cnsenti
pip install cnsenti -i https://pypi.tuna.tsinghua.edu.cn/simple/
中文文本情感词正负情感词统计
from cnsenti import Sentiment
senti = Sentiment()
test_text= '我好开心啊,非常非常非常高兴!今天我得了一百分,我很兴奋开心,愉快,开心'
result = senti.sentiment_count(test_text)
print(result)
Run
{'words': 24,
'sentences': 2,
'pos': 4,
'neg': 0}
中文文本情绪统计
from cnsenti import Emotion
emotion = Emotion()
test_text = '我好开心啊,非常非常非常高兴!今天我得了一百分,我很兴奋开心,愉快,开心'
result = emotion.emotion_count(test_text)
print(result)
Run
{'words': 22,
'sentences': 2,
'好': 0,
'乐': 4,
'哀': 0,
'怒': 0,
'惧': 0,
'恶': 0,
'惊': 0}
cnsenti包括Emotion和Sentiment两大类,其中
emotion_count(text)y用于统计文本中各种情绪形容词出现的词语数。使用大连理工大学情感本体库词典,支持七种情绪统计(好、乐、哀、怒、惧、恶、惊)。
from cnsenti import Emotion
emotion = Emotion()
test_text = '我好开心啊,非常非常非常高兴!今天我得了一百分,我很兴奋开心,愉快,开心'
result = emotion.emotion_count(test_text)
print(result)
返回
{'words': 22,
'sentences': 2,
'好': 0,
'乐': 4,
'哀': 0,
'怒': 0,
'惧': 0,
'恶': 0,
'惊': 0}
其中
隶属于Sentiment类,可对文本text中的正、负面词进行统计。默认使用Hownet词典,后面会讲到如何导入自定义正、负情感txt词典文件。这里以默认hownet词典进行统计。
from cnsenti import Sentiment
senti = Sentiment()
test_text = '我好开心啊,非常非常非常高兴!今天我得了一百分,我很兴奋开心,愉快,开心'
result = senti.sentiment_count(test_text)
print(result)
Run
{'words': 24,
'sentences': 2,
'pos': 4,
'neg': 0}
其中
隶属于Sentiment类,可更加精准的计算文本的情感信息。相比于sentiment_count只统计文本正负情感词个数,sentiment_calculate还考虑了
比如
from cnsenti import Sentiment
senti = Sentiment()
test_text = '我好开心啊,非常非常非常高兴!今天我得了一百分,我很兴奋开心,愉快,开心'
result1 = senti.sentiment_count(test_text)
result2 = senti.sentiment_calculate(test_text)
print('sentiment_count',result1)
print('sentiment_calculate',result2)
Run
sentiment_count
{'words': 22,
'sentences': 2,
'pos': 4,
'neg': 0}
sentiment_calculate
{'sentences': 2,
'words': 22,
'pos': 27.0,
'neg': 0.0}
我们先看看没有情感形容词的情形
from cnsenti import Sentiment
senti = Sentiment() #两txt均为utf-8编码
test_text = '这家公司是行业的引领者,是中流砥柱。'
result1 = senti.sentiment_count(test_text)
result2 = senti.sentiment_calculate(test_text)
print('sentiment_count',result1)
print('sentiment_calculate',result2)
Run
sentiment_count {'words': 10, 'sentences': 1, 'pos': 0, 'neg': 0}
sentiment_calculate {'sentences': 1, 'words': 10, 'pos': 0, 'neg': 0}
如我所料,虽然句子是正面的,但是因为cnsenti自带的情感词典仅仅是形容词情感词典,对于很多场景而言,适用性有限,所以pos=0。
好在cnsenti支持导入自定义词典,但目前只有Sentiment类支持导入自定义正负情感词典,自定义词典需要满足
senti = Sentiment(pos='正面词自定义.txt',
neg='负面词自定义.txt',
merge=True,
encoding='utf-8')
这部分我放到test文件夹内,代码和自定义词典均在test内,所以我使用相对路径设定自定义词典的路径
|test
|---代码.py
|---正面词自定义.txt
|---负面词自定义.txt
正面词自定义.txt
中流砥柱
引领者
from cnsenti import Sentiment
senti = Sentiment(pos='正面词自定义.txt', #正面词典txt文件相对路径
neg='负面词自定义.txt', #负面词典txt文件相对路径
merge=True, #融合cnsenti自带词典和用户导入的自定义词典
encoding='utf-8') #两txt均为utf-8编码
test_text = '这家公司是行业的引领者,是中流砥柱。今年的业绩非常好。'
result1 = senti.sentiment_count(test_text)
result2 = senti.sentiment_calculate(test_text)
print('sentiment_count',result1)
print('sentiment_calculate',result2)
Run
sentiment_count {'words': 16, 'sentences': 2, 'pos': 2, 'neg': 0}
sentiment_calculate {'sentences': 2, 'words': 16, 'pos': 5, 'neg': 0}
上面参数我们传入了正面自定义词典和负面自定义词典,并且使用了融合模式(merge=True),可以利用cnsenti自带的词典和刚刚导入的自定义词典进行情感计算。
补充:
我设计的这个库目前仅能支持两类型pos和neg,如果你的研究问题是两分类问题,如好坏、美丑、善恶、正邪、友好敌对,你就可以定义两个txt文件,分别赋值给pos和neg,就可以使用cnsenti库。
目前比较有可解释性的文本分析方法是词典法,算法逻辑都很清晰。词典的好坏决定了情感分析的好坏。如果没有词典,也就限制了你进行文本情感计算。
目前大多数人使用的是形容词情感词典,如大连理工大学情感本体库和知网Hownet,优点是直接拿来用,缺点也很明显,对于很多带情感却无形容词的文本无能为力。如这手机很耐摔, 使用形容词情感词典计算得分pos和neg均为0。类似问题在不同研究对象的文本数据应该都是挺普遍的,所以人工构建情感词典还是很有必要的。
我封装了刘焕勇基于so_pmi算法的新词发现代码,将该库其命名为wordexpansion。wordexpansion可以极大的提高提高自定义词典的构建速度,感兴趣的童鞋详情可以访问wordexpansion项目地址
如果您是经管人文社科专业背景,编程小白,面临海量文本数据采集和处理分析艰巨任务,个人建议学习《python网络爬虫与文本数据分析》视频课。作为文科生,一样也是从两眼一抹黑开始,这门课程是用五年时间凝缩出来的。自认为讲的很通俗易懂o( ̄︶ ̄)o,
感兴趣的童鞋不妨 戳一下《python网络爬虫与文本数据分析》进来看看~
公众号:大邓和他的python
FAQs
中文情感分析库(Chinese Sentiment))可对文本进行情绪分析、正负情感分析。
We found that cnsenti demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Ensure open-source compliance with Socket’s License Enforcement Beta. Set up your License Policy and secure your software!
Product
We're launching a new set of license analysis and compliance features for analyzing, managing, and complying with licenses across a range of supported languages and ecosystems.
Product
We're excited to introduce Socket Optimize, a powerful CLI command to secure open source dependencies with tested, optimized package overrides.