20

現在作業中のアプリでは、の単語の品詞を判別する必要がありますNSString

それで、基本的に、Objective Cでアクセスできるライブラリ/データベース/クラスがあります。これにより、1つの単語(の形式NSString)が名詞、形容詞、副詞、または動詞であるかどうかを確認できますか?

次のようなもの:

NSString *foo="cat";

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

類似しているが少し無関係なメモNSStringで、同じ語幹で時制が異なる2つの動詞(ask、asking、askなど)が同じ語幹を持っているかどうかを確認することはできますか?それも非常に便利です。

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 に答える