wainshine / Chinese-Names-Corpus

中文人名语料库。人名生成器。中文姓名,姓氏,名字,称呼,日本人名,翻译人名,英文人名。可用于中文分词、人名实体识别。
https://open.namemoe.com/
Apache License 2.0
3.98k stars 994 forks source link

日本人名数据清洗分享 #4

Closed wainshine closed 5 years ago

wainshine commented 6 years ago

有博友微博发私信来问,那我就说说日文人名的清洗过程吧。

首先是语料的来源 日语人名的来源是日文维基百科,日语维基大概有100万词条,包含人名20万+。可以从维基官网免费下载到。其实也可以去几个日文人名网站抓取,不过会费劲些。 ​​

数据清洗工具 主力工具是MS SQL Server,其次用到了Excel,EmEditor。需要用到SQL和正则表达式。去除杂质时,也用到了tf-idf思想。由于日文人名的特殊性,没有用贝叶斯概率也能取到较好效果。

数据准备工作 1、日文维基百科词条; 2、日文姓氏3000个; 3、分词字典(我自己用的是500万词,网上能找到的一般是50万词左右,看缘分),交叉对比用; 4、萌名项目之前标注的一些内容。

以下为微博内容 日本的姓氏比较多,有2万多个好像,以2字3字的居多,1字的也不少,还有少数4字以上的。在网上找到了一个比较全的姓氏表(前缀),这样就省下了很多时间。为了方便处理,4字和以上的姓氏,就直接丢弃不用了。提取名(后缀)的时候,1字的姓不参与。

将2字和3字的姓分别作为前缀,从那100万维基词条中拉取一遍数据,将数据手动切分成 人名,姓(前缀),名(后缀)。并导入到一张新表中,对后缀进行group by,并导入新表,然后删除低频词。用清洗后的后缀,再从维基词条那拉取一遍数据。重复迭代两到三次即可,此时将数据合并,大概有26万左右,杂质较多。

对姓进行group by,少于5个结果的,就直接删除掉。对名进行group by,注意高频部分,如町、駅,主要用于地名,可以直接删了。查询本数据和分词词库的交集部分,按词频倒序,手工删除非人名。此时大约还剩20万词,剩下的badcase以地名居多。

然后在GitHub上找到了一个日本妹子分享的日本地名大全,https://github.com/ledyba/PlaceNameParser ,利用此数据清洗掉上万地名。此时大概剩余18万,也即我分享的那个日本人名数据。

用时大概2天半。主要原因有1、使用了网上已有的3000个日本姓氏;2、使用了萌名项目的部分成果,如不能用于人名的汉字标注;3、对于低频词/字,直接删除;4、使用了百万级的分词字典做数据参照对比;5、日本人名的特殊性。

如果没有这些,完全从头再来,大概要2个月。

如果是中文人名,上面的方法就要大打折扣了,因为中文的大姓多是单姓。tf-idf方法作用不大,建议直接上贝叶斯。

wjfz commented 5 years ago

”随机删除了部分名人姓名(一点点小私心)“ 路过,好奇删除名人姓名为什么是小私心

wainshine commented 5 years ago

”随机删除了部分名人姓名(一点点小私心)“ 路过,好奇删除名人姓名为什么是小私心

分词总库中约有150W人名,开源了120W; 中间相差的30W,有部分属于质量较差,还有部分就是特意没放出来。囧