fudanNLP(fnlp)添加自定义字典

来源:互联网 发布:崛起平台网络兼职 编辑:程序博客网 时间:2024/04/28 14:10

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定语 定语 并列 关联 定语 定语 主语 状语 定语 宾语 标点 主语 核心词 数量 的字结构 的字结构 补语 补语 定语 补语 补语

很明显,在加了词典后,‘华兴资本’这个公司名被识别出来了

0 0
原创粉丝点击