NLP——斯坦福分詞工具簡單使用
阿新 • • 發佈:2019-01-07
本例主要演示斯坦福的中文分詞工具包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(); } } }