Подтвердить что ты не робот

Как определить часть речи слова в NSString?

Приложение, над которым я сейчас работаю, требует от меня определения части речи слова в NSString.

Итак, в основном есть библиотека/база данных/класс, доступ к которой вы можете получить в Objective C, что позволяет проверить, является ли одно слово (в форме NSString) существительным, прилагательным, наречием или глагол?

Что-то по строкам:

NSString *foo="cat";

if ([foo wordIsNoun]) {
    //do something
};

В аналогичной, но слегка несвязанной ноте, можно ли проверить, имеют ли два NSString содержащие глаголы одного и того же стека, но разные времена (спрашивают, спрашивают, спрашивают и т.д.), имеют одинаковые основы? Это было бы очень полезно.

4b9b3361

Ответ 1

Вы можете сделать это с помощью NSLinguisticTagger! Я никогда раньше не использовал его, но я взломал это вместе:

NSString *str = @"i have a cat";

NSLinguisticTagger *tagger = [[NSLinguisticTagger alloc] initWithTagSchemes:[NSArray arrayWithObject:NSLinguisticTagSchemeLexicalClass] options:~NSLinguisticTaggerOmitWords];
[tagger setString:str];
[tagger enumerateTagsInRange:NSMakeRange(0, [str length]) 
                      scheme:NSLinguisticTagSchemeLexicalClass 
                     options:~NSLinguisticTaggerOmitWords 
                  usingBlock:^(NSString *tag, NSRange tokenRange, NSRange sentenceRange, BOOL *stop) {
                               NSLog(@"found: %@ (%@)", [str substringWithRange:tokenRange], tag);
                              }];
[tagger release];

Когда вы запустите это, он регистрирует:

found: i (Pronoun)
found: have (Verb)
found: a (Determiner)
found: cat (Noun)

Обратите внимание, однако, что NSLinguisticTagger доступен только на iOS 5+ (и Mac OS X 10.7 +).