現在取り組んでいるアプリでは、 の単語の品詞を判別する必要があります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)
ただし、これはNSLinguisticTagger
iOS 5 以降 (および Mac OS X 10.7 以降) でのみ利用可能であることに注意してください。