实训日记8:情绪评分系统实现

之前的博客我们设计出了根据情绪对不同类型的文章进行评分的算法,现在我们使用python对其进行实现。

标准向量

为了计算出文章的情感,我们使用统计的方法,对多人,多篇文章进行阅读时的情绪采样,将人们对每个类型的文章时的情感取平均值,作为该类型的标准情感向量。最终统计的结果如下:

{'国际':[14.67, 0.163, 0.163, 1.936, 68.429, 14.67, 11.633],
 '军事':[68.429, 1.936, 11.633, 14.67, 0.163, 14.67, 0.163],
 '国内':[14.67, 0.163, 11.633, 1.936, 0.163, 68.429, 14.67],
 '台湾':[11.633, 1.936, 14.67, 14.67, 68.429, 0.163, 0.163],
 '社评':[1.936, 11.633, 0.163, 68.429, 14.67, 14.67, 0.163],
 '社会':[0.163, 14.67, 68.429, 1.936, 14.67, 11.633, 0.163],
 '海外看中国':[14.67, 68.429, 0.163, 1.936, 11.633, 14.67, 0.163]}

使用这个标准向量可以计算余弦相似度。

实现算法

根据上述算法思想,实现代码如下:

import numpy as np
#标准情绪向量
st_emotion={'国际':[14.67, 0.163, 0.163, 1.936, 68.429, 14.67, 11.633],
 '军事':[68.429, 1.936, 11.633, 14.67, 0.163, 14.67, 0.163],
 '国内':[14.67, 0.163, 11.633, 1.936, 0.163, 68.429, 14.67],
 '台湾':[11.633, 1.936, 14.67, 14.67, 68.429, 0.163, 0.163],
 '社评':[1.936, 11.633, 0.163, 68.429, 14.67, 14.67, 0.163],
 '社会':[0.163, 14.67, 68.429, 1.936, 14.67, 11.633, 0.163],
 '海外看中国':[14.67, 68.429, 0.163, 1.936, 11.633, 14.67, 0.163]}

def rate(_type,emotion):#计算评分
    emotion=np.array(emotion)
    types=_type.split('&')#获取所有类型标签
    standard=0
    for t in types:
        standard+=np.array(st_emotion[t])#相加得新的标准情绪向量
    cos=np.dot(standard,emotion)/(np.linalg.norm(standard)*np.linalg.norm(emotion))#计算余弦相似度
    rate=5*(cos+1)#映射到-10
    return rate
#print(rate('军事&社会',[1,1,1,1,1,1,1]))

这样就能根据用户的面部图像得到情绪,进而计算得到阅读评分了。

工程推进

实现算法的同时,我还负责了该模块在工程中的Service层和Dao层的代码编写、测试工作。具体工程代码可见github。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值