python情感分析预测模型_Python分词,情感分析⼯具
SnowNLP
现在训练数据主要是针对电商服务类的评价,所以对其他的⼀些可能效果不是很好
安装
pip install snownlp
官⽅实例
from snownlp import SnowNLP
from snownlp import ntiment
s=SnowNLP(u'这个东西真的很赞')
print(s.words)
iments)
text = u'''⾃然语⾔处理是计算机科学领域与⼈⼯智能领域中的⼀个重要⽅向。它研究能实现⼈与计算机之间⽤⾃然语⾔进⾏有效通信的各种理论和⽅法。⾃然语⾔处理是⼀门融语⾔学、计算机科学、数学于⼀体的科学。因此,这⼀领域的研究将涉及⾃然语⾔,即⼈们⽇常使⽤的语⾔,所以它与语⾔学的研究有着密切的联系,但⼜有重要的区别。⾃然语⾔处理并不是⼀般地研究⾃然语⾔,⽽在于研制能有效地实现⾃然语⾔通信的计算机系统,特别是其中的软件系统。因⽽它是计算机科学的⼀部分。'''
s=SnowNLP(text) #不只是情感分析,训练出的snownlp模型还有提取关键字,摘要等功能
iments)
print(s.keywords(3))
print(s.summary(3))
积极和消极分类
from snownlp import SnowNLP
l=["卧槽","⽜逼","他妈的","打死你","优秀","哈哈哈哈哈啊哈","好评","信不信我弄死你啊","强强强强强强强强"]
#保存情感极性值⼩于等于0.3的结果为负⾯情感结果
f1=open('','w',encoding='utf-8')
#保存情感极性值⼤于0.3的结果为正⾯情感结果
f2=open('','w',encoding='utf-8')
for j in l:
s=SnowNLP(j)
iments <=0.4:
f1.write(j+'\t'+iments)+'\n')
el:
中午好用英语怎么说大冰我不f2.write(j + '\t' + iments) + '\n')
f1.clo()
f2.clo()
将全部词语分为 积极和消极 分别加⼊到 txt ⽂件中,⼩于 0.4 的为消极,否则为积极
结果以及所得分数:
#
他妈的 0.3124999999999998
打死你 0.3150105708245242
信不信我弄死你啊 0.07091943747997087
#
卧槽 0.5
⽜逼 0.6923786120385603
优秀 0.8703703703703702
廉政口号哈哈哈哈哈啊哈 0.8684210526315791
好评 0.44578313253012036
强强强强强强强强 0.421874597530976
主要功能
中⽂分词(Character-Bad Generative Model)移动通信原理
词性标注(TnT 3-gram 隐马)
情感分析(现在训练数据主要是买卖东西时的评价,所以对其他的⼀些可能效果不是很好,待解决)⽂本分类(Naive Bayes)
转换成拼⾳(Trie树实现的最⼤匹配)
繁体转简体(Trie树实现的最⼤匹配)
提取⽂本关键词(TextRank算法)
提取⽂本摘要(TextRank算法)桂圆莲子
tf,idf
Tokenization(分割成句⼦)
⽂本相似(BM25)
训练
包括分词,词性标注,情感分析
这⾥有⼀份待训练服务类评论的带有标签的⽂本⽂件(1为好评 0为差评) 训练数据集
开始分类训练
from snownlp import ntiment
配电房管理制度import pandas as pd
def train_model():
ad_csv(r"./DataSet.csv",header=0)
train=data.iloc[:40000,[1,2]]
test=data.iloc[40000:,[1,2]]
train_neg=train.iloc[:,1][train.label==0]
train_pos=train.iloc[:,1][train.label==1]
_csv(r"./neg.csv",index=0,header=0)
_csv(r"./pos.csv",index=0,header=0)
<_csv(r"./test.csv",index=0,columns=['label','review'])
ntiment.save(r'C:/ProgramData/Miniconda3/Lib/site-packages/snownlp/ntiment/ntiment.marshal')
if __name__ == '__main__':
train_model()
结果分别加⼊到 csv ⽂件中,然后进⾏模型训练,保存的路径是默认分词模块的路径,它会覆盖掉原来的 .marshal 模型⽂件测试所得分数
冰糖雪梨银耳import pandas as pd
from snownlp import SnowNLP
from snownlp import ntiment
import Train
if __name__ == '__main__':
ad_csv(r"./test.csv")
review_list=[review for review in test['review']]
label_list=[label for label in test['label']]
list_test=[(label,review) for label,review in list(zip(label_list,review_list)) if type(review)!=float]
亳州老街for j in list_test:
print(j[1],j[0],SnowNLP(j[1]).ntiments)
nti=[SnowNLP(review).ntiments for label,review in list_test]
newnti=[]
for i in nti: #预测结果为pos的概率,⼤于0.6我们认定为积极评价
if(i>=0.6):
newnti.append(1)
el:
newnti.append(0)
counts=0
for i in range(len(list_test)):
if(newnti[i]==list_test[i][0]):
counts+=1
accuracy=float(counts)/float(len(list_test))
print("准确率为:%.2f" %accuracy)
测试得到的准确率分数是 0.9
现在就可以⽤新的模型来进⾏预测分类了
欢迎转载,但要声明出处,不然我顺着⽹线过去就是⼀拳。个⼈技术博客ky.live