Closed T-baby closed 8 years ago
这是空指针错误,哪个对象没有初始化?还是你加入的时候有空值?
solocode@sina.com
发件人: T-baby 发送时间: 2015-10-28 17:05 收件人: NLPchina/ansj_seg 主题: [ansj_seg] leantool报错java.lang.NullPointerException (#212) for (Entry entry : loadMap.entrySet()) { learnTool.addTerm(new NewWord(entry.getKey(), Nature.NW, entry.getValue())) ; learnTool.active(entry.getKey()) ; } 这是demo里的代码。。报错 Exception in thread "main" java.lang.NullPointerException at org.ansj.dic.LearnTool.addTerm(LearnTool.java:96) at tool.fenci.main(fenci.java:55) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140) 请问如何解决呢 — Reply to this email directly or view it on GitHub.
我就是直接复制demo里的代码进去的。。。
package tool;
import org.ansj.dic.LearnTool; import org.ansj.domain.Nature; import org.ansj.splitWord.analysis.NlpAnalysis; import org.nlpcn.commons.lang.util.IOUtil;
import java.io.FileNotFoundException; import java.io.IOException; import java.util.List; import java.util.Map.Entry;
/**
@author ansj / public class fenci { public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException {
// 构建一个新词学习的工具类。这个对象。保存了所有分词中出现的新词。出现次数越多。相对权重越大。
LearnTool learnTool = new LearnTool();
// 进行词语分词。也就是nlp方式分词,这里可以分多篇文章
NlpAnalysis.parse("说过,社交软件也是打着沟通的平台,让无数寂寞男女有了肉体与精神的寄托。", learnTool);
NlpAnalysis.parse("其实可以打着这个需求点去运作的互联网公司不应只是社交类软件与可穿戴设备,还有携程网,去哪儿网等等,订房订酒店多好的寓意", learnTool);
NlpAnalysis.parse("张艺谋的卡宴,马明哲的戏", learnTool);
// 取得学习到的topn新词,返回前10个。这里如果设置为0则返回全部
System.out.println(learnTool.getTopTree(10));
// 只取得词性为Nature.NR的新词
System.out.println(learnTool.getTopTree(10, Nature.NR));
/**
* 将训练结果序列写入到硬盘中
*/
List<Entry<String, Double>> topTree = learnTool.getTopTree(0);
StringBuilder sb = new StringBuilder();
for (Entry<String, Double> entry : topTree) {
sb.append(entry.getKey() + "\t" + entry.getValue()+"\n");
}
IOUtil.Writer("/Users/test/Documents/workspace/learnTool.snap", IOUtil.UTF8, sb.toString());
sb = null;
/**
* reload训练结果
*/
learnTool = new LearnTool() ;
HashMap<String, Double> loadMap = IOUtil.loadMap("/Users/test/Documents/workspace/learnTool.snap", IOUtil.UTF8, String.class, Double.class);
for (Entry<String, Double> entry : loadMap.entrySet()) {
learnTool.addTerm(new NewWord(entry.getKey(), Nature.NW, entry.getValue())) ;
learnTool.active(entry.getKey()) ;
}
System.out.println(learnTool.getTopTree(10));
} }
hi @T-baby
这些代码在我本地测试通过.
你可以重现这个环境 .. 1.ansj 3.0 版本.如果你下载过请重新下载 2.保证jdk是1.7及以上版本
good luck
这个已经解决了的
for (Entry<String, Double> entry : loadMap.entrySet()) { learnTool.addTerm(new NewWord(entry.getKey(), Nature.NW, entry.getValue())) ; learnTool.active(entry.getKey()) ; }
这是demo里的代码。。报错
Exception in thread "main" java.lang.NullPointerException at org.ansj.dic.LearnTool.addTerm(LearnTool.java:96) at tool.fenci.main(fenci.java:55) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
请问如何解决呢