人名识别
Mynlp的人名识别是基于结构化感知机、序列标注模型的实现。独特之处在于特征函数和Label的设计和其他NLP工具的差别。
该人名识别算法是基于字符输入的,也就是说不需要预先分词,直接从文本中提取人名,
天然具有歧义识别。在PKU数据集上,最终F1达94.91,如果剔除古汉语人名的影响,F1可以更高。
Mynlp项目地址:
https://github.com/mayabot/mynlp
调用非常简单
<dependency>
<groupId>com.mayabot.mynlp</groupId>
<artifactId>mynlp-segment</artifactId>
<version>3.0.0</version>
</dependency>
PerceptronPersonNameService pps = Mynlps.instanceOf(PerceptronPersonNameService.class);
List<PersonName> names = pps.findName(" 黄英男 12345328978 湖南娄底双峰A街道华洪水大厦A座102");
List<PersonName> names2 = pps.findName("小明送给张贺年老师一张贺年卡");
System.out.println(names);
System.out.println(names2);
输出:
[PersonName(name=黄英男, offset=1)]
[PersonName(name=小明, offset=0), PersonName(name=张贺年, offset=4)]
注意:在第二句实例中,有两次出现(张贺年),自动判断第二个不是人名。
该模型大小为11.5M,内存占用45M。