fudanNLP(fnlp)新增自定義字典
阿新 • • 發佈:2018-12-26
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
定語 定語 並列 關聯 定語 定語 主語 狀語 定語 賓語 標點 主語 核心詞 數量 的字結構 的字結構 補語 補語 定語 補語 補語
很明顯,在加了詞典後,‘華興資本’這個公司名被識別出來了