HanLP-命名實體識別總結

人名識別

在HanLP中,基於角色標註識別了中國人名。首先系統利用隱馬爾可夫模型標註每個詞語的角色,之後利用最大模式匹配法對角色序列進行匹配,匹配上模式的即爲人名。理論指導文章爲:《基於角色標註的中國人名自動識別研究》,大家可以百度一下看看

地名識別

理論指導文章爲:《基於層疊隱馬爾可夫模型的中文命名實體識別》

機構名識別

機構名的理論指導文章爲:《基於角色標註的中文機構名識別》

命名實體識別Demo

/*

  • <summary></summary>
  • <author>He Han</author>
  • <email>[email protected]</email>
  • <create-date>2014/12/7 19:25</create-date>
  • <copyright file="DemoChineseNameRecoginiton.java" company="上海林原信息科技有限公司">
  • Copyright (c) 2003-2014+ 上海林原信息科技有限公司. All Right Reserved+
  • This source is subject to the LinrunSpace License. Please contact 上海林原信息科技有限公司 to get more information.
  • </copyright>
    */
    package com.hankcs.demo;

import com.hankcs.hanlp.HanLP;
import com.hankcs.hanlp.seg.Segment;
import com.hankcs.hanlp.seg.common.Term;

import java.util.LinkedList;
import java.util.List;

public class DemoNer {
// 實例化實體分詞器
public static Segment segment = HanLP.newSegment().enableNameRecognize(true).enablePlaceRecognize(true).enableOrganizationRecognize(true);

// 識別中文人名、中文地名、中文機構名
public static List<Term> recognizeNER(String text) {
    List<Term> ner_li = new LinkedList<Term>();
    List<Term> termList = segment.seg(text);
    for(Term term: termList) {
        String nature = term.nature != null ? term.nature.toString() : "空";
        if(nature.equals("nr")) {
            ner_li.add(term);
        }
        else if(nature.equals("ns")) {
            ner_li.add(term);
        }
        else if(nature.equals("nt")) {
            ner_li.add(term);
        }
    }
    return ner_li;
}

public static void main(String[] args)
{
    // 人名識別示例
    String[] test_person_case = new String[]{
            "簽約儀式前,秦光榮、李紀恆、仇和等一同會見了參加簽約的企業家。",
            "武大靖創世界紀錄奪冠,中國代表團平昌首金",
            "區長莊木弟新年致辭",
            "朱立倫:兩岸都希望共創雙贏 習朱歷史會晤在即",
            "陝西首富吳一堅被帶走 與×××妻子有交集",
            "據美國之音電臺網站4月28日報道,8歲的凱瑟琳·克羅爾(鳳甫娟)和很多華裔美國小朋友一樣,小小年紀就開始學小提琴了。她的媽媽是位虎媽麼?",
            "凱瑟琳和露西(廬瑞媛),跟她們的哥哥們有一些不同。",
            "王國強、高峯、×××、張朝陽光着頭、韓寒、小四",
            "張浩和胡健康復員回家了",
            "王總和小麗結婚了",
            "編劇邵鈞林和稽道青說",
            "這裏有關天培的有關事蹟",
            "龔學平等領導說,×××生前杜絕超生",
            "藍翔給寧夏固原市彭陽縣紅河鎮黑牛溝村捐贈了挖掘機",
            "我在上海林原科技有限公司兼職工作,",
            "我經常在臺川喜宴餐廳吃飯,",
            "偶爾去開元地中海影城看電影。",
            "不用詞典,福哈生態工程有限公司是動態識別的結果。"
    };
    for (String sentence : test_person_case)
    {
        List<Term> termList = recognizeNER(sentence);
        System.out.println(sentence + "\t" + termList.toString());
    }

}

}

【文章來源:整理自 baiziyu 的知乎專欄】

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章