这个是统计结果
根据论文摘要中的词频统计的,词频越高,在图中显示的文字越大
通过点击图中的每一项,可以查询出相关论文的链接
要点一:词云的使用
引入相关的js文件
<script src="./js/echarts-wordcloud.js"></script>
词云的绘制
<script> var chart = echarts.init(document.getElementById('main')); var postURL = "/Diploma/getData"; var mydata = new Array(); $.ajaxSettings.async = false; $.post(postURL, {}, function(rs) { var dataList = JSON.parse(rs); for (var i = 0; i < dataList.length; i++) { var d = {}; d['name'] = dataList[i].keyword; d['value'] = dataList[i].value; mydata.push(d); } }); $.ajaxSettings.async = true; var option = { tooltip : {}, series : [ { type : 'wordCloud', gridSize : 2, sizeRange : [ 20, 50 ], rotationRange : [ -90, 90 ], shape : 'pentagon', width : 800, height : 600, drawOutOfBound : false, textStyle : { normal : { color : function() { return 'rgb(' + [ Math.round(Math.random() * 160), Math.round(Math.random() * 160), Math.round(Math.random() * 160) ] .join(',') + ')'; } }, emphasis : { shadowBlur : 10, shadowColor : '#333' } }, data : mydata } ] }; chart.setOption(option); chart.on('click', function(params) { var url = "getDiplomaLink?keyword=" + params.keyword; window.location.href = url; }); </script>
要点二:词频的统计
for(Data data:dataList) { String name = data.getPapername(); String[] keyword= name.split(" "); //提取每篇论文题目中出现的单词存入集合 names = (String[]) ArrayUtils.addAll(keywords, names); } HashMap<String, Integer> name_value = new HashMap<>(); for(String name:names) { name_value.put(name, !name_value.containsKey(name)?1:name_value.get(name)+1); //利用集合的方法判断是否存在重复的值,重复的话在原来的基础上加1 } for(String name:name_value.keySet()) { Word word = new Word();
//一般情况下有效的关键词(length>4)存入一个集合中 if(name!=null&&(name_value.get(name)>1)&&(name.length()>4)) { word.setName(name); word.setValue(name_value.get(name)); wordList.add(word); } }