我正在努力推算人员数据库。对于第一遍,我正在遵循一个基本的两步过程,以避免对整个数据库进行O(n ^ 2)操作,如in the literature所述。首先,我“阻止” - 遍历整个数据集,并根据名称中存在的n-gram AND首字母对每个记录进行分区。其次,使用Jaro-Winkler比较每个箱子的所有记录,以衡量他们代表同一个人的可能性。
我的问题 - 名称是Unicode。这些名称中的一些(尽管不是很多)是CJK(中日韩)语言。我不知道如何find word boundaries这些语言中的首字母。我不知道n-gram分析是否对名称可以是2个字符的语言中的名称有效。我也不知道字符串编辑距离或其他相似性指标在这种情况下是否有效。
语言学家程序员或母语人士的任何想法?
答案 0 :(得分:2)
对于中文,大多数名字由3个字符组成:第一个字符是姓氏(!),另外两个字符是个人姓名,如
毛泽东=姓毛和个人名字泽东。
还有一些2个字符的名称,然后第一个字符是姓氏,第二个字符是个人名称。
4个字符的名称很少见,但之后的分割通常是2-2。
看到这一点,对中文名字进行n-gram分析并没有多大意义 - 你只是在研究当时最常见的中国家庭/人名。
答案 1 :(得分:1)
所以做二进制样式匹配是用日语进行搜索的常见方法,但是有更好的方法可以用来确定单词边界。在我过去曾经做过的一个项目中,mecab为日本品牌和其他一些文本提供了相当不错的结果。我想你可以通过在日本名字列表上训练来获得更好的表现。可悲的是它在C中,但我们最终在Java中通过JNI使用它,你可以在你的python代码中做类似的事情。