[python] NLTK를 사용해 문장의 목적어를 추출하는 방법은 무엇인가요?
- 필요한 패키지를 가져옵니다.
import nltk from nltk import pos_tag from nltk.tokenize import word_tokenize
- 문장을 토큰화합니다.
sentence = "나는 사과를 먹었다" tokens = word_tokenize(sentence)
- 토큰에 대해 품사 태깅을 수행합니다.
tagged_tokens = pos_tag(tokens)
- 목적어를 추출합니다.
grammar = "NP: {<DT>?<JJ>*<NN>}" # 명사구 패턴 정의 cp = nltk.RegexpParser(grammar) result = cp.parse(tagged_tokens) for subtree in result.subtrees(): if subtree.label() == "NP": print(" ".join([token[0] for token in subtree.leaves()]))
위 코드에서, 토큰화를 위해 word_tokenize()
함수를 사용하고, 품사 태깅을 위해 pos_tag()
함수를 사용합니다. 목적어를 추출하기 위해 정규 표현식을 사용한 구문 분석을 수행하고, 결과를 subtrees()
메서드로 반복적으로 확인하여 명사구를 찾습니다.
참고: NLTK는 품사 태깅 결과에 대해 문맥에 따라 정확하지 않을 수 있습니다. 더 정확한 결과를 위해서는 더 정교한 토큰화와 품사 태깅 기법을 사용해야 합니다.