1. 程式人生 > >fudanNLP(fnlp)新增自定義字典

fudanNLP(fnlp)新增自定義字典

fnlp

目前找到的介面方便的開源的NLP開源工具
StanfordNLP
Hanlp
FudanNLP
NLTK
LTP
由於StanfordNLP中文包配置較困難,使用fnlp做分詞加語義
考慮語義依存時,演算法幾乎都如出一轍的HMM,所以暫且認為模型引數問題可以用scale的資料量彌補。

fnlp

這是一段具有分詞,實體識別,語義依存功能的程式碼

import org.fnlp.nlp.cn.tag.POSTagger;
import org.fnlp.nlp.parser.dep.DependencyTree;
import org.fnlp.nlp.parser.dep.JointParser;
import
org.fnlp.ml.types.Dictionary; import org.fnlp.nlp.cn.tag.CWSTagger; import org.fnlp.nlp.cn.tag.NERTagger; import java.util.HashMap; //需要實現實體識別 //實現語義依存 public class function_test { private static JointParser parser; /** * @param args * @throws Exception */ public static void
main(String[] args) throws Exception { parser = new JointParser("models/dep.m"); String word = "中國進出口銀行與中國銀行深度加強合作張持良。這是一個可擴充套件的機器叢集華興資本"; test_dep(word); // test_ner(word); } /** * 測試語義依存 * 只輸入句子,不帶詞性 * @throws Exception */ private static void
test_dep(String word) throws Exception { POSTagger tag = new POSTagger("models/seg.m","models/pos.m",new Dictionary("models/dict.txt")); String[][] s = tag.tag2Array(word); try { DependencyTree tree = parser.parse2T(s[0],s[1]); System.out.println(tree.toString()); String stree = parser.parse2String(s[0],s[1],true); System.out.println(stree); } catch (Exception e) { e.printStackTrace(); } } }

output:

中國 進出口 銀行 與 中國 銀行 深度 加強 合作 張持良 。 這 是 一 個 可 擴充套件 的 機器 叢集 華興資本
地名 名詞 名詞 並列連詞 地名 名詞 名詞 動詞 名詞 人名 標點 指示詞 動詞 數詞 量詞 動詞 動詞 結構助詞 名詞 名詞 公司名
2 2 6 2 5 6 7 12 9 7 12 12 -1 14 17 17 15 12 19 12 12
定語 定語 並列 關聯 定語 定語 主語 狀語 定語 賓語 標點 主語 核心詞 數量 的字結構 的字結構 補語 補語 定語 補語 補語

很明顯,在加了詞典後,‘華興資本’這個公司名被識別出來了