第一步肯定是导入依赖
<dependency> <groupId>org.ansj</groupId> <artifactId>ansj_seg</artifactId> <version>5.1.1</version> </dependency>
String str = "欢迎使用ansj_seg,(ansj中文分词)在这里如果你遇到什么问题都可以联系我.我一定尽我所能.帮助大家.ansj_seg更快,更准,更自由!" ;
System.out.println(ToAnalysis.parse(str));
欢迎/v,使用/v,ansj/en,_,seg/en,,,(,ansj/en,中文/nz,分词/n,),在/p,这里/r,如果/c,你/r,遇到/v,什么/r,问题/n,都/d,可以/v,联系/v,我/r,./m,我/r,一定/d,尽我所能/l,./m,帮助/v,大家/r,./m,ansj/en,_,seg/en,更快/d,,,更/d,准/a,,,更/d,自由/a,!
下面贴代码
public static void wordFrequency() throws IOException {
Map<String, Integer> map = new HashMap<>();String article = getString();
String result = ToAnalysis.parse(article).toStringWithOutNature();
String[] words = result.split(",");
for(String word: words){
String str = word.trim();
// 过滤空白字符
if (str.equals(""))
continue;
// 过滤一些高频率的符号
else if(str.matches("[)|(|.|,|。|+|-|“|”|:|?|\\s]"))
continue;
// 此处过滤长度为1的str
else if (str.length() < 2)
continue;if (!map.containsKey(word)){
map.put(word, 1);
} else {
int n = map.get(word);
map.put(word, ++n);
}
}Iterator<Map.Entry<String, Integer>> iterator = map.entrySet().iterator();
while (iterator.hasNext()){
Map.Entry<String, Integer> entry = iterator.next();
System.out.println(entry.getKey() + ": " + entry.getValue());
}
List<Map.Entry<String, Integer>> list = new ArrayList<>();
Map.Entry<String, Integer> entry;
while ((entry = getMax(map)) != null){
list.add(entry);
}System.out.println(Arrays.toString(list.toArray()));
}
/**
* 找出map中value最大的entry, 返回此entry, 并在map删除此entry
* @param map
* @return
*/
public static Map.Entry<String, Integer> getMax(Map<String, Integer> map){
if (map.size() == 0){
return null;
}
Map.Entry<String, Integer> maxEntry = null;
boolean flag = false;
Iterator<Map.Entry<String, Integer>> iterator = map.entrySet().iterator();
while (iterator.hasNext()){
Map.Entry<String, Integer> entry = iterator.next();
if (!flag){
maxEntry = entry;
flag = true;
}
if (entry.getValue() > maxEntry.getValue()){
maxEntry = entry;
}
}
map.remove(maxEntry.getKey());
return maxEntry;
}
那么有的人需求上是需要分页的,进行处理后的数据,可能分页会失效,所以用下面代码可以解决分页的问题
//subList手动分页,page为第几页,rows为每页个数
public static List<T> subList(List<T> list, int page, int rows) throws Exception{
List<T> listSort = new ArrayList<>();
int size=list.size();
int pageStart=page==1?0:(page-1)*rows;//截取的开始位置
int pageEnd=size<page*rows?size:page*rows;//截取的结束位置
if(size>pageStart){
listSort =list.subList(pageStart, pageEnd);
}
//总页数
int totalPage=list.size()/rows;
return listSort;
}