NLP——斯坦福分词工具简单使用
本例主要演示斯坦福的中文分词工具包stanford-segmenter.jar
下载地址
解压后如下:
创建好项目
将data文件夹导入到项目根目录下
导入jar包
SegDemo.java文件则是演示文件
注意事项
SegDemo执行的时候要读取data中的内容
查阅源代码发现,最后返回的分词集合segmented是数组转换成的(Arrays.asList()),不可进行修改。所以需要用list的构造方法重新构建一个。
下面是将代码封装好后的测试案例
package com.hhh.part;
import java.io.*;
import java.util.LinkedList;
import java.util.List;
import java.util.Properties;
import org.junit.jupiter.api.Test;
import edu.stanford.nlp.ie.crf.CRFClassifier;
import edu.stanford.nlp.ling.CoreLabel;
public class PartWord {
private static final String basedir = System.getProperty("SegDemo", "data");
public static List<String> part(String sample) throws Exception {
System.setOut(new PrintStream(System.out, true, "utf-8"));
Properties props = new Properties();
props.setProperty("sighanCorporaDict", basedir);
props.setProperty("serDictionary", basedir + "/dict-chris6.ser.gz");
props.setProperty("inputEncoding", "UTF-8");
props.setProperty("sighanPostProcessing", "true");
CRFClassifier<CoreLabel> segmenter = new CRFClassifier<>(props);
segmenter.loadClassifierNoExceptions(basedir + "/ctb.gz", props);
List<String> segmented = segmenter.segmentString(sample);
return new LinkedList<>(segmented);//重构
}
@Test
public void test1() {
try {
System.out.println(part("韩国《中央日报》则报道称,有人推测,"
+ "第二次朝美首脑会谈的时间和地点有可能定于10月下旬左右在华盛顿举行。"
+ "这一时期正好是对特朗普总统进行具有“期中考核”性质的11月6日美国中期选举之前。"
+ "若第二次朝美首脑会谈在美国举行,将成为朝鲜首脑的第一次访美。"
+ "然而正如朝鲜曾强烈要求第一次朝美首脑会谈在平壤举行一样,"
+ "此次朝鲜也有可能提出在平壤举行会谈。"));
} catch (Exception e) {
e.printStackTrace();
}
}
}