一、需求说明
(1)应用背景
我们在做用户画像的时候,需要获得用户对某商品、品牌的评价记录这样的事实标签。这个值获取很麻烦,不好根据一句标语得出一个分值。


我们可以为评价的偏好得分,定义一个规则:
- 好评 --> 得 5分
- 中评 --> 得 0分
- 差评 --> 得 - 5分
(2)带来的问题
业务系统中有大量的用户商品评价,存在于商品评论表中:
| sku_id | user_id | comment |
|---|---|---|
| sku0001 | user0008 | 穿的舒服,卖家发货挺快的,服务态度也很好 |
| sku0001 | user0006 | 东西质量不错,性价比高,特别轻便,舒适透气,宝贝与描述完全一致。 |
| sku0002 | user0003 | 版型挺好看的,穿起来挺合身的。这个价买到相当值! |
| sku0003 | user0012 | 穿了没几天就坏了,客服还不理人,不会再买了! |
| … | … | … |
如何让程序,输入一句评语后,能自动判别出是好评还是中评、差评呢?
无法通过sql编程实现,必须使用机器学习算法,比如朴素贝叶斯!
二、实现步骤
- 人工收集并标注样本训练集
- 开发朴素贝叶斯算法的模型训练程序
- 开发模型的预测程序并用测试数据进行模型效果评估
- 用调好的模型,去对未知数据进行预测分类
三、关键要点
(1)特征向量化方案
- 中文分词:HanLP工具包、分词去噪 ★★★★★
- 词特征位置映射:Hash映射
- 词特征值选取:TF-IDF
(2)分类算法
- 朴素贝叶斯算法
- 预测评估 ★★
四、代码开干
(1)导入HanLP依赖
HanLP使用说明 -> 官网:http://www.hanlp.com/
<dependency>
<groupId>com.hankcs</groupId>
<artifactId>hanlp</artifactId>
<version>portable-1.7.4</version>
</dependency>
(2)不要怂
package cn.ianlou.bayes
import java.util
import com.hankcs.hanlp.HanLP
import com.hankcs.hanlp.seg.common.Term
import org.apache.log4j.{
Level, Logger}
import org.apache.spark.broadcast.Broadcast
import org.apache.spark.ml.classification.{
NaiveBayes, NaiveBayesModel}
import org.apache.spark.ml.feature.{
HashingTF, IDF, IDFModel}
import org.apache.spark.sql.{
DataFrame, Dataset, Row,

最低0.47元/天 解锁文章
2万+

被折叠的 条评论
为什么被折叠?



