【问题标题】:Heuristics for splitting full names拆分全名的启发式方法
【发布时间】:2013-03-24 10:44:45
【问题描述】:

将全名拆分为名字和姓氏是一个无法解决的问题,因为names are really, really complicated。因此,我的模型代表了一本书的作者和其他贡献者,包括 namefilingName 字段,其中 filingName 通常应该是“Last, First”(对于西方名字)。

但是,为了方便我的用户,我想让我的应用在用户填写常规名称时对归档名称做出合理的猜测。当然,如果猜错了,用户可以编辑文件名,但如果我猜对了,我会为他们节省一些时间。目前我只是假设最后一个以空格分隔的“单词”是姓氏,并用逗号将其移到前面:

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:@" "]];

我可以立即想到一种情况,这会让我误入歧途:像“Jr”这样的后缀。但我敢肯定还有很多其他人。是否有任何好的资源来解释常见的命名注意事项,或者解决这个问题的代码的好例子,我可以用来改进我的启发式方法?我在 Mac 上使用 Objective-C(以防框架的某个不起眼的角落可以帮助我),但我愿意学习用任何语言编写的代码。

这类问题有beenaskedbefore,但大多数答案要么集中在拆分字符串的机制上,要么转向“以不同方式设计模型”。我正在以不同的方式设计我的模型;我只是想让计算机为他们完成大部分用户的工作。

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

  • name 中应该只有一个名字,因为我支持将多个作者附加到一本书。
  • 大多数名字不会有头衔,而是像“博士”这样的专业头衔。可以出现。理想情况下,这些将被丢弃,而不是作为名字的一部分。
  • 名称通常是人名,但有时可能是组织名。我完全愿意冒险修改组织名称以获得更好的人名处理。
  • 我预计我将主要处理欧洲名称,尽管检测名称的拼写 should not be difficult
  • 代码不应对用户的语言环境特别敏感。

【问题讨论】:

    标签: user-experience heuristics names


    【解决方案1】:

    当你构建一个软件系统时,总会有一些严重的问题需要耗费大量的时间。我不会对此感到困惑,因为没有没有全球命名约定或规则。我不认为要求用户输入他/她的文件名会很麻烦,因为他们会只输入一次

    恕我直言,这似乎是更简单的解决方案。

    【讨论】:

    • 将这项工作留给用户肯定会更容易。不幸的是,这不是一次性用户注册过程或类似过程的一部分。这是一个用户可能需要连续做五到十次的事情,而一个重度用户可能一天要做三到四次。它真的可以使用便利。
    • 我明白了。相反的呢?我的意思是,询问备案名称并推断名称,这可能会更容易。我想你提到的那些重度用户无论如何都必须输入它们中的任何一个......
    • 几个原因。 1:虽然会有一些重度用户,但也会有很多临时用户(每隔几个月一本书),他们会觉得输入名字更自然。 2:如果用户不理解“文件名”的含义,自动填充将显示他们,即使自动填充的名称不正确。 3:归档名称包含更多的结构信息,但名称实际上包含更多的命名信息。例如,名称“Rev. Dr. Martin Luther King, Jr.”文件名称为“King, Martin Luther, Jr.”——译文中删除了标题。
    猜你喜欢
    • 2022-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-20
    • 2013-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多