whb 7 months ago
commit 64a8a05022

@ -14,6 +14,7 @@ import com.sztzjy.marketing.mapper.StuAssessmentQuestionDetailsMapper;
import com.sztzjy.marketing.mapper.StuImageRecognitionTrainingMapper;
import com.sztzjy.marketing.mapper.StuLearningAssessmentMapper;
import com.sztzjy.marketing.service.StuFiveGTrainingService;
import com.sztzjy.marketing.service.UserBehaviorProfilingAnaService;
import com.sztzjy.marketing.util.ConvertUtil;
import com.sztzjy.marketing.util.ResultEntity;
import io.swagger.annotations.Api;
@ -24,6 +25,7 @@ import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.*;
import java.util.stream.Collectors;
@ -51,6 +53,8 @@ public class StuExperimentalTrainingController {
@Autowired
private StuImageRecognitionTrainingMapper stuImageRecognitionTrainingMapper;
@Resource
UserBehaviorProfilingAnaService behaviorProfilingAnaService;
@ApiOperation("什么是大数据/获取题目")
@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;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.hankcs.hanlp.HanLP;
import com.hankcs.hanlp.seg.common.Term;
import com.sztzjy.marketing.config.Constant;
@ -88,7 +90,8 @@ public class StuDigitalMarketingModelServiceImpl implements StuDigitalMarketingM
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();
RequestBody body = RequestBody.create(mediaType, "{\"text\":\""+content+"\",\"type\":8}");
RequestBody body = RequestBody.create(mediaType, "{\"text\":\""+content+"\",\"type\":\""+id+"\"}");
Request request = new Request.Builder()
.url(commentUrl)
@ -98,8 +101,26 @@ public class StuDigitalMarketingModelServiceImpl implements StuDigitalMarketingM
.build();
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) {
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();
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) {
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) {
// 创建一个正则表达式,用于匹配所有标点符号
String punctuationPattern = "[\\p{Punct}]";
// 创建一个 Pattern 对象
Pattern pattern = Pattern.compile(punctuationPattern);
// 创建一个 Matcher 对象
Matcher matcher = pattern.matcher(originalContent);
// 使用 Matcher 的 replaceAll 方法替换所有匹配的标点符号为 ""
return matcher.replaceAll("");
private String filterPunctuation(String content) {
//标点符号
return content.replaceAll("[,。、?!:;,.?!:'“”’‘]", "");
}
@Override

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

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

Loading…
Cancel
Save