数字营销实训算法第三轮修改

master
@t2652009480 7 months ago
parent 3784b2134e
commit d4b1aecafa

@ -14,6 +14,7 @@ import com.sztzjy.marketing.mapper.StuAssessmentQuestionDetailsMapper;
import com.sztzjy.marketing.mapper.StuImageRecognitionTrainingMapper; import com.sztzjy.marketing.mapper.StuImageRecognitionTrainingMapper;
import com.sztzjy.marketing.mapper.StuLearningAssessmentMapper; import com.sztzjy.marketing.mapper.StuLearningAssessmentMapper;
import com.sztzjy.marketing.service.StuFiveGTrainingService; import com.sztzjy.marketing.service.StuFiveGTrainingService;
import com.sztzjy.marketing.service.UserBehaviorProfilingAnaService;
import com.sztzjy.marketing.util.ConvertUtil; import com.sztzjy.marketing.util.ConvertUtil;
import com.sztzjy.marketing.util.ResultEntity; import com.sztzjy.marketing.util.ResultEntity;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@ -24,6 +25,7 @@ import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -51,6 +53,8 @@ public class StuExperimentalTrainingController {
@Autowired @Autowired
private StuImageRecognitionTrainingMapper stuImageRecognitionTrainingMapper; private StuImageRecognitionTrainingMapper stuImageRecognitionTrainingMapper;
@Resource
UserBehaviorProfilingAnaService behaviorProfilingAnaService;
@ApiOperation("什么是大数据/获取题目") @ApiOperation("什么是大数据/获取题目")
@GetMapping("/bigDataTopic") @GetMapping("/bigDataTopic")
@ -230,7 +234,7 @@ public class StuExperimentalTrainingController {
} }
// stuDigitalIndustrializationService.practicalTrainingSubmission(answers.get(0).getUserId(),"大数据","什么是大数据",count); behaviorProfilingAnaService.practicalTrainingSubmission(answers.get(0).getUserId(),"什么是大数据",count);

@ -1,6 +1,8 @@
package com.sztzjy.marketing.service.impl; package com.sztzjy.marketing.service.impl;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.hankcs.hanlp.HanLP; import com.hankcs.hanlp.HanLP;
import com.hankcs.hanlp.seg.common.Term; import com.hankcs.hanlp.seg.common.Term;
import com.sztzjy.marketing.config.Constant; import com.sztzjy.marketing.config.Constant;
@ -88,7 +90,8 @@ public class StuDigitalMarketingModelServiceImpl implements StuDigitalMarketingM
if(modelType.equals(Constant.COMMENT_EXTRACTION)){ //评论观点抽取 if(modelType.equals(Constant.COMMENT_EXTRACTION)){ //评论观点抽取
String commentUrl = "https://aip.baidubce.com/rpc/2.0/nlp/v2/comment_tag?charset=UTF-8&access_token="+ getAccessToken(); String commentUrl = "https://aip.baidubce.com/rpc/2.0/nlp/v2/comment_tag?charset=UTF-8&access_token="+ getAccessToken();
RequestBody body = RequestBody.create(mediaType, "{\"text\":\""+content+"\",\"type\":8}");
RequestBody body = RequestBody.create(mediaType, "{\"text\":\""+content+"\",\"type\":\""+id+"\"}");
Request request = new Request.Builder() Request request = new Request.Builder()
.url(commentUrl) .url(commentUrl)
@ -98,8 +101,26 @@ public class StuDigitalMarketingModelServiceImpl implements StuDigitalMarketingM
.build(); .build();
Response response = HTTP_CLIENT.newCall(request).execute(); Response response = HTTP_CLIENT.newCall(request).execute();
String string = response.body().string();
// Gson对象
Gson gson = new Gson();
Map<String, Object> data = gson.fromJson(string, new TypeToken<Map<String, Object>>(){}.getType());
// Object object = data.get("items");
//
//
// if(object instanceof List){
// ArrayList<String> tagList = (ArrayList<String>) object;
// if (tagList.isEmpty()) {
// return new ResultEntity(HttpStatus.ACCEPTED,"请重新选择评论类型");
// }
// }
if(data.containsKey("error_msg")){
return new ResultEntity(HttpStatus.ACCEPTED,"评论异常");
}
if (response.body() != null) { if (response.body() != null) {
return new ResultEntity(HttpStatus.OK,"成功",response.body().string()); return new ResultEntity(HttpStatus.OK, "成功", string);
}else {
return new ResultEntity(HttpStatus.ACCEPTED,"评论异常");
} }
} }
@ -114,8 +135,17 @@ public class StuDigitalMarketingModelServiceImpl implements StuDigitalMarketingM
.build(); .build();
Response response = HTTP_CLIENT.newCall(request).execute(); Response response = HTTP_CLIENT.newCall(request).execute();
String string = response.body().string();
// Gson对象
Gson gson = new Gson();
Map<String, Object> data = gson.fromJson(string, new TypeToken<Map<String, Object>>(){}.getType());
if(data.containsKey("error_msg")){
return new ResultEntity(HttpStatus.ACCEPTED,"评论异常");
}
if (response.body() != null) { if (response.body() != null) {
return new ResultEntity(HttpStatus.OK, "成功", response.body().string()); return new ResultEntity(HttpStatus.OK, "成功", string);
} }
@ -171,15 +201,9 @@ public class StuDigitalMarketingModelServiceImpl implements StuDigitalMarketingM
} }
// 过滤标点符号的函数 // 过滤标点符号的函数
private String filterPunctuation(String originalContent) { private String filterPunctuation(String content) {
// 创建一个正则表达式,用于匹配所有标点符号 //标点符号
String punctuationPattern = "[\\p{Punct}]"; return content.replaceAll("[,。、?!:;,.?!:'“”’‘]", "");
// 创建一个 Pattern 对象
Pattern pattern = Pattern.compile(punctuationPattern);
// 创建一个 Matcher 对象
Matcher matcher = pattern.matcher(originalContent);
// 使用 Matcher 的 replaceAll 方法替换所有匹配的标点符号为 ""
return matcher.replaceAll("");
} }
@Override @Override

@ -41,7 +41,7 @@ public class Apriori {
} }
result.add(rowData); result.add(rowData);
} }
System.out.println("\nD:" + result); // System.out.println("\nD:" + result);
return result; return result;
} }
// public static ArrayList<ArrayList<String>> readTable(MultipartFile file) { // public static ArrayList<ArrayList<String>> readTable(MultipartFile file) {
@ -161,10 +161,10 @@ public class Apriori {
} }
str = C.toString(); str = C.toString();
System.out.println("候选"+t+"项集C: \n"+C); // System.out.println("候选"+t+"项集C: \n"+C);
// 二、剪枝步 // 二、剪枝步
pruning(C, L,min_support); pruning(C, L,min_support);
System.out.println("频繁"+t+"项集L: \n"+L+"\n"); // System.out.println("频繁"+t+"项集L: \n"+L+"\n");
str = L.toString(); str = L.toString();
//System.out.println("==="); //System.out.println("===");
@ -219,55 +219,64 @@ public class Apriori {
List<String> lists=new ArrayList<>(); List<String> lists=new ArrayList<>();
for (ArrayList<String> key : L_ALL.keySet()) {// 对最终的关联集各个事件进行判断 for (ArrayList<String> key : L_ALL.keySet()) {// 对最终的关联集各个事件进行判断
ArrayList<ArrayList<String>> key_allSubset = getSubset(key); if (key != null && !key.isEmpty() && L_ALL != null) {
//得到所有频繁集中每个集合的子集 ArrayList<ArrayList<String>> key_allSubset = getSubset(key);
// System.out.println(key_allSubset); //得到所有频繁集中每个集合的子集
for (int i = 0; i < key_allSubset.size(); i++) { // System.out.println(key_allSubset);
ArrayList<String> item_pre = key_allSubset.get(i);//得到一个真子集 for (int i = 0; i < key_allSubset.size(); i++) {
if (0 < item_pre.size() && item_pre.size() < key.size()) {// 判断是否是非空真子集 ArrayList<String> item_pre = key_allSubset.get(i);//得到一个真子集
// 各个非空互补真子集之间形成关联事件 if(item_pre.size()>1){
double item_pre_support = L_ALL.get(item_pre);//得到真子集的支持度度 continue;
//System.out.println("itempre="+item_pre_support); }
for (int j = 0; j < key_allSubset.size(); j++) { if(item_pre.isEmpty()){
ArrayList<String> item_post = key_allSubset.get(j); continue;
if (0 < item_post.size() }
&& item_post.size() < key.size() if (0 < item_pre.size() && item_pre.size() < key.size()) {// 判断是否是非空真子集
&& arrayListUnion(item_pre, item_post).equals(key) // 各个非空互补真子集之间形成关联事件
&& intersectionIsNull(item_pre, item_post)) double item_pre_support = L_ALL.get(item_pre);//得到真子集的支持度度
//不相交的两个非空真子集,相并为频繁项集 //System.out.println("itempre="+item_pre_support);
{ for (int j = 0; j < key_allSubset.size(); j++) {
double d = L_ALL.get(arrayListUnion(item_pre, item_post)); ArrayList<String> item_post = key_allSubset.get(j);
//double item_post_support = L_ALL.get(item_post);// 互补真子集的支持度比则是事件的置信度 if (0 < item_post.size()
//System.out.println("item_post="+item_post_support); && item_post.size() < key.size()
double confident = d && arrayListUnion(item_pre, item_post).equals(key)
/ item_pre_support; // 事件的置信度 && intersectionIsNull(item_pre, item_post))
if (confident > min_confident) {// 如果事件的置信度大于最小置信度 //不相交的两个非空真子集,相并为频繁项集
//封装对象返回 {
double d = L_ALL.get(arrayListUnion(item_pre, item_post));
//double item_post_support = L_ALL.get(item_post);// 互补真子集的支持度比则是事件的置信度
//System.out.println("item_post="+item_post_support);
double confident = d
/ item_pre_support; // 事件的置信度
if (confident > min_confident) {// 如果事件的置信度大于最小置信度
//封装对象返回
AssociationRulesDTO associationRulesDTO=new AssociationRulesDTO(); AssociationRulesDTO associationRulesDTO=new AssociationRulesDTO();
associationRulesDTO.setCorrelation(item_pre); associationRulesDTO.setCorrelation(item_pre);
associationRulesDTO.setAssociated(item_post); associationRulesDTO.setAssociated(item_post);
associationRulesDTO.setConfidenceLevel(confident); associationRulesDTO.setConfidenceLevel(confident);
String string=item_pre + "==>" + item_post+"==>" + confident; String string=item_pre + "==>" + item_post+"==>" + confident;
associationRulesDTO.setRule(string); associationRulesDTO.setRule(string);
list.add(associationRulesDTO); list.add(associationRulesDTO);
System.out.print(item_pre + "==>" + item_post );// 则是一个关联事件 // System.out.print(item_pre + "==>" + item_post );// 则是一个关联事件
System.out.println("==>" + confident); // System.out.println("==>" + confident);
lists.add(string); lists.add(string);
}
} }
} }
} }
} }
} }
} }
return list; return list;
} }

@ -228,13 +228,26 @@ public class KMeansResult {
} }
int a=0;
for (ArrayList<Float> point : cluster) {
a=point.size();
}
float size = cluster.size(); float size = cluster.size();
ArrayList<Float> centroid = new ArrayList<>(); ArrayList<Float> centroid = new ArrayList<>();
centroid.add(0f); for (int i = 0; i < a; i++) {
centroid.add(sum1 / size); if(i==0){
centroid.add(sum2 / size); centroid.add(sum1 / size);
centroid.add(sum3 / size); }
centroid.add(sum4 / size); if(i==1){
centroid.add(sum2 / size);
}
if(i==2){
centroid.add(sum3 / size);
}
if(i==3){
centroid.add(sum4 / size);
}
}
return centroid; return centroid;
} }

Loading…
Cancel
Save