[파이썬] nltk 음성 어조 및 강세 분석

소개

자연어 처리(NLP)는 컴퓨터가 인간의 언어를 이해하고 처리할 수 있도록 돕는 분야입니다. NLTK(Natural Language Toolkit)는 파이썬에서 자연어 처리를 위한 강력한 도구입니다.

이번 블로그 포스트에서는 NLTK를 사용하여 음성 어조와 강세 분석에 대해 알아보겠습니다. 음성 어조와 강세는 말하기의 톤과 강도를 나타내는 중요한 요소입니다. 텍스트 데이터에서 이러한 정보를 추출하는 것은 많은 NLP 응용 프로그램에 유용합니다.

NLTK 설치하기

NLTK를 사용하기 전에 먼저 설치해야 합니다. 아래의 명령어를 사용하여 NLTK를 설치할 수 있습니다.

pip install nltk

음성 어조 분석하기

음성 어조 분석은 문장의 톤을 결정하는 작업입니다. NLTK는 감성 분석기를 제공하여 문장의 감정을 추정할 수 있습니다. 예를 들어, 다음은 문장의 어조를 결정하는 간단한 코드입니다.

import nltk
from nltk.corpus import sentiwordnet

def get_sentence_sentiment(sentence):
    tokens = nltk.word_tokenize(sentence)
    tagged_tokens = nltk.pos_tag(tokens)

    sentiment_score = 0
    sentiment_count = 0

    for word, tag in tagged_tokens:
        synsets = sentiwordnet.synsets(word, pos=nltk.corpus.reader.wordnet.NOUN)
        if len(synsets) > 0:
            synset = synsets[0]
            sentiment_score += synset.pos_score() - synset.neg_score()
            sentiment_count += 1

    if sentiment_count > 0:
        average_sentiment_score = sentiment_score / sentiment_count
        if average_sentiment_score > 0:
            return "Positive"
        elif average_sentiment_score < 0:
            return "Negative"
        else:
            return "Neutral"
    else:
        return "Neutral"

위의 코드는 주어진 문장의 단어를 품사 태깅하고, WordNet에서 해당 단어의 감성 스코어를 가져와서 어조를 결정합니다. 반환 값은 “Positive”, “Negative”, “Neutral” 중 하나입니다.

강세 분석하기

강세 분석은 문장에서 단어 또는 단어의 일부에 강세를 부여하는 작업입니다. NLTK는 강세 분석을 수행할 수 있는 여러 가지 방법을 제공합니다. 예를 들어, 다음은 임의의 감성 단어에 대해 부사에 강세를 부여하는 코드입니다.

from nltk.tokenize import word_tokenize
from nltk.tag import pos_tag
from nltk import sent_tokenize, ne_chunk

def emphasize_adjectives(sentence):
    words = word_tokenize(sentence)
    tagged_words = pos_tag(words)
    
    emphasized_sentence = []
    
    for word, tag in tagged_words:
        if tag == 'JJ':
            emphasized_sentence.append(f"*{word}*")
        else:
            emphasized_sentence.append(word)
            
    return ' '.join(emphasized_sentence)

위의 코드는 주어진 문장을 토큰화하고, 품사 태깅하여 부사의 강세를 부여합니다. “*” 문자로 시작하고 끝나는 단어는 특히 강세를 부여받습니다.

결론

NLTK를 사용하여 음성 어조와 강세를 분석할 수 있습니다. 이러한 분석은 감성 분석과 음성 처리와 같은 다양한 분야에 응용될 수 있습니다. NLTK는 이를 위한 다양한 기능과 도구를 제공하므로, NLP 작업을 수행하는 데 유용한 도구로 사용될 수 있습니다.