分享

使用IK Analyzer实现分词出现错误

非鱼 发表于 2015-5-5 23:16:38 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 7 32795
  1. package com.util.analyseWords;
  2. import java.io.IOException;
  3. import java.io.Reader;
  4. import java.io.StringReader;
  5. import java.util.ArrayList;
  6. import java.util.List;
  7. import org.wltea.analyzer.core.IKSegmenter;
  8. import org.wltea.analyzer.core.Lexeme;
  9. public class AnalyseWords {
  10.         private List<String> words = new ArrayList<String>();
  11.         public AnalyseWords(String query){
  12.                 Reader reader = new StringReader(query);
  13.                 IKSegmenter ik = new IKSegmenter(reader, true);
  14.                         try {
  15.                                                 Lexeme lex = null;
  16.                                                 while(true){
  17.                                                         lex = ik.next();
  18.                                                         words.add(lex.getLexemeText());
  19.                                                 }
  20.                                         } catch (NullPointerException e) {
  21.                                                 //System.out.println("--null--");
  22.                                         } catch (IOException e) {
  23.                                                 e.printStackTrace();
  24.                                         }
  25.         }
  26.         public List<String> getWords() {
  27.                 return words;
  28.         }
  29.         public void setWords(List<String> words) {
  30.                 this.words = words;
  31.         }
  32.         public static void main(String[] args) {
  33.                 AnalyseWords an = new AnalyseWords("hadoop action");
  34.                 for(String word : an.getWords()){
  35.                         System.out.println(word);
  36.                 }
  37.         }
  38. }
复制代码
错误提示空指针异常:
  1. Exception in thread "main" java.lang.ExceptionInInitializerError
  2.         at org.wltea.analyzer.core.IKSegmenter.<init>(IKSegmenter.java:63)
  3.         at com.util.analyseWords.AnalyseWords.<init>(AnalyseWords.java:16)
  4.         at com.util.analyseWords.AnalyseWords.main(AnalyseWords.java:38)
  5. Caused by: java.lang.NullPointerException
  6.         at org.wltea.analyzer.cfg.DefualtConfig.<init>(DefualtConfig.java:79)
  7.         at org.wltea.analyzer.cfg.DefualtConfig.<clinit>(DefualtConfig.java:43)
  8.         ... 3 more
复制代码

已有(7)人评论

跳转到指定楼层
howtodown 发表于 2015-5-6 01:12:20
应该是类的用法出错了,楼主可详细查查AnalyseWords 的用法

相关内容:
Lucene使用IKAnalyzer分词实例 及 IKAnalyzer扩展词库
回复

使用道具 举报

bob007 发表于 2015-5-6 01:15:58
这个方法确实没有用过
楼主能否在这个包中
import org.wltea.analyzer.core.IKSegmenter;找到AnalyseWords
如果找到了贴出他的相关方法或则参数,共同研究下
回复

使用道具 举报

非鱼 发表于 2015-5-6 11:59:35
bob007 发表于 2015-5-6 01:15
这个方法确实没有用过
楼主能否在这个包中
import org.wltea.analyzer.core.IKSegmenter;找到AnalyseWord ...

这是使用手册,Analysewords是自己定义的,里面找不到这个方法的

IKAnalyzer中文分词器V2012使用手册.pdf

828.15 KB, 下载次数: 2

回复

使用道具 举报

非鱼 发表于 2015-5-6 14:07:27
howtodown 发表于 2015-5-6 01:12
应该是类的用法出错了,楼主可详细查查AnalyseWords 的用法

相关内容:

网上找了一个示例运行,也是出现一样的错误
回复

使用道具 举报

bob007 发表于 2015-5-6 14:22:17
非鱼 发表于 2015-5-6 14:07
网上找了一个示例运行,也是出现一样的错误

这个应该是程序的逻辑错误,比如数组越界就会产生这种。楼主这个可能不是越界,但是应该是其它方面的逻辑问题
回复

使用道具 举报

非鱼 发表于 2015-5-6 15:25:36
bob007 发表于 2015-5-6 14:22
这个应该是程序的逻辑错误,比如数组越界就会产生这种。楼主这个可能不是越界,但是应该是其它方面的逻辑 ...

修改了一下,在window下面运行没有问题,在虚拟机里面就不行了
回复

使用道具 举报

非鱼 发表于 2015-5-6 16:42:05
bob007 发表于 2015-5-6 14:22
这个应该是程序的逻辑错误,比如数组越界就会产生这种。楼主这个可能不是越界,但是应该是其它方面的逻辑 ...

换了个低版本的jar包,就成功了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条