想法:一直以来,我曾今想过,我们的出来的商业评论如何确定和判断他的情感因素?如何根据文本来将某条记录打上对应的标签,仅仅靠一个分类??
安装:https://pypi.org/project/snownlp/0.12.3/#files 下载完可安装
1.pip install snownlp==0.12.3
2.python setup.py install
from snownlp import SnowNLP
s = SnowNLP(u'曾经有一份真诚的爱情放在我面前,我没有珍惜,等我失去的时候我才后悔莫及,人世间最痛苦的事莫过于此。如果上天能够给我一个再来一次的机会,我会对那个女孩子说三个字:我爱你。如果非要在这份爱上加上一个期限,我希望是……一万年!')
s.words
print (s.words) #分词
print (s.pinyin) #转拼音
print (s.sentiments)#情感系数
print (s.keywords(4))#关键词提取
print (s.summary(3))#自动文摘
print ("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++")
print (s.sentences) #句子切分
案例:
import pandas as pd
from snownlp import sentiment
from snownlp import SnowNLP # 情感分析包,可以自己建立对应的模型
def type_class(text):
if text > 0.8:
text = '好评'
elif text >0.5:
text = '中评'
else:
text= "差评"
return text
#抓取的评论数或者内容进行打标签
path = r"C:\Users\lihwa11\Desktop\2019-09-12\comment.xlsx"
#读取内容
df = pd.read_excel(path)
#应用文本分析
df['score'] = df['comment'].apply(lambda x: SnowNLP(x).sentiments)
#根据评分,调用
df['type'] = df['score'].apply(lambda x: type_class(x))
df
#从txt文档中读取评论
with open("tbpl_test.txt",'r') as f:
text = f.readlines()
#print(text)
data = []
for i in text:
pl = SnowNLP(i)
score = pl.sentiments
data.append([i,score])
#把评论和得到的情感分数写入CSV文件夹中
with open("sentiscore.csv","w",newline='') as file:
writer = csv.writer(file)
writer.writerow(['comment','sentiscore'])
for k in data:
writer.writerow(k)
时间字段处理
如果你文件里时间列的时间格式包含了日期和时间 如2017-06-04-14:13:00,则恭喜你pandas会自动识别时间格式。
假如你文件里时间列的时间格式只精确到日期 如2017-06-04,那么你将需要对该字符串进行特殊处理,也许你需要如下方法:
from dateutil import parser
df['date'] = df.date.apply(parse.parse)
或者
paat = r"C:\Users\lihwa11\Desktop\2019-09-12\1.txt"
#file = open(paat,encoding='gb18030',errors='ignore')
file = open(paat,encoding='utf-8',errors='ignore')
while True:
line = file.readline()
print(line)
s = SnowNLP(lines.decode('utf-8'))
print(s)