44、NLP的其他分词功能测试

1、 命名实体识别功能测试

@Test
    public void testNer(){
        if (NER.create("ltp_data/ner.model")<0) {
            System.err.println("load failed");
            return;
        }
        List<String> words = new ArrayList<String>();
        List<String> tags = new ArrayList<String>();
        List<String> ners = new ArrayList<String>();
        words.add("中国");
        tags.add("ns");
        words.add("国际");
        tags.add("n");
        words.add("广播");
        tags.add("n");
        words.add("电台");
        tags.add("n");
        words.add("创办");
        tags.add("v");
        words.add("于");
        tags.add("p");
        words.add("1941年");
        tags.add("m");
        words.add("12月");
        tags.add("m");
        words.add("3日");
        tags.add("m");
        words.add("。");
        tags.add("wp");
        NER.recognize(words, tags, ners);
        for (int i = 0; i < words.size(); i++) {
            System.out.println(ners.get(i));
        }
        NER.release();
    }

结果如下所示

2、句法分析功能测试

/**
     * 句法分析功能测试
     */
    @Test
    public void testParser(){
        if (Parser.create("ltp_data/parser.model") < 0) {
            System.err.println("loadfailed");
            return;
        }
        List<String> words = new ArrayList<String>();
        List<String> tags = new ArrayList<String>();
        words.add("一把手");
        tags.add("n");
        words.add("亲自");
        tags.add("d");
        words.add("过问");
        tags.add("v");
        words.add("。");
        tags.add("wp");
        List<Integer> heads = new ArrayList<Integer>();
        List<String> deprels = new ArrayList<String>();

        int size = Parser.parse(words, tags, heads, deprels);

        for (int i = 0; i < size; i++) {
            System.out.print(heads.get(i) + ":" + deprels.get(i));
            if (i == size - 1) {
                System.out.println();
            } else {
                System.out.print("        ");
            }
        }
        Parser.release();
    }

结果:

4、语义角色标注功能测试

@Test
    public void testSrl(){
        SRL.create("ltp_data/srl");
        ArrayList<String> words = new ArrayList<String>();
        words.add("一把手");
        words.add("亲自");
        words.add("过问");
        words.add("。");
        ArrayList<String> tags = new ArrayList<String>();
        tags.add("n");
        tags.add("d");
        tags.add("v");
        tags.add("wp");
        ArrayList<String> ners = new ArrayList<String>();
        ners.add("O");
        ners.add("O");
        ners.add("O");
        ners.add("O");
        ArrayList<Integer> heads = new ArrayList<Integer>();
        heads.add(2);
        heads.add(2);
        heads.add(-1);
        heads.add(2);
        ArrayList<String> deprels = new ArrayList<String>();
        deprels.add("SBV");
        deprels.add("ADV");
        deprels.add("HED");
        deprels.add("WP");
        List<Pair<Integer, List<Pair<String, Pair<Integer, Integer>>>>> srls = new ArrayList<Pair<Integer, List<Pair<String, Pair<Integer, Integer>>>>>();
        SRL.srl(words, tags, ners, heads, deprels, srls);
        for (int i = 0; i < srls.size(); ++i) {
            System.out.println(srls.get(i).first + ":");
            for (int j = 0; j < srls.get(i).second.size(); ++j) {
                System.out.println("   tpye = "
                        + srls.get(i).second.get(j).first + " beg = "
                        + srls.get(i).second.get(j).second.first + " end = "
                        + srls.get(i).second.get(j).second.second);
            }
        }
        SRL.release();
    }

结果如下图所示:

 下面插入一段原网站的分词示例

分词依据

 http://www.ltp-cloud.com/intro/#pos_how    具体大家可以来前边这个网址中查看分类依据,感觉哈工大讲得很牛呀!

词性标注

词性标注(Part-of-speech Tagging, POS)是给句子中每个词一个词性类别的任务。 这里的词性类别可能是名词、动词、形容词或其他。 下面的句子是一个词性标注的例子。 其中,v代表动词、n代表名词、c代表连词、d代表副词、wp代表标点符号。

国务院/ni 总理/n 李克强/nh 调研/v 上海/ns 外高桥/ns 时/n 提出/v ,/wp 支持/v 上海/ns 积极/a 探索/v 新/a 机制/n 。/wp
词性作为对词的一种泛化,在语言识别、句法分析、信息抽取等任务中有重要作用。 比方说,在抽取“歌曲”的相关属性时,我们有一系列短语:
儿童歌曲
欢快歌曲
各种歌曲
悲伤歌曲






原文地址:https://www.cnblogs.com/weizhen/p/6195957.html