[JAVA词形还原工具]Snowball

demo:http://snowball.tartarus.org/demo.php

jar download:http://snowball.tartarus.org/download.php (JAVA version里面有一处语法错误,自行修改后,自己动手生成jar包)

 1 /**
 2  * Project Name:1008crosslanguage
 3  * File Name:Stemmer.java
 4  * Package Name:util
 5  * Date:Oct 10, 20158:48:09 PM
 6  * Copyright (c) 2015, max_xbw@163.com All Rights Reserved.
 7  *
 8  */
 9 /**
10  * Project Name:1008crosslanguage
11  * File Name:Stemmer.java
12  * Package Name:util
13  * Date:Oct 10, 20158:48:09 PM
14  * Copyright (c) 2015, max_xbw@163.com All Rights Reserved.
15  *
16  */
17 
18 package util;
19 
20 import java.util.ArrayList;
21 import java.util.HashMap;
22 import java.util.List;
23 import java.util.Map;
24 
25 import org.tartarus.snowball.ext.englishStemmer;
26 
27 /**
28  * ClassName:Stemmer <br/>
29  * Function: TODO ADD FUNCTION. <br/>
30  * Reason: TODO ADD REASON. <br/>
31  * Date: Oct 10, 2015 8:48:09 PM <br/>
32  * 
33  * @author xubowen
34  * @version
35  * @since JDK 1.7
36  * @see
37  */
38 public class Stemmer {
39 
40     /**
41      * main:(这里用一句话描述这个方法的作用). <br/>
42      * TODO(这里描述这个方法适用条件 – 可选).<br/>
43      *
44      * @author xubowen
45      * @param args
46      * @since JDK 1.7
47      */
48     public static String stemString(String str) {
49         str = str.toLowerCase();
50         englishStemmer stemmer = new englishStemmer();
51         stemmer.setCurrent(str);
52         if (stemmer.stem()) {
53             return stemmer.getCurrent();
54         }
55         return "";
56     }
57 
58     public static List<String> stemStrList(List<String> strlist) {
59         List<String> strlisttmp = new ArrayList<String>();
60         for (String strtmp : strlist) {
61             strlisttmp.add(stemString(strtmp));
62             // System.out.println(strtmp + " ==> " + stemString(strtmp));
63         }
64         return strlisttmp;
65     }
66 
67     public static Map<String, Double> stemStrMap(Map<String, Double> strmap) {
68         Map<String, Double> strmaptmp = new HashMap<String, Double>();
69         for (Map.Entry<String, Double> entry : strmap.entrySet()) {
70             String strtmp = entry.getKey();
71             double doubletmp = entry.getValue();
72             strmaptmp.put(stemString(strtmp), doubletmp);
73             // System.out.println(strtmp + " ==> " + stemString(strtmp));
74         }
75         return strmaptmp;
76     }
77 
78     public static void main(String[] args) {
79         System.out.println(stemString("caused"));
80     }
81 }
原文地址:https://www.cnblogs.com/XBWer/p/4874590.html