新增词云

master
xiaoCJ
parent 9b587e3502
commit a576f3cb53

@ -11,13 +11,12 @@ import com.hankcs.hanlp.seg.Segment;
import com.hankcs.hanlp.seg.common.Term; import com.hankcs.hanlp.seg.common.Term;
import com.ruoyi.biemo.business.domain.Category; import com.ruoyi.biemo.business.domain.Category;
import com.ruoyi.biemo.business.domain.DocInfo; import com.ruoyi.biemo.business.domain.DocInfo;
import com.ruoyi.biemo.mongodb.entity.SplitWordDrill; import com.ruoyi.biemo.business.domain.WordCloudItem;
import com.ruoyi.biemo.business.service.CategoryService; import com.ruoyi.biemo.business.service.CategoryService;
import com.ruoyi.biemo.business.service.DocInfoService; import com.ruoyi.biemo.business.service.DocInfoService;
import com.ruoyi.biemo.core.page.Page; import com.ruoyi.biemo.core.page.Page;
import com.ruoyi.biemo.core.page.PageFactory; import com.ruoyi.biemo.core.page.PageFactory;
import com.ruoyi.biemo.nlp.DependencyParserUtils; import com.ruoyi.biemo.nlp.DependencyParserUtils;
import com.ruoyi.biemo.nlp.SentimentAnalysisUtils;
import com.ruoyi.biemo.nlp.TextClassificationUtils; import com.ruoyi.biemo.nlp.TextClassificationUtils;
import com.ruoyi.biemo.utils.MyObjects; import com.ruoyi.biemo.utils.MyObjects;
import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.Log;
@ -35,7 +34,10 @@ import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.util.*; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/** /**
@ -72,6 +74,11 @@ public class DocInfoController extends BaseController {
return page; return page;
} }
@GetMapping("/getWordCloudByCateId/{categoryId}")
public AjaxResult getWordCloudByCateId(@PathVariable String categoryId){
List<WordCloudItem> wordCloudItems = docInfoService.getWordCloudByCateId(categoryId);
return AjaxResult.success(wordCloudItems);
}
/** /**
* *
*/ */
@ -414,8 +421,6 @@ public class DocInfoController extends BaseController {
return AjaxResult.error("格式不正确"); return AjaxResult.error("格式不正确");
} }
} }
// /** // /**
// * 分词结果上传 // * 分词结果上传
// * // *

@ -0,0 +1,33 @@
package com.ruoyi.biemo.business.domain;
import java.io.Serializable;
/**
* @author hujunbo
* @date 2023/6/21
*/
public class WordCloudItem implements Serializable {
private String name;
private Integer value;
public WordCloudItem() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getValue() {
return value;
}
public void setValue(Integer value) {
this.value = value;
}
}

@ -2,9 +2,12 @@ package com.ruoyi.biemo.business.service;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.util.StringUtil; import com.github.pagehelper.util.StringUtil;
import com.hankcs.hanlp.seg.common.Term;
import com.hankcs.hanlp.tokenizer.NLPTokenizer;
import com.ruoyi.biemo.business.domain.DocInfo; import com.ruoyi.biemo.business.domain.DocInfo;
import com.ruoyi.biemo.business.domain.Node; import com.ruoyi.biemo.business.domain.Node;
import com.ruoyi.biemo.business.domain.Relationship; import com.ruoyi.biemo.business.domain.Relationship;
import com.ruoyi.biemo.business.domain.WordCloudItem;
import com.ruoyi.biemo.business.domain.event.DocInfoDeleteEvent; import com.ruoyi.biemo.business.domain.event.DocInfoDeleteEvent;
import com.ruoyi.biemo.business.domain.event.DocInfoSaveEvent; import com.ruoyi.biemo.business.domain.event.DocInfoSaveEvent;
import com.ruoyi.biemo.business.response.MyResultResponse; import com.ruoyi.biemo.business.response.MyResultResponse;
@ -16,6 +19,8 @@ import com.ruoyi.biemo.nlp.SummaryUtils;
import com.ruoyi.biemo.utils.MyObjects; import com.ruoyi.biemo.utils.MyObjects;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.elasticsearch.search.SearchHit; import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.builder.SearchSourceBuilder; import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.sort.SortOrder; import org.elasticsearch.search.sort.SortOrder;
@ -27,6 +32,7 @@ import org.springframework.stereotype.Service;
import javax.print.Doc; import javax.print.Doc;
import java.util.*; import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -443,5 +449,32 @@ public class DocInfoService extends EsService<DocInfo> {
// insertOrUpdateDocInfo(docInfo); // insertOrUpdateDocInfo(docInfo);
return response; return response;
} }
public List<WordCloudItem> getWordCloudByCateId(String categoryId) {
Map<String,Integer> temp = new ConcurrentHashMap<>();
List<WordCloudItem> wordCloudItemList = new ArrayList<>();
DocInfo docInfo = new DocInfo();
docInfo.setCateId(categoryId);
List<DocInfo> docInfoList = selectDocInfoList(docInfo);
if(CollectionUtils.isNotEmpty(docInfoList)){
List<Term> termList = docInfoList.parallelStream().filter(ObjectUtils::isNotEmpty).flatMap(_docInfo -> NLPTokenizer.segment(_docInfo.getContent()).stream()).collect(Collectors.toList());
if(CollectionUtils.isNotEmpty(termList)){
termList.parallelStream().forEach(term -> {
String word = term.word;
Integer value = term.getFrequency();
if(!temp.containsKey(word)){
temp.put(word,1);
}else{
temp.put(word,temp.get(word)+1);
}
});
}
}
for(Map.Entry<String,Integer> entry : temp.entrySet()){
WordCloudItem wordCloudItem = new WordCloudItem();
wordCloudItem.setName(entry.getKey());
wordCloudItem.setValue(entry.getValue());
wordCloudItemList.add(wordCloudItem);
}
return wordCloudItemList;
}
} }

Loading…
Cancel
Save