20

我目前正在开发的应用程序要求我确定NSString.

所以基本上是否有一个库/数据库/类,您可以在 Objective C 中访问它允许检查单个单词(以 a 的形式NSString)是名词、形容词、副词还是动词?

类似于以下内容:

NSString *foo="cat";

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

在类似但稍微不相关的注释上,是否可以检查两个NSString包含相同词干但不同时态(ask、asking、asked等)的动词是否具有相同的词干?这也将非常有用。

4

1 回答 1

61

您可以使用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+)。

于 2012-02-06T21:39:03.447 回答