import java.io.Serializable;
import java.lang.ref.ReferenceQueue;
import java.lang.ref.WeakReference;
import java.math.BigDecimal;
import java.math.RoundingMode;/*** 商品评价算法* * @project  icomment* @fileName ProductScore.java* @Description* @author light-zhang* @date 2018年1月15日下午4:44:40* @version 1.0.0*/
public abstract class CommentUtils implements Serializable {private static final long serialVersionUID = 8143504152635422263L;/*************************** 方案一 *******************************************/private static final double baby_ratio = 0.837;// 宝贝评价计算占比(0.837/千)private static final double merchant_ratio = 0.113;// 卖家态度计算占比(0.113/千)private static final double logistics_ratio = 0.0278;// 物流评价计算占比(0.0278/万)private static final double aplatfrom_ration = 0.0037;// 平台影响分A(0.0037/万)private static final double bplatfrom_ration = 0.0185; // 平台影响分B (0.0185/万)private static final double basic_score = 4.7463;// 最高分 /**************************************************************************//*** 方案一 宝贝占比较高,防止卖假货 宝贝评价 0.837(千分比) 5 卖家态度 0.113(千分比) 4 物流服务 0.0278(万分比) 3 平台影响* 0.0037(万分比) 2 平台影响 0.0185(万分比) 1* * @return*/public static BigDecimal babyScore(int baby, int merchant, int logistics) {double value = baby * baby_ratio + (merchant - 1) * merchant_ratio + (logistics - 2) * logistics_ratio+ (2 * aplatfrom_ration) + (1 * bplatfrom_ration);final BigDecimal result = getTemp(new BigDecimal(value));if (result.doubleValue() == basic_score) {return result.setScale(0, RoundingMode.HALF_UP);}return result.setScale(1, RoundingMode.HALF_UP);}/*************************** 方案二************************************************/private static final double syn_baby_ratio = 0.35;private static final double syn_merchant_ratio = 0.25;private static final double syn_logistics_ratio = 0.35;private static final double syn_aplatfrom_ration = 0.3;private static final double syn_bplatfrom_ration = 0.2;private static final double syn_basic_score = 4.6;/**************************************************************************//*** 综合占比率 * @param baby* @param merchant* @param logistics* @return*/public static BigDecimal synthetical(int baby, int merchant, int logistics) {double value = baby * syn_baby_ratio + (merchant - 1) * syn_merchant_ratio+ (logistics - 2) * syn_logistics_ratio + 2 * syn_aplatfrom_ration + 1 * syn_bplatfrom_ration;final BigDecimal result = getTemp(new BigDecimal(value));if (result.doubleValue() == syn_basic_score) {return result.setScale(0, RoundingMode.HALF_UP);}return result.setScale(1, RoundingMode.HALF_UP);}/*** 宝贝梯度 梯度 0失望 1不满意 2一般 3满意 4惊喜 默认返回3满意* * @param avgf* @return*/public static int grads(double avgf) {return (avgf <= 1.5) ? 0: (avgf > 1.5 && avgf <= 2.3) ? 1: (avgf > 2.3 && avgf <= 3.1) ? 2: (avgf > 3.1 && avgf <= 4.0) ? 3 : (avgf > 4.0 && avgf <= 5.0) ? 4 : 3;}private static <T> T getTemp(T classOfType) {ReferenceQueue<T> queue = new ReferenceQueue<T>();WeakReference<T> weakRef = new WeakReference<T>(classOfType, queue);if (null == weakRef.get()) {weakRef = new WeakReference<T>(classOfType);}return weakRef.get();}  public static void main(String[] args) {int baby = 2;int merchant = 2;int logistics = 5;System.out.println("评测1 " + babyScore(baby, merchant, logistics));// 方案一 防止卖假货采用方案System.out.println("梯度1 >>>>> " + grads(babyScore(baby, merchant, logistics).doubleValue()));System.out.println("评测2 " + synthetical(baby, merchant, logistics));// 方案二 综合商家,宝贝,物流采用方案System.out.println("梯度2 >>>>>  " + grads(synthetical(baby, merchant, logistics).doubleValue()));}
}

/**  * 淘宝商品评价  *  * @project icomment  * @fileName ProductScore.java  * @Description  * @author light-zhang  * @date 2018年1月15日下午4:44:40  * @version 1.0.0  */ public abstract class CommentUtils implements Serializable {     private static final long serialVersionUID = 8143504152635422263L;     private static final double BABY_MAKE_UP = 0.837;// 宝贝评价计算占比(0.837/千) private static final double SELLER_MAKE_UP = 0.113;// 卖家态度计算占比(0.113/千) private static final double LOGISTICS_MAKE_UP = 0.0278;//物流评价计算占比(0.0278/万) private static final double PLATFROM_CASHA = 0.0037;// 平台影响分A(0.0037/万) private static final double PLATFROM_CASHB = 0.0185; // 平台影响分B (0.0185/万) private staticfinal double PLATFROM_BASIC = 4.7463;// 最高分/**      * 评价分计算公式 宝贝评价 0.837(千分比) 5 卖家态度 0.113(千分比) 4 物流服务 0.0278(万分比) 3 平台影响      * 0.0037(万分比) 2 平台影响 0.0185(万分比) 1      *      * @param babyMark 宝贝描述      * @param sellerMark 商家态度      * @param logisticsMark 物流服务      * @return 5分×0.837+4分×0.113+3分×0.0278+2分×0.0037+1分×0.0185 =4.7463      */ public static BigDecimal avgProductScore(int babyMark, int sellerMark, int logisticsMark) {         double value = babyMark * BABY_MAKE_UP + (sellerMark - 1) * SELLER_MAKE_UP                 + (logisticsMark - 2) * LOGISTICS_MAKE_UP + (2 * PLATFROM_CASHA) + (1 * PLATFROM_CASHB);         final BigDecimal result = new BigDecimal(value);         if (result.doubleValue() == PLATFROM_BASIC) {// 最高分 return result.setScale(0, RoundingMode.HALF_UP);         }         return result.setScale(1, RoundingMode.HALF_UP);     }     /**      * 梯度 0失望 1不满意 2一般 3满意 4惊喜 默认返回3满意      *      * @return */ public static int grads(double avgf) {         return (avgf <= 1.5) ? 0                 : (avgf > 1.5 && avgf <= 2.3) ? 1                         : (avgf > 2.3 && avgf <= 3.1) ? 2                                 : (avgf > 3.1 && avgf <= 4.0) ? 3                                         : (avgf > 4.0 && avgf <= 5.0) ? 4 : 3;     }     public static void main(String[] args) {         System.out.println(CommentUtils.avgProductScore(5, 3, 4).doubleValue());         System.out.println(CommentUtils.grads(4.5));     } }
[/** * Táobǎo shāngpǐn píngjià * * @project icomment * @fileName ProductScore.Java * @Description * @author light-zhang * @date 2018 nián 1 yuè 15 rì xiàwǔ 4:44:40 * @Version 1.0.0 */ Public abstract class CommentUtils implements Serializable { private static final long serialVersionUID = 8143504152635422263L; private static final double BABY_MAKE_UP = 0.837;// Bǎobèi píngjià jìsuàn zhàn bǐ (0.837/Qiān) private static final double SELLER_MAKE_UP = 0.113;// Màijiā tàidù jìsuàn zhàn bǐ (0.113/Qiān) private static final double LOGISTICS_MAKE_UP = 0.0278;// Wùliú píngjià jìsuàn zhàn bǐ (0.0278/Wàn) private static final double PLATFROM_CASHA = 0.0037;// Píngtái yǐngxiǎng fēn A(0.0037/Wàn) private static final double PLATFROM_CASHB = 0.0185; // Píngtái yǐngxiǎng fēn B (0.0185/Wàn) private static final double PLATFROM_BASIC = 4.7463;// Zuìgāo fēn/** * píngjià fēn jìsuàn gōngshì bǎobèi píngjià 0.837(Qiānfēnbǐ) 5 màijiā tàidù 0.113(Qiānfēnbǐ) 4 wùliú fúwù 0.0278(Wànfēn bǐ) 3 píngtái yǐngxiǎng * 0.0037(Wànfēn bǐ) 2 píngtái yǐngxiǎng 0.0185(Wànfēn bǐ) 1 * * @param babyMark bǎobèi miáoshù * @param sellerMark shāngjiā tàidù * @param logisticsMark wùliú fúwù * @return 5 fēn ×0.837+4 Fēn ×0.113+3 Fēn ×0.0278+2 Fēn ×0.0037+1 Fēn ×0.0185 =4.7463 */ Public static BigDecimal avgProductScore(int babyMark, int sellerMark, int logisticsMark) { double value = babyMark* BABY_MAKE_UP + (sellerMark - 1)* SELLER_MAKE_UP + (logisticsMark - 2)* LOGISTICS_MAKE_UP + (2* PLATFROM_CASHA) + (1* PLATFROM_CASHB); final BigDecimal result = new BigDecimal(value); if (result.DoubleValue() == PLATFROM_BASIC) {// zuìgāo fēn return result.SetScale(0, RoundingMode.HALF_UP); } return result.SetScale(1, RoundingMode.HALF_UP); } /** * tīdù 0 shīwàng 1 bù mǎnyì 2 yībān 3 mǎnyì 4 jīngxǐ mòrèn fǎnhuí 3 mǎnyì * * @return*/ public static int grads(double avgf) { return (avgf <= 1.5)? 0 : (Avgf > 1.5&& Avgf <= 2.3)? 1 : (Avgf > 2.3&& Avgf <= 3.1)? 2 : (Avgf > 3.1&& Avgf <= 4.0)? 3 : (Avgf > 4.0&& Avgf <= 5.0)? 4: 3; } Public static void main(String[] args) { System.Out.Println(CommentUtils.AvgProductScore(5, 3, 4).DoubleValue()); System.Out.Println(CommentUtils.Grads(4.5)); } }]
/**
 * Taobao product evaluation
 *
 * @project icomment
 * @fileName ProductScore.java
 * @Description
 * @author light-zhang
 * @date January 15, 2018, 4:44:40 PM
 * @version 1.0.0
 */ public abstract class CommentUtils implements Serializable {

Private static final long serialVersionUID = 8143504152635422263L;

Private static final double BABY_MAKE_UP = 0.837;// Baby evaluation calculation ratio (0.837/th) private static final double SELLER_MAKE_UP = 0.113;// Seller attitude calculation ratio (0.113/th) private static final double LOGISTICS_MAKE_UP = 0.0278;// Logistics evaluation calculation ratio (0.0278/Million) private static final double PLATFROM_CASHA = 0.0037;// Platform impact points A (0.0037/Million) private static final double PLATFROM_CASHB = 0.0185; // Platform impact points B (0.0185/Million) private static Final double PLATFROM_BASIC = 4.7463;// highest score /**
     * Evaluation score calculation formula Baby evaluation 0.837 (thousands ratio) 5 Seller attitude 0.113 (thousands ratio) 4 Logistics service 0.0278 (10,000 ratio) 3 Platform impact
     * 0.0037 (parts ratio) 2 Platform impact 0.0185 (10,000 ratio) 1
     *
     * @param babyMark baby description
     * @param sellerMark Business attitude
     * @param logisticsMark Logistics Services
     * @return 5 points × 0.837 + 4 points × 0.113 + 3 points × 0.0278 + 2 points × 0.0037 + 1 points × 0.015 = 4.7463
     */ public static BigDecimal avgProductScore(int babyMark, int sellerMark, int logisticsMark) {
        Double value = babyMark * BABY_MAKE_UP + (sellerMark - 1) * SELLER_MAKE_UP
                + (logisticsMark - 2) * LOGISTICS_MAKE_UP + (2 * PLATFROM_CASHA) + (1 * PLATFROM_CASHB);
        Final BigDecimal result = new BigDecimal(value);
        If (result.doubleValue() == PLATFROM_BASIC) {// highest score return result.setScale(0, RoundingMode.HALF_UP);
        }
        Return result.setScale(1, RoundingMode.HALF_UP);
    }

/**
     * Gradient 0 Disappointment 1 Dissatisfied 2 General 3 Satisfied 4 Surprise Default 3 Satisfied
     *
     * @return */ public static int grads(double avgf) {
        Return (avgf <= 1.5) ? 0
                : (avgf > 1.5 && avgf <= 2.3) ? 1
                        : (avgf > 2.3 && avgf <= 3.1) ? 2
                                : (avgf > 3.1 && avgf <= 4.0) ? 3
                                        : (avgf > 4.0 && avgf <= 5.0) ? 4 : 3;
    }

Public static void main(String[] args) {
        System.out.println(CommentUtils.avgProductScore(5, 3, 4).doubleValue());
        System.out.println(CommentUtils.grads(4.5));
    }
}

转载于:https://www.cnblogs.com/light-zhang/p/8349576.html

java 商品评价计算算法相关推荐

  1. java 商品评价_java 商品评价计算算法

    importjava.io.Serializable;importjava.lang.ref.ReferenceQueue;importjava.lang.ref.WeakReference;impo ...

  2. java 淘宝商品评价计算算法

    package com.zeelan.app.score;import java.io.Serializable; import java.math.BigDecimal; import java.m ...

  3. Vue.js+Mysq+java+springboot+商品推荐算法实现商品推荐网站+商品管理系统后台

    面对海量的商品信息如何实现针对不同用户维度开展个性化商品推荐,实现用户线上选购商品,下订单,支付,物流配送等?本次毕设程序基于前后端分离开发模式,搭建系统网络商品推荐系统前台与系统后台商品管理系统,通 ...

  4. 基于java与springboot结合商品推荐算法实现商品推荐网站+商品管理系统后台,mysql,vue

    面对海量的商品信息如何实现针对不同用户维度开展个性化商品推荐,实现用户线上选购商品,下订单,支付,物流配送等?本次毕设程序基于前后端分离开发模式,搭建系统网络商品推荐系统前台与系统后台商品管理系统,通 ...

  5. java hanlp分词_Hanlp分词实例:Java实现TFIDF算法

    算法介绍 最近要做领域概念的提取,TFIDF作为一个很经典的算法可以作为其中的一步处理. 关于TFIDF算法的介绍可以参考这篇博客http://www.ruanyifeng.com/blog/2013 ...

  6. Java使用动态规划算法思想解决01背包问题

    Java使用动态规划算法思想解决背包问题 背包问题是一种组合优化的NP完全问题.问题可以描述为:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高 动 ...

  7. Java 数据结构与算法系列之冒泡排序

    一.前言 相信大部分同学都已经学过数据结构与算法这门课了,并且我们可能都会发现一个现象就是我们所学过的数据结构与算法类的书籍基本都是使用 C 语言来写的,好像没见过使用 Java 写的数据结构与算法. ...

  8. Java数据结构与算法——树(基本概念,很重要)

    声明:码字不易,转载请注明出处,欢迎文章下方讨论交流. 有网友私信我,期待我的下一篇数据结构.非常荣幸文章被认可,也非常感谢你们的监督. 前言:Java数据结构与算法专题会不定时更新,欢迎各位读者监督 ...

  9. Java常见排序算法

    Java常见排序算法 转载于:https://www.cnblogs.com/hfultrastrong/p/7829889.html

最新文章

  1. SharePoint2010沙盒解决方案基础开发——关于TreeView树形控件读取列表数据(树形导航)的webpart开发及问题...
  2. Linux那些事儿 之 戏说USB(4)最终奥义
  3. DFT的准备(二)(对离散时间傅里叶变换DTFT采样)
  4. python2和python3同时存在如何使用pip
  5. Ubuntu(Linux)上安装ROS缓慢,解决方法:添加ros的国内镜像源,以及ROS安装过程使用rosdep update出现错误:‘The read operation timed out‘
  6. Linux 双网卡绑定
  7. 你听过或见过最无耻的一句话是什么?
  8. 《Python语言程序设计》二级教程课后编程题及答案
  9. oracle 授权所有语句,oracle grant 授权语句
  10. Python中文字符串,变成英文字符串
  11. 我的世界Java版最诡异的种子_我的世界:比666还诡异的故障种子,无限复制结构?官方:还是特性...
  12. centos设置东八区
  13. unity3d Daikon GUI 图片查看器 Demo 说明
  14. 如何成为有效学习的高手(笔记)
  15. Hi3798CV200DMD_VER.B SCH原理图
  16. 感觉世界变化太快...
  17. matlab中求立方根,MATLAB基础入门
  18. 计算机网络Wireshark实验-棋歌教学网
  19. jQuery整体框架
  20. linux下生成nginx证书 【超简洁步骤】

热门文章

  1. win10 子系统 ubuntu 16.04 安装 docker
  2. 逻辑门电路的知识点归纳
  3. chmod与umask区分命令
  4. 利用photoshop制作gif图片
  5. Java是值传递还是引用传递?
  6. 命令行分析java线程CPU占用
  7. 解决Genymotion下载设备失败的方法(Connection Timeout)
  8. MDK linker和debug的设置以及在RAM中调试
  9. 今天我注册博客园了,我很开心!
  10. 计算机组装维修中级试题,计算机维修工中级理论知识试卷.doc