Как определить часть речи слова в NSString?
приложение, над которым я сейчас работаю, требует от меня определить часть речи слова в NSString
.
Итак, в основном есть библиотека / база данных / класс, к которому вы можете получить доступ в Objective C, который позволяет проверить, есть ли одно слово (в виде NSString
) является существительным, прилагательным, наречием или глаголом?
что-то вроде:
NSString *foo="cat";
if ([foo wordIsNoun]) {
//do something
};
на аналогичной, но слегка несвязанной ноте можно проверить, если два NSString
содержащий глаголы одного и того же стебля, но разного времени (ask, asking, asked и т. д.) имеют один и тот же стебель? Это было бы очень полезно.
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+).