博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Wvtool学习(二):实现wvtool分词功能
阅读量:5909 次
发布时间:2019-06-19

本文共 2471 字,大约阅读时间需要 8 分钟。

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

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

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

转载地址:http://lsppx.baihongyu.com/

你可能感兴趣的文章
第一篇
查看>>
poj3522Slim Span(暴力+Kruskal)
查看>>
实现程序互斥运行的几种方法
查看>>
用画刷在屏幕上写字
查看>>
Android DIY之路 (一) 指定区域多图片合成 放大 缩小 镜像 旋转 等(转)
查看>>
Spring的事务传播性与隔离级别以及实现事物回滚
查看>>
错误与技巧笔记
查看>>
SpriteBatch.Draw()的重载方法 使用
查看>>
WPF向系统发送消息 并传递结构体
查看>>
解决WCF大数据量传输 ,System.Net.Sockets.SocketException: 远程主机强迫关闭了一个现有的连接...
查看>>
使用git建立远程仓库,让别人git clone下来
查看>>
spring cloud config 入门
查看>>
java poi reader常用API汇总
查看>>
[转载]从C#开发人员到Windows Phone 7高级开发人员只需3周 – 序
查看>>
js --"说声爱你不容易"
查看>>
ELK日志分析系统
查看>>
入职一月的总结汇报
查看>>
WPF-系统托盘
查看>>
如何合理的使用工具提高效率?
查看>>
java的synchronized有没有同步的类锁?
查看>>