iphone objective-c ios linguistics

iphone - ¿Cómo identifico la parte del discurso de una palabra dentro de una NSString?



objective-c ios (1)

¡Puedes hacer esto con un NSLinguisticTagger ! Nunca he usado uno antes, pero he hackeado esto juntos:

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];

Cuando ejecutas esto, registra:

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

Sin embargo, NSLinguisticTagger que NSLinguisticTagger solo está disponible en iOS 5+ (y Mac OS X 10.7+).

La aplicación en la que estoy trabajando actualmente me obliga a determinar la parte del discurso de una palabra en NSString .

Entonces, básicamente, ¿hay una biblioteca / base de datos / clase a la que puede acceder en el Objetivo C que le permite a uno verificar si una sola palabra (en forma de NSString ) es un sustantivo, un adjetivo, un adverbio o un verbo?

Algo a lo largo de las líneas de:

NSString *foo="cat"; if ([foo wordIsNoun]) { //do something };

En una nota similar pero ligeramente no relacionada, ¿es posible verificar si dos NSString contienen verbos del mismo vástago pero tiempo diferente (preguntar, preguntar, preguntar, etc.) tienen el mismo vástago? Sería muy útil también.