接着学习wvtool,实现wvtool的分词功能,话不多述,直接上代码吧!

   
   
   
   
  1. import java.io.BufferedReader;  
  2. import java.io.File;  
  3. import java.io.FileInputStream;  
  4. import java.io.FileReader;  
  5. import java.io.InputStream;  
  6. import java.io.InputStreamReader;  
  7. import java.io.Reader;  
  8. import java.io.StringReader;  
  9.  
  10. import edu.udo.cs.wvtool.config.WVTConfiguration;  
  11. import edu.udo.cs.wvtool.generic.inputfilter.SelectingInputFilter;  
  12. import edu.udo.cs.wvtool.generic.loader.UniversalLoader;  
  13. import edu.udo.cs.wvtool.generic.tokenizer.NGramTokenizer;  
  14. import edu.udo.cs.wvtool.generic.tokenizer.SimpleTokenizer;  
  15. import edu.udo.cs.wvtool.generic.wordfilter.StopWordFilterFile;  
  16. import edu.udo.cs.wvtool.main.WVTDocumentInfo;  
  17. import edu.udo.cs.wvtool.util.TokenEnumeration;  
  18.  
  19. /*  
  20.  * 这个程序实现把html文档解码成纯文本的形式,并进行分词  
  21.  * 原html文档:text.html  
  22.  * 内容:  
  23.  
  24.       
  25.         雅虎新闻 </span> </span></li> <li><span><span class="comment">          
  26.       
  27.       
  28.         这是测试文档。  
  29.       
  30.  
  31.  * */ 
  32.  
  33. public class Demo01_1 {  
  34.     public static String pathString="D:\\工作管理\\weka学习\\wvtool-1.1\\wvtool-1.1\\examples\\data\\";  
  35.     public static void main(String[] args) throws Exception {  
  36.         /*  
  37.          * 1、实例化一个加载器  
  38.          * */ 
  39.         UniversalLoader loader=new UniversalLoader();  
  40.         /*  
  41.          * 2、实例化一个文档信息类  
  42.          * */ 
  43.         WVTDocumentInfo info=new WVTDocumentInfo(pathString+"text.html""html""utf-8""chinese");  
  44.         /*  
  45.          * 3、把文档以输入流的方式加载到内存中  
  46.          * */ 
  47.         InputStream stream=loader.loadDocument(info);  
  48.         /*  
  49.          * 4、实例化一个过滤器  
  50.          * InputFilter that automatically selects an appropriate filter   
  51.          * according to the the file ending. The following rules are used.  
  52.          * HTM, HTML, htm, html -> SimpleTagIgnoringReader  
  53.          *XML, xml -> XMLInputFilter  
  54.          *PDF, pdf -> PDFInputFilter  
  55.          *all other -> TextInputFilter  
  56.          * */ 
  57.         SelectingInputFilter filter=new SelectingInputFilter();  
  58.         /*  
  59.          * 5、把html文档进行解码成纯文本文件  
  60.          * */ 
  61.         Reader readers=filter.convertToPlainText(stream,info);  
  62.          /*  
  63.           * 6、将解码的文档输出  
  64.           * */ 
  65.         BufferedReader reader=new BufferedReader(readers);  
  66.           
  67.         String string=reader.readLine().toString();  
  68.          //由于解码出来的文档中包含了大量的空格,而且奇怪的是这些  
  69.          //空格的char值是9(十进制),所以就只能以这样的方式输出了  
  70.         string=string.replace(string.valueOf((char)9), "");  
  71.         //这里需要把string重新包装成Reader  
  72.         Reader reader2=new StringReader(string);  
  73. //      System.out.println(string);  
  74.         //结果:?雅虎新闻这是测试文档。  
  75.         /*  
  76.          * 7、分词  
  77.          * 我个人觉得这个分词其实很弱,好像只是依据你所设定的规则把句子断开,而不是真正意义上的分词  
  78.          * */ 
  79.         NGramTokenizer tokenizer=new NGramTokenizer(2,new SimpleTokenizer());  
  80.           
  81.         TokenEnumeration enumeration=tokenizer.tokenize(reader2, info);  
  82.           
  83.         while(enumeration.hasMoreTokens()){  
  84.             System.out.print(enumeration.nextToken()+"|");  
  85.         }  
  86.     //结果: 雅虎|虎新|新闻|闻这|这是|是测|测试|试文|文档|   }  
  87. }  

现在想想,其实还真不怎么难……

      如果真的想实现文本的分词,我个人觉得IK_Analyzer和ICT_CLAS不错,特别是ICT_CLAS,不仅分词,还实现了词性的标注,人名的识别!