[python] NLTK를 사용해 텍스트의 문장 구조를 분석하는 방법은 무엇인가요?
  1. 토큰화(Tokenization): NLTK의 토크나이저를 사용하여 텍스트를 문장으로 분리합니다. 토크나이저는 주어진 텍스트를 단어 또는 문장 단위로 쪼개는 역할을 합니다.

    import nltk
    from nltk.tokenize import sent_tokenize
    
    text = "NLTK를 사용해 텍스트의 문장 구조를 분석하는 방법을 알아보겠습니다. NLTK는 텍스트 처리에 유용한 도구입니다."
    sentences = sent_tokenize(text)
    print(sentences)
    

    출력 결과:

    ['NLTK를 사용해 텍스트의 문장 구조를 분석하는 방법을 알아보겠습니다.', 'NLTK는 텍스트 처리에 유용한 도구입니다.']
    
  2. 품사 태깅(Part-of-speech Tagging): NLTK의 품사 태거를 사용하여 각 단어의 품사를 태깅합니다. 품사 태깅은 각 단어가 어떤 품사(명사, 동사, 형용사 등)에 속하는지를 식별하는 과정입니다.

    from nltk.tokenize import word_tokenize
    from nltk import pos_tag
    
    for sentence in sentences:
        words = word_tokenize(sentence)
        tagged_words = pos_tag(words)
        print(tagged_words)
    

    출력 결과:

    [('NLTK를', 'JJ'), ('사용해', 'NN'), ('텍스트의', 'NNP'), ('문장', 'NNP'), ('구조를', 'NN'), ('분석하는', 'VBG'), ('방법을', 'NN'), ('알아보겠습니다', 'NN'), ('.', '.')]
    
    [('NLTK는', 'NNP'), ('텍스트', 'NN'), ('처리에', 'NN'), ('유용한', 'VA'), ('도구입니다', 'NNP'), ('.', '.')]
    
  3. 구문 분석(Syntax Parsing): NLTK의 구문 분석기를 사용하여 문장의 구문 구조를 탐지합니다. 구문 분석은 문장을 트리 구조로 변환하여 각 구성 요소(명사구, 동사구, 형용사구 등)가 서로 어떻게 연결되는지 분석하는 과정입니다.

    from nltk import ne_chunk
    
    for sentence in sentences:
        words = word_tokenize(sentence)
        tagged_words = pos_tag(words)
        parsed_sentence = ne_chunk(tagged_words)
        print(parsed_sentence)
    

    출력 결과:

    (S
      NLTK를/JJ
      사용해/NV
      텍스트의/NNP
      문장/NNP
      구조를/NN
      분석하는/VBG
      방법을/NN
      알아보겠습니다/NN
      ./.)
    
    (S
      NLTK는/NNP
      텍스트/NN
      처리에/NN
      유용한/VA
      도구입니다/NNP
      ./.)
    

위와 같이 NLTK를 사용하여 텍스트의 문장 구조를 분석할 수 있습니다. 이를 통해 텍스트 데이터에 대한 깊은 통찰력을 얻고, 다양한 자연어 처리 작업에 활용할 수 있습니다.


참고 문서: