用于分割全名的启发式方法

时间:2013-03-24 10:44:45

标签: user-experience heuristics names

将全名拆分为名字和姓氏是一个无法解决的问题,因为names are really, really complicated。因此,我的模型代表作者和书籍的其他贡献者,包括namefilingName字段,其中filingName通常应为"最后,第一&#34 ; (西方名字)。

但是,为了方便我的用户,我希望当用户填写常规名称时,让我的应用程序对文件名称进行合理猜测。当然,如果猜测错误,用户可以编辑归档名称,但如果我猜对了,我会将它们保存一段时间。目前我只是假设最后一个以空格分隔的单词"是姓氏,并用逗号将其移到前面:

NSMutableArray * parts = [self.name componentsSeparatedByCharactersInSet:NSCharacterSet.whitespaceCharacterSet].mutableCopy;

if(parts.count < 2) {
    return self.name;
}

NSString * lastName = parts.lastObject;
[parts removeLastObject];

return [NSString stringWithFormat:@"%@, %@", lastName, [parts componentsJoinedByString:@" "]];

我可以立即想到一个案例,这会让我误入歧途:后缀如&#34; Jr&#34;。但我确定还有很多其他人。有没有什么好的资源可以解释常见的命名注意事项,或解决这个问题的代码的好例子,我可以用它来改进我的启发式?我在Mac上使用Objective-C(如果框架中有一些模糊不清的角落可以帮助我),但我愿意学习用任何语言编写的代码。

这类问题有been asked before,但大多数答案要么关注拆分字符串的机制,要么转变为&#34;设计不同的模型&#34 34 ;.我以不同的方式设计我的模型;我只是想让电脑完成大部分用户的工作。为他们工作。

正如我之前所说,此代码主要处理作者和其他书籍撰稿人的姓名。其中一些具体后果包括:

  • name中应该只有一个名称,因为我支持将多位作者附加到一本书中。
  • 大多数名字都没有头衔,但专业头衔如#34; Dr。&#34;可以出现。理想情况下,这些将被丢弃,而不是作为名字的一部分。
  • 这些名字通常是人,但有时可能属于组织。我非常愿意冒险破坏组织名称,以便更好地处理人名。
  • 我希望我会主要处理欧洲名称,但会检测名称should not be difficult的拼写法。
  • 代码不应对用户的区域设置特别敏感。

1 个答案:

答案 0 :(得分:0)

当您构建软件系统时,总会存在消耗大量时间的严重问题。我不会因为没有全球范围的命名约定或规则而受到限制。我不认为要求用户输入他/她的归档名称会很麻烦,因为他们只会一次

这似乎是恕我直言的更容易的解决方案。