人名识别

在HanLP中,基于角色标注识别了中国人名。首先系统利用隐马尔可夫模型标注每个词语的角色,之后利用最大模式匹配法对角色序列进行匹配,匹配上模式的即为人名。理论指导文章为:《基于角色标注的中国人名自动识别研究》,大家可以百度一下看看

地名识别

理论指导文章为:《基于层叠隐马尔可夫模型的中文命名实体识别》

机构名识别

机构名的理论指导文章为:《基于角色标注的中文机构名识别》

命名实体识别Demo

/*

* <summary></summary>

* <author>He Han</author>

* <email>hankcs.cn@gmail.com</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 的知乎专栏】

最新文章

  1. 使用nodeJs安装Vue-cli
  2. Python自动化 【第九篇】:Python基础-线程、进程及python GIL全局解释器锁
  3. 往sql数据库表中添加字段
  4. acdream.郭式树(数学推导)
  5. Java 参数的一些心得
  6. ci(转)
  7. collection的框架结构
  8. SPOJ #752. Power it!
  9. DIH中添加不同的数据源
  10. 一致性哈希(consistent hashing)算法
  11. 巧用Graphviz和pvtrace等工具可视化C函数调用
  12. 【转】从底层了解ASP.NET体系结构
  13. SAP HANA学习资料大全[非常完善的学习资料汇总]
  14. Dubbo集成步骤
  15. 第48篇 字符编码探密--ASCII,UTF8,GBK,Unicode
  16. R语言-来自拍拍贷的数据探索
  17. android + php 后台开发
  18. css3多個佈局
  19. Apache Lucene全局搜索引擎入门教程
  20. python_day11

热门文章

  1. 014_编写批量修改扩展名脚本,如批量将 txt 文件修改为 doc 文件
  2. NVMe - NB的特性
  3. Vs中包含目录、库目录、附加包含目录、附加库目录、附加依赖项之详解
  4. mac 安装docker
  5. MySQL新特性文档型数据库
  6. Jmeter Web 性能测试入门 (一):环境配置 (免安装版)
  7. java课后实验性问题2
  8. php判断两个数组是否相等
  9. 从UDP的”连接性”说起–告知你不为人知的UDP
  10. [java]察看两个日期间差多少秒/小时/天