구글에 'bitcoin'을 검색하여 나온 뉴스들을 수집하여 각 뉴스마다 감성점수를 부여하였습니다. 그리고 비트코인 시세와 관련된 데이터를 수집하여 이들을 분석해서 의미있는 결과를 만들어 봅니다.
문장에 대해 긍정/부정/중립으로 분류하기 위한 기준을 마련하기 위하여 VADER 모델을 사용하였습니다. VADER모델은 간략한 설명으로는 소셜 미디어 텍스트의 감성 분석을 위한 Parsimonious Rule-based Model이라고 명시하고 있으며, [1]을 참고하면 좋을 것 같습니다. 혹시라도 이 모델을 사용하기 위해 코드를 가져다 연구 등에 활용하신다면 [1]을 꼭 명시해달라고 말하고 있습니다.
VADER sentiment lexicon은 소셜 미디어 텍스트에서 표현된 극성이거나 강렬한 감정에 예민하다고 합니다. 그리고 일반적으로 다른 도메인의 감성 분석에도 적용가능하다고 합니다.
감성 점수는 서로 독립적인 10명의 평가자에 의해서 신중하게 평가된 점수라고하고, 9000개의 토큰이 -4 ~ 4 까지의 점수로 그 척도가 매겨졌습니다. 절댓값이 클수로 극성입니다. 음수는 부정, 양수는 긍정입니다.
아래는 VADER 모델을 사용하여 간단하게 감성점수를 얻을 수 있는 코드 입니다.
from sentiment_lexicon import Lexicon
from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer
analyser = SentimentIntensityAnalyzer()
analyser
def sentiment_analyzer_scores(sentence):
score = analyser.polarity_scores(sentence)
print("{:-<40} {}".format(sentence, str(score)))
sentiment_analyzer_scores("bitcoin is gonna be raised because US economy is being well")
sentiment_analyzer_scores('string') 을 실행하면 'string'에 대한 감성평가 결과를 출력해주기 때문에, 고작 텍스트를 넣어 주는 것만으로 우리는 감성점수를 얻을 수 있습니다.
그러면 감성 점수를 주는 방법은 간략하게 말하면, https://github.com/cjhutto/vaderSentiment 깃헙 사이트에 있는 vader_lexicon.txt 라는 파일에는 token 별 감성 점수 수치를 적어 놓았습니다. 이를 이용하여 우리가 준 'string'을 구성하는 토큰들에게 각각 점수를 주어 합산하는 방식으로 점수를 산출해 냅니다.
reference
[1]Hutto, C.J. & Gilbert, E.E. (2014). VADER: A Parsimonious Rule-based Model for Sentiment Analysis of Social Media Text. Eighth International Conference on Weblogs and Social Media (ICWSM-14). Ann Arbor, MI, June 2014.
'NLP' 카테고리의 다른 글
비정형 데이터 - 소개 (0) | 2019.12.16 |
---|---|
구글 비트코인 뉴스 크롤링 (4) | 2019.11.29 |
IMDB 영화 댓글 크롤링 코드 (2) | 2019.11.28 |
코사인 유사도를 활용한 유사 문서 검색 (0) | 2019.11.22 |
뉴스 기사 분류 (0) | 2019.11.22 |
댓글