NSString 内の単語の品詞を識別するにはどうすればいいですか? 質問する

NSString 内の単語の品詞を識別するにはどうすればいいですか? 質問する

現在取り組んでいるアプリでは、 の単語の品詞を判別する必要がありますNSString

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

次のような内容です:

NSString *foo="cat";

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

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

ベストアンサー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)

ただし、これはNSLinguisticTaggeriOS 5 以降 (および Mac OS X 10.7 以降) でのみ利用可能であることに注意してください。

おすすめ記事