ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 감성분석 - IMDB 영화평( 비지도 학습기반 분석 )
    Python Machine Learning/텍스트 분석 2021. 1. 16. 17:29

    [ 비지도 기반 감성 분석 실습 ]

    데이터 세트가 결정된 레이블 값을 가지고 있지 않기에 Lexicon을 사용.( 한글 지원 x, 감성 사전으로 표현 가능 )

    감성 지수를 사용하며 NLTK 패키지가 대표적. ( Lexcion은 NLTK의 서브 모듈 중 하나 )

    NLP 패ㅣ지의 WordNet은 다양한 상황에서 같은 어휘라도 다르게 사용되는 어휘의 시맨틱 정보를 제공하며, 이를 위해 각각의 품사( 명사, 동사, 형용사, 부사 등)로 구성된 개별 단어를 Synset을 이용해 표현

    NLTK의 감성 사전은 예측 성능은 좋지 않은 단점 존재

     

    대표적 감성 사전

    1. sentiWordNet

    : 감성 단어 전용의 WordNet을 구현한 것으로 WordNet Synset 개념을 감성 분석에 적용한 것.

     예측 정확도가 높지않음.

     3가지 감성 점수 ( 긍정 감성 지수, 부정 감성 지수, 객관성 지수 ) 중 긍정과 부정 감성 지수를 합산하여 최종 감성 지수 계산하여 감성 결정.

     

    2. VADER

    : 소셜 미디어의 텍스트에 대한 감성 분석을 제공하기 위한 패키지로, 빠른 수행 시간을 보장해 대용량 데이터에 적합한 패키지.

     

    3. Pattern

    : 예측 성능 측면에서 가장 주목받는 패키지.

     

     

    [ VADER를 이용한 감성 분석 ]

    sentiWordNet은 예측 정확도가 높지 않은 단점이 있어 생략하고 VADER를 이용한 감성 분석 수행.

    SentimentIntensityAnalyer 클래스를 이용해 쉽게 감성 분석 제공.

     

    SentimentIntensity Analyzer 객체의 polarity_scores( ) 메서드는 딕셔너리 형태의 감성 점수 반환

    neg: 부정 감정 지수, neu: 중립 감정 지수, pos: 긍정 감정 지수, compound: 3가지 지수를 조합해 -1~1 사이 감정 지수 표현( 0.1 이상이면 긍정, 이하면 부정 감성 )

     

    vader_polarity( ) 함수 생성

    -> vader_polarity 함수는 입력 파라미터로 영화 감상평 텍스트와 긍정/부정을 결정하는 임곗값을 가지고 SentimentIntensityAnalyzer 객체의 polarity_scores( ) 메서드를 호출해 감성 결과를 반환. 또한 revies_df DataFrame의 apply lambda 식을 통해 vader_polarity( ) 함수를 호출해 각 문서별로 감성 결과를 vader_preds라는 revies_df의 새로운 칼럼으로 저장한 뒤, 저장된 감성 분석 결과를 기반으로 vader의 예측 성능 측정.

     

    -> 정확도 재현율이 SentiWordNet보다 향상된 결과를 얻음.

Designed by Tistory.