放牧代码和思想
专注自然语言处理、机器学习算法
    愛しさ 優しさ すべて投げ出してもいい

层叠隐马模型下的音译人名和日本人名识别

目录

命名实体中的人名识别包括中国人名音译人名日本人名。比如“北川景子参演了林诣彬导演,克里斯·摩根编剧的《速度与激情3》”“林志玲亮相网友:确定不是波多野结衣?”。

以前用三层HMM做过中国人名的识别,取得了满意的效果。这次来实现另外两种人名的自动识别。

开源项目

本文代码已集成到HanLP中开源:http://www.hankcs.com/nlp/hanlp.html

音译人名

常用字法

音译人名按照地域又可以分为欧美人名和俄罗斯人名,两者的常用字差别较大。不过,由于翻译人名中使用的汉字相对固定,所以只需整理一个常用字库就可以实现基本的识别,比如:

欧美人名常用字——

·-—阿埃艾爱安昂敖奥澳笆芭巴白拜班邦保堡鲍北贝本比毕彼别波玻博勃伯泊卜布才采仓查差柴彻川茨慈次达大戴代丹旦但当道德得登迪狄蒂帝丁东杜敦多额俄厄鄂恩尔伐法范菲芬费佛夫福弗甫噶盖干冈哥戈革葛格各根古瓜哈海罕翰汗汉豪合河赫亨侯呼胡华霍基吉及加贾坚简杰金京久居君喀卡凯坎康考柯科可克肯库奎拉喇莱来兰郎朗劳勒雷累楞黎理李里莉丽历利立力连廉良列烈林隆卢虏鲁路伦仑罗洛玛马买麦迈曼茅茂梅门蒙盟米蜜密敏明摩莫墨默姆木穆那娜纳乃奈南内尼年涅宁纽努诺欧帕潘畔庞培佩彭皮平泼普其契恰强乔切钦沁泉让热荣肉儒瑞若萨塞赛桑瑟森莎沙山善绍舍圣施诗石什史士守斯司丝苏素索塔泰坦汤唐陶特提汀图土吐托陀瓦万王旺威韦维魏温文翁沃乌吾武伍西锡希喜夏相香歇谢辛新牙雅亚彦尧叶依伊衣宜义因音英雍尤于约宰泽增詹珍治中仲朱诸卓孜祖佐伽娅尕腓滕济嘉津赖莲琳律略慕妮聂裴浦奇齐琴茹珊卫欣逊札哲智兹芙汶迦珀琪梵斐胥黛

俄罗斯人名常用字——

·-阿安奥巴比彼波布察茨大德得丁杜尔法夫伏甫盖格哈基加坚捷金卡科可克库拉莱兰勒雷里历利连列卢鲁罗洛马梅蒙米姆娜涅宁诺帕泼普奇齐乔切日萨色山申什斯索塔坦特托娃维文乌西希谢亚耶叶依伊以扎佐柴达登蒂戈果海赫华霍吉季津柯理琳玛曼穆纳尼契钦丘桑沙舍泰图瓦万雅卓兹

将连续的译名常用字合并即可得到翻译人名。

不过,就算这些字比较独特,它们依然可以组成不是译名的词语,比如“东北”“干果”等等,依靠长度过滤它们?当然不行,比如“汤姆”就很短,依靠第二层隐马模型排除它们?的确可以解决80%的问题,一般而言,越长的词语越不容易被过滤,隐马模型的特长是辨别歧义。

触发法

考虑到不加处理的情况下,第一层隐马模型的分词结果经常含有一部分正确的nrf,比如

我知道卡利斯勒出生于英格兰
[我/rr, 知道/v, 卡利斯/nrf, 勒/v, 出生于/v, 英格兰/nsf]

所以设定触发条件为出现一个nrf,接下来出现的常用字都附加到这个nrf上去——

[我/rr, 知道/v, 卡利斯勒/nrf, 出生于/v, 英格兰/nsf]

来一个比较极端的例子:

世界上最长的姓名是简森·乔伊·亚历山大·比基·卡利斯勒·达夫·埃利奥特·福克斯·伊维鲁莫·马尔尼·梅尔斯·帕特森·汤普森·华莱士·普雷斯顿。
[世界/n, 上/f, 最长/d, 的/ude1, 姓名/n, 是/vshi, 简森·乔伊·亚历山大·比基·卡利斯勒·达夫·埃利奥特·福克斯·伊维鲁莫·马尔尼·梅尔斯·帕特森·汤普森·华莱士·普雷斯顿/nrf, 。/w]

日本人名

常用字法

我看到一些分词系统依然照搬常用字法来做日本人名的识别——

安奥八白百邦保北倍本比滨博步部彩菜仓昌长朝池赤川船淳次村大代岛稻道德地典渡尔繁饭风福冈高工宫古谷关广桂贵好浩和合河黑横恒宏后户荒绘吉纪佳加见健江介金今进井静敬靖久酒菊俊康可克口梨理里礼栗丽利立凉良林玲铃柳隆鹿麻玛美萌弥敏木纳南男内鸟宁朋片平崎齐千前浅桥琴青清庆秋丘曲泉仁忍日荣若三森纱杉山善上伸神圣石实矢世市室水顺司松泰桃藤天田土万望尾未文武五舞西细夏宪相小孝新星行雄秀雅亚岩杨洋阳遥野也叶一伊衣逸义益樱永由有佑宇羽郁渊元垣原远月悦早造则泽增扎宅章昭沼真政枝知之植智治中忠仲竹助椎子佐阪坂堀荻菅薰浜濑鸠筱

事实上,效果非常差:

这是因为日本人名中的常用字同样是汉语词汇的常用字,会导致误命中率过高。

姓氏名字拆分法

依然发挥音译人名的思路,设定一个触发条件,这次将触发条件设为日语姓氏,那么接下来的常用字或常用组合都可以附加上去。

要使用这种策略,必须准备一个精美的词库。我从《千万级巨型汉语词库分享》中提取了如下几个词典作为素材——

"日本名人大合集.txt", "日剧电影动漫和日本明星.txt", "日本女优.txt", "日本AV女优(A片)EXTEND版.txt", "日本女优大全.txt"

制作出了最终的日本姓—名词典:

长谷川 x
长谷波 x
长谷田 x
长谷目 x
长谷见 x
长谷部 x
长谷野 x
良太 m
良太郎 m
良子 m
长赖 m
奈保子 m
奈保美 m

测试结果

北川景子参演了林诣彬导演,克里斯·摩根编剧的《速度与激情3》 [北川景子/nrj, 参演/v, 了/ule, 林诣彬/nr, 导演/nnt, ,/w, 克里斯·摩根/nrf, 编剧/nnt, 的/ude1, 《/w, 速度/n, 与/cc, 激情/n, 3/m, 》/w]
林志玲亮相网友:确定不是波多野结衣? [林志玲/nr, 亮相/vi, 网友/n, :/w, 确定/v, 不是/c, 波多野结衣/nrj, ?/w]

知识共享许可协议 知识共享署名-非商业性使用-相同方式共享码农场 » 层叠隐马模型下的音译人名和日本人名识别

评论 6

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #3

    hankcs9年前 (2015-11-09)回复
  2. #2

    楼主的音译名识别大概是这么做的吧,分词,然后如果一个分词碎片里面的字都命中了音译名字表,就识别成音译名字。对不?

    finallyly9年前 (2015-11-09)回复
  3. #1

    如果同时启用地名识别,就会被分成[签约/vi, 仪式/n, 前/f, ,/w, 秦光荣/nr, 、/w, 李纪恒/nr, 、/w, 仇/n, 和等一/nrj, 同/p, 会见了/nrj, 参加/v, 签约/vi, 的/ude1, 企业家/nnt, ,/w]

    liuia9年前 (2015-06-03)回复
    • nrj是日本人名,一般不用开

      hankcs9年前 (2015-06-28)回复

我的作品

HanLP自然语言处理包《自然语言处理入门》