2012-02-06 3 views
20

현재 작업중인 앱에서 단어의 품사를 결정해야합니다 (NSString).NSString 내에서 단어의 품사를 어떻게 식별합니까?

기본적으로 단일 언어 (NSString 형태)가 명사, 형용사, 부사 또는 동사인지 확인할 수있는 Objective C에서 액세스 할 수있는 라이브러리/데이터베이스/클래스가 있습니다. ? 의 라인을 따라

뭔가 : 유사하지만 약간 관련이없는 노트에

NSString *foo="cat"; 

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

, 그것이 가능 확인하는 경우 같은 줄기하지만 서로 다른 시제 (요청, 질문, 질문 등 두 NSString 포함하는 동사) 같은 줄기가 있습니까? 그것은 또한 매우 유용 할 것입니다.

+2

음 ... woa. 데이터베이스가 이미 있습니까? 아니면 언어 분석 도구를 직접 작성하고 있습니까? 그것은 괴물 답답한 일입니다. – Almo

+4

@Almo 확실히 괴물 같은 작업 ... 누군가가 이미 당신을 위해 그것을하지 않는 한! :) –

답변

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 이상).

+1

와아. 감사. 나는 그런 물건이 아이폰 OS에 존재하지 않았을 걸 것이다. 놀랐어요. –

+0

@arnauddel. 예, 그것은 꽤 산뜻합니다! 나는 아직 그것을 사용하는 좋은 이유를 찾지 못했지만, 결국에는 그것을 찾지 못했다. –

+0

Woa, cool. 다섯 – Almo

관련 문제