Objective c 目的语C中的智能句比较

Objective c 目的语C中的智能句比较,objective-c,xcode,ios4,nsstring,comparison,Objective C,Xcode,Ios4,Nsstring,Comparison,我需要在目标C中进行智能句子比较 下面对细节进行解释 我有一根主弦。我把它命名为“OriginalString” 然后我有很多字符串,我需要与原始字符串进行比较 NSString *CompareString1 = @"HOW DID EMILY DO " NSString *CompareSting = @"HOW DID YOUR FATHER" NSString *CompareString2 = @"WHAT

我需要在目标C中进行智能句子比较

下面对细节进行解释

我有一根主弦。我把它命名为“OriginalString”

然后我有很多字符串,我需要与原始字符串进行比较

             NSString *CompareString1 = @"HOW DID EMILY DO "
             NSString *CompareSting  = @"HOW DID YOUR FATHER"
             NSString *CompareString2 = @"WHAT IS YOUR EMILY"
             NSString *CompareString3 = @"THIS IS THE FAST DO ONE"
             NSString *CompareString4 = @"THIS SEARCH EMILY EXAMPLE DO"
从这5个比较中,我需要得到相对于原始字符串(学生EMILY今天表现如何)最高的字符串“EMILY表现如何”

让我告诉你一件事

如果我在比较组中有一个额外的字符串“STUDENT DO TODAY”

现在我有了比较表

             NSString *CompareString1 = @"HOW DID EMILY DO "
             NSString *CompareSting  = @"HOW DID YOUR FATHER"
             NSString *CompareString2 = @"WHAT IS YOUR EMILY"
             NSString *CompareString3 = @"THIS IS THE FAST DO ONE"
             NSString *CompareString4 = @"THIS SEARCH EMILY EXAMPLE DO"
             NSString *CompareString4 = @"HOW DID STUDENT DO TODAY"
从这6个比较中,我需要得到相对于原始字符串最高的字符串“学生今天做得怎么样”(学生EMILY今天做得怎么样)

我看过NSPredicate的“比较和喜欢”方法。然而,我没有找到任何方法来完成这个过程

任何有助于理解这一概念的人都将不胜感激


谢谢。

自然语言解析是一个困难的话题,使用简单的字符串比较方法不太可能获得好的结果。我建议寻找一个更高级别的工具包。Lion和iOS 5对此提供了少量支持。

自然语言解析是一个困难的主题,使用简单的字符串比较方法不太可能获得好的结果。我建议寻找一个更高级别的工具包。Lion和iOS 5对此提供了少量支持。

听起来像是comp sci作业。这是草率和低效的地狱,但它会工作。我相信这里有人有更好的主意来提高性能

将要搜索的短语分解为单个单词的数组:

NSArray *myWords = [myString componentsSeparatedByString:@" "];
现在myWords是每个单词的数组(没有空格)。然后,构建一个谓词,查找每个单词:

int found = 0;
for (NSString* word in myWords) {
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF like[c] %@", word];
    BOOL ok = [predicate evaluateWithObject:originalString];
    if (ok) {
      ++found;
    }
}
完成后,您将得到一个
查找结果
,您可以对每个不同的短语进行比较。最伟大的一个匹配最多的词

在这种情况下,您将以如下方式结束计数:

学生艾米丽今天过得怎么样

  • “艾米丽怎么样了”4
  • “你父亲怎么样”2
  • “你的爱米丽是什么”1
  • “这是最快的方法”1
  • “此搜索EMILY示例执行”2
  • “学生今天表现如何”5

    • 听起来像是电脑科学的家庭作业。这是草率和低效的地狱,但它会工作。我相信这里有人有更好的主意来提高性能

      将要搜索的短语分解为单个单词的数组:

      NSArray *myWords = [myString componentsSeparatedByString:@" "];
      
      现在myWords是每个单词的数组(没有空格)。然后,构建一个谓词,查找每个单词:

      int found = 0;
      for (NSString* word in myWords) {
          NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF like[c] %@", word];
          BOOL ok = [predicate evaluateWithObject:originalString];
          if (ok) {
            ++found;
          }
      }
      
      完成后,您将得到一个
      查找结果
      ,您可以对每个不同的短语进行比较。最伟大的一个匹配最多的词

      在这种情况下,您将以如下方式结束计数:

      学生艾米丽今天过得怎么样

      • “艾米丽怎么样了”4
      • “你父亲怎么样”2
      • “你的爱米丽是什么”1
      • “这是最快的方法”1
      • “此搜索EMILY示例执行”2
      • “学生今天表现如何”5

      你用什么规则来决定最接近的句子?或者这是你的问题?我没有任何规则。只是我需要得到一个“它们之间的比较,这是相对于我的原始字符串最高的”,你用什么规则来决定最接近的句子?或者这是你的问题?我没有任何规则。只是我需要得到一个“它们之间的比较,这是相对于我的原始字符串最高的”,我不知道这一点,非常棒。谢谢我想我们无法在IOS 4.3中实现它。谢谢你的精彩回复。我不知道这一点,非常棒。谢谢我想我们无法在IOS 4.3中实现它。感谢您的出色回答。如果一个单词出现“DID”,那该怎么办?我想,在我键入时,解决方案将始终从比较字符串中选择“DID”“学生EMILY今天是怎么做的当搜索时,你可以先通过一个唯一的比较器对数组进行过滤,从而从数组中删除unique,如果一个单词是“DID”,那该怎么办呢?我想在我键入时,解决方案总是从比较字符串中选择“DID”“学生EMILY今天是怎么做的?当搜索时,你可以先通过一个唯一的比较器对数组进行过滤,从而从数组中删除unique