상세 컨텐츠

본문 제목

범용적인 감정 분석(극성 분석)은 가능할까

프로그래밍/NLP

by ∫2tdt=t²+c 2020. 7. 8. 22:29

본문

텍스트의 긍정과 부정을 분류한다는건 생각보다 까다로운 일입니다. 사람들이 특정 대상에 대해 긍정 혹은 부정 감정을 드러낼때 직설적으로 좋다/나쁘다고 표현하는 경우도 있지만, 우회적으로 이야기하거나, 비유를 들거나, 비꼬는 경우도 많기 때문이죠. 이런 우회적인 표현 방법은 같은 언어라할지라도 분야에 따라서 크게 달라질 수 있습니다. 그래서 특정 분야에 맞춰 학습시킨 감정 분석 모델은 다른 분야에서는 형편 없는 성능을 보이는 경우가 있습니다.

그래서 대학원 다니면서 항상 고민했던게 '요 감정 분석 모델을 저 분야에 적용해도 될까?'였습니다. 더 나아가 여러 분야에서 두루두루 쓰일 수 있는 감정 분석 모델이 있으면 좋겠다는 생각도 했었구요. 이에 대해서 어떤 선배님과 논의한 적도 있는데요, 선배님은 분야별 특성에 따라 동일 언어라도 긍/부정을 표현하는 방법이 다르므로, 범용적인 감정 분석 모델을 구축하는 건 어렵고, 구축한다고 하더라도 그 성능이 높을 수가 없다는 이야기를 해주셨습니다. 

반면 저는 어느 정도 가능성이 있다는 편에 섰었구요. 우리가 아무리 낯선 분야의 텍스트를 본다고 하더라도 원어민의 촉으로 그 텍스트에서 풍기는 감정이 긍정인지 부정인지 어느 정도 예측할 수 있듯이, 잘 설계된 모델은 다른 분야의 텍스트도 만족할 정도로 분류해낼 수 있다고 생각했던 것이죠. 당연히 이 논쟁은 결론이 나지 않았습니다. 일단 여러 분야의 텍스트를 수집할 만큼 능력도 없었고, 수집된 텍스트를 가지고 감정 분석 모델을 구축할 만한 좋은 방법이 딱히 없었습니다. 당시 제가 배우고 있던 분류 모델은 Word Embedding에 RNN을 붙인 단순한 모델이었고, 이걸로는 적은 양의 학습 데이터로 좋은 감성 분석 결과를 낼 수 없었거든요.

졸업하고 이 논쟁을 한동안 잊고 살았었는데 갑자기 최근 우연히 이 주제가 다시 생각이 났습니다. 그리고 그때와는 다르게 이제는 여러 연구자들이 잘 학습시켜놓은 언어 모델(BERT 등등)이 있어서 적은 양의 학습 데이터로도 좋은 모델을 충분히 만들 수가 있는 세상이 되었죠. 전에 끝내지 못한 논쟁을 종결짓기에 좋은 시기라고 생각이 들었습니다.

그래서 데이터를 모으고 작은 실험을 설계해보았습니다.

(이하 2020-09-16 추가)

실험에 사용된 데이터들을 정리하여 github(https://github.com/bab2min/corpus)에 공개하였습니다. 서로 아는 것을 공유하며 한국어 감성 분석이라는 어려운 태스크를 잘 풀어나갈 수 있길 바랍니다!


실험 방법

한 분야에 대해 학습한 모델이 다른 분야에도 잘 적용되는지를 확인해보는게 실험의 주요 목표입니다. 이를 위해서 성격이 다른 3개 분야의 긍정/부정 텍스트를 수집했습니다. 첫번째는 네이버 영화 리뷰로써 이미 Lucy Park님이 수집하여 공개해주신 데이터가 있기 때문에 이를 그대로 사용하기로 했습니다. 그리고 두번째로 네이버 쇼핑몰 후기를 수집했습니다. 쇼핑몰 제품 후기는 별1~5개로 점수를 부여할 수 있기 때문에 중간인 별 3개는 제외하고, 별1~2개는 부정, 별4~5개는 긍정으로 처리하였습니다. 마지막으로 다양한 게임을 구매할 수 있는 상점인 스팀에서 게임별 긍정 리뷰와 부정 리뷰를 수집했습니다.

데이터셋개수특징
네이버 영화 리뷰 (movie)200,000영화 줄거리나 감상이 포함된 경우가 많음.
배우, 평론가, 감독, 영화 제목 등의 고유 명사가 자주 등장
네이버 쇼핑몰 후기 (shopping)200,000의류, 잡화, 미용, 가전, 식품 등 다양한 분야 물건 포함.
물건 품질, 배송 속도, 실물과 온라인 간의 괴리 등
스팀 게임 리뷰 (steam)145,000게임과 관련된 은어, 비속어가 자주 등장
오타가 굉장히 많음

(사실 호텔 데이터도 수집했었는데, 워낙 개수가 적어서 동등한 비교가 어려울거 같아 제외했습니다. 나중에 데이터가 충분히 모이면 호텔 데이터 실험도 추가하겠습니다~.) 데이터 개수는 긍정/부정을 5:5로 딱 맞추어서 모델이 긍/부정 편향 없이 학습을 진행하도록 하였고, 전체 데이터를 8:2로 나누어 8을 훈련 데이터, 2는 평가 데이터로 사용했습니다.

실험 방법은 간단합니다. pretraining된 BERT모델을 가져와서, movie, shopping, steam 훈련 데이터를 이용하여 각각 finetuning합니다. 이렇게 finetuning된 movie, shopping, steam 모델로 각각 movie, shopping, steam 평가 데이터를 분류하여 그 정확도를 측정합니다. (당연히 같은 데이터로 학습한 모델이 제일 좋은 성능을 보일겁니다.) 최종적으로 다른 분야의 데이터를 분류할 때 정확도가 얼마나 낮아지는지를 살핌으로써 특정 분야의 모델이 다른 분야에 어느정도 적용가능한지를 가늠하는 겁니다.

밑바탕으로 사용할 BERT 모델은 2가지를 준비해보았습니다. 첫번째는 구글에서 학습시킨 bert-base-multilingual-cased 모델입니다. 이는 다국어 데이터에 대해 학습한 것으로 한국어 전용 모델은 아니지만, 한국어에 대해서도 어느 정도 잘 작동한다고 알려져 있습니다. 두번째는 SKTBrain에서 학습시킨 KoBERT 모델입니다. 공개된 한국어 BERT 모델 중 가장 접근하기가 쉬워 선택했으며, 구글의 bert-base-multilingual-cased와 모델 크기는 동일하지만, 한국어 성능은 구글 껄 앞선다고 알려져 있습니다.

finetuning시에는 transformers의 BertForSequenceClassification 모델을 사용했고, optimizer로는 AdamW(lr=2e-5, eps=1e-8)를 warm up step 없이 사용했습니다. valid 데이터나 early stopping은 사용하지 않았고, 단순히 훈련 데이터 전체를 2 epochs 반복하였습니다. 게임하려고 사둔 GTX 1660 Super 덕분에 finetuning은 생각보다 금방 끝났습니다. 입력 sequence 길이는 80으로 제한한 상태에서 24 batch로 돌렸는데, 1 epoch에 약 40분 정도밖에 안 걸리더라구요. 다음은 실험 결과입니다.

실험 결과

multilingual bert base를 가지고 학습한 결과

먼저 구글 bert의 결과입니다. (all은 movie, shopping, steam 데이터를 전부 사용하여 학습시킨 모델을 가리킵니다.) 동일 데이터로 학습 후 분류한 경우의 성능부터 살펴보면, movie는 87%, shopping은 92%, steam은 80%의 정확도를 보입니다. 긍정/부정이 5:5로 섞여있으므로 베이스라인 정확도가 50%임을 감안할 때 크게 높은 정확도는 아니네요. 역시 감정 분석은 쉬운 작업이 아닌가봅니다.

학습된 모델로 다른 분야의 데이터를 예측하는 경우 성능이 크게 떨어지는걸 볼 수 있습니다. 적게는 4%p에서 많게는 23%p까지 떨어집니다. 이는 특히 shopping 모델에서 두드러집니다. shopping모델이 자기 데이터를 예측할때 92%의 높은 성능이 나올정도로 shopping 데이터는 비교적 쉬운 문제였기 때문에 여기서 학습된 모델을 다른 분야에 적용할때 성능 하락이 큰게 아닌가 싶습니다.

흥미로운 점은 all 모델입니다. movie, shopping, steam 데이터를 섞어서 학습했음에도 각각의 평가 데이터에 대해 거의 성능 손실이 없습니다. 이는 서로 다른 분야의 학습 데이터 간에 충돌하는 부분이 없음을 시사합니다. (즉, 예를 들어 ~~~라는 텍스트가 movie에서는 긍정으로 해석되나 shopping에서는 부정으로 해석되는 경우가 거의 없다는 것) steam 데이터에 대해서는 all 모델 사용시 정확도가 약 0.4%p가 감소하지만 이는 오차 범위 내라고 볼 수 있습니다. BERT 모델이 서로 다른 분야의 데이터를 포용할 정도로 강력하다고 볼 수도 있겠습니다. 다음은 한국어에 특화된 KoBERT 모델의 결과입니다.


SKT KoBert를 가지고 학습한 결과

전반적으로 구글 모델보다 높은 성능이 나왔습니다. 역시 한국어 특화 모델답네요. 학습 데이터와 평가 데이터가 동일 분야일때의 성능은 movie, shopping, steam 각각 약 90%, 94%, 83%입니다. 구글 모델에 비해 1~3%p 씩 상승했습니다. 그리고 모델을 다른 분야에 사용할때 발생하는 성능하락도 크게 감소했습니다. 4~23%p 감소에서 2~20%p 감소로 감소폭이 줄어들었네요.

all 모델을 사용하는 경우 성능이 소폭 상승하는 경우도 보입니다. (물론 0.1~0.5%p의 차이라서 오차범위 내이긴 합니다.) 다른 분야의 데이터를 추가로 학습한 것이 모델의 성능을 높이는데 도움이 되었다고 볼 수도 있겠네요. 위의 결과와 종합하여 보면, 밑바탕이 되는 pretrained model을 교체하는 것만으로도 모델의 범용성을 높일 수 있다는 결론이 도출됩니다.

steam 데이터의 성능이 전반적으로 낮게 나오는 것은 아마 수집한 데이터가 movie, shopping보다 조금 작아서일수도 있고, KoBERT모델이 위키와 뉴스 등의 정제된 텍스트를 대상으로만 학습했기 때문일 수도 있습니다. 오타와 은어, 비속어가 많다는 점에서 steam 데이터는 movie, shopping 데이터와 질적인 특성이 다르다는게 이렇게 실험 결과에서도 간접적으로 드러납니다.

KoELECTRA(10월21일 추가)

최근 monologg님이 한국어 버전 ELECTRA를 훈련해주신 것을 알게되어, 동일 데이터로 KoELECTRA 모델을 학습시켜보았습니다. 모든 경우에서 KoBERT보다 정확도가 향상되었습니다. 역시 pretrained model의 품질이 제일 중요하다는 걸 다시 확인할 수 있었습니다.


오류 분석

혹시 각각의 모델들이 감정을 더 잘 맞추거나, 못 맞추는 유형의 텍스트가 있지 않을까요? 이를 확인해보기 위해 각 모델들로 각 분야의 데이터를 평가한 결과를 비교하여 정리해보았습니다. 먼저 movie 평가 데이터입니다. [P] / [N]는 텍스트의 정답 감정 레이블(Positive / Negative)을 표시한 것입니다.

movie, shopping, steam 모델 전부 틀림
[P] 오연서 땜에 봤는디 내용이 지루해서 졸릴정도 맨날 뱅벵 돌아
[P] 짜증나는 영화여 이것도 영화요
[P] 3분의 2지점까지 아주 지루해 지루해..
[P] 0점은 없나?
[N] 궁금하다. 어린이들은 이 영화 좋아할까?
[P] ㄷㄷㄷ 무슨말을해야할지모르겠네요 정말 화나고 슬프고 안타깝고....하 ㅜㅜㅠ
[N] 유아방송에 나오면 딱일 것입니다~
shopping 모델만 맞춤 (1390) shopping 모델만 틀림 (6103)
[P] 삼류영화 시간때우고싶은사람 보는영화 [P] 재미없다는분들.........다 커서 이런걸보면 손톱밑에 때낀것처럼 하찮아보일밖에요.
[N] 기대 안하고 보면 의외로 긴장감있고 괜찮음. 마지막 반전이라 해야되나? 그부분은 뭔가 씁쓸하고 마음이 아프다. [P] 이 영화가 재미없고 내용없고 지루하는사람 영화 볼줄 모르는 사람들이다.
[N] 왠지 자꾸 눈물이 나는 영화였네여..ㅜㅡ 좀 지루하긴 하지만 긴여운을 남기는 영화 [P] 너무나 안타깝고 가슴아픈 이야기였다. 실제로 이렇게 부모마음은 아프게하고 남의 소중한 자식을 죽이고 돈을 요구하는 그런 쓰레기같은놈들...어째 너네인생을 그렇게만 사냐 돈이필요하면 노력이라도 해보지 왜남에 보석같은 자식을...
[P] 오..하나 맹간 로렌스..엉덩이 각선미 쥑인다..보다가 탁탁탁 [P] 진짜, 어이없다. 이작품성좋은 영화가 평점이 이리낮을수가,, 알바생들뭐하냐, 이런영화나 올려주지, 쓰잘데기없는영화점수주지말고,,,헐, 기자평론가점수 대박, 이쇄끼들은 도대체 영화볼때 어떤점을 보는거야??
[N] 잘만 만들었음 꽤 괜찮았을 소재.. 연출과 각본, 배우의 부재가 아쉽다 [N] 이연걸정무문 아류.. 1,2까지만 보는걸추천..
[N] 깊이있는 스토리는 없는듯 하다. 스토리에 상관없이 그분들은 세상의 빛과 소금이 되기위해 인생을 모두 맡긴 분들이다. [P] 그당시 최고의 액션였는데....정말 볼만함
[N] 봐도그만 안봐도그만인 미국영웅액션물 [N] B급, 안무섭고, 안스릴하고, 빨리감아보길 잘한영화
steam 모델만 맞춤 (1435) steam 모델만 틀림 (5584)
[P] 영화를 안본 사람들의 평점 무조건 1 그리고의 답변:: 1점도 아깝다 또는 0점은 없냐? [N] 구석구석 어설프고 특히 기술적으로 취약하지만 나름 귀엽다.
[P] 딱 한번 웃었다. 영화 끝나고나서 하도 어이가 없어서. 인생에2시간 허비했다. [N] 삼류 무협 활극의 진수.
[P] 마약먹고 찍은영화인가? 그렇다고해서 공포영화도아니고...코미디는뭐 ㅡㅡ [N] 시간 죽이기에도 벅차!
[P] 스토리에 5점 배우들연기에 4점 류덕환에 1점 [N] 막장의 진수를 유감없이 보여준다
[N] 하하...아 ... [P] 정말 짠하다.......
[P] 오~~ 독일 영화는 또 첨보는듯 [P] 한국사회와 별반다를바없음. 메시지가 큰 영화
[P] 1500cc의 할리데이비슨은 영원히 동경하는데 실현은 안되는 사람들이 보면 남다른 [N] 아버지의 명성에 비할때 아들은 뭐하는 짓이냐?

먼저 세 모델에서 전부 틀린 사례를 보면, 사람이 봐도 맞추기 어렵습니다. 텍스트로는 부정적 평가를 내리고선 (실수인지 고의인지) 별점은 긍정적으로 준 경우입니다. shopping 모델이나 steam 모델이 특출나게 잘 맞추거나 잘 못맞추는 유형의 텍스트가 있는지는 모르겠네요. steam 모델의 경우 전반적으로 movie 데이터를 Positive로 편향 예측하는 경향이 있는것 같습니다. 틀린 사례 중 [N]이 많습니다.

이번에는 shopping 평가 데이터에 대한 오류들입니다.

movie, shopping, steam 모델 전부 틀림
[P] 많이 얇아요 밝은색으로 구매햇더니 속옷색도 비쳐요
[P] 안에 비침이 심해서 정말 둘러서 입는 용도로만 입어야해요.
[P] 마트에도 안팔고 유통이 잘 안되는듯요.
[N] 감사 합니다. 아주 좋아요
[N] 커요 ㅜㅜ 여자 230이면 많이 작은발 아닌데도 매우 크네요
[N] 박음질이 약한것빼곤 괜찮았어요
[N] 설치 쉽고요! 느낌도 좋아요! 그리고 이뻐요! 근데 방음이.... 방음이.... 제일 마음에 안들어요!
movie 모델만 맞춤 (781) movie 모델만 틀림 (3220)
[P] 색깔이 너무 달라요 [P] 가성비 좋은 ㄴㅏ비잠만 쓰고있어요
[P] 너무 매워요 진짜... ㅠㅠㅠ 먹기힘들정도였음 [P] 집에서 라떼 만들기위해 구입했습니다.거품 잘 나요
[P] 너무너무 달아요 ㅜ ㅜ [P] 사진과 별다르지않네요 적당함
[N] 원래쓰던거예영 .근데 펌프사용안할땐 끼워놓는 클립같은거는 안왔던데 왜때문이죵 ㅡ.ㅡ [N] 사서3일만에끊어졌네요?빠른조치해주시길
[P] 잘받았습니다 요번엔 배송이 좀 늦었네요 [N] 잘찢어져요..ㅠㅠㅠ
[N] 포장은 잘 되어 왔네요 [P] 피쳐에 붙여서 잘 쓰고 있습니다
[P] 오늘받았어요~~^^ [N] 보이차갖다빠져나와요
steam 모델만 맞춤 (866) steam 모델만 틀림 (5202)
[P] 끌맛이네요 냉장해동하고 핏물 쓱 닦아서 드세요 [N] 기존에 사용하던 타제품보다 견고함이 떨어져서 조금 실망했지만 가격이 저렴해서 그럭저럭 괜찮네요
[P] 먹을때마다 폭풍설사합니다 [N] 나쁘진 않으나 .. 저렴해 보이고 추가 구입가능한 선반은 구멍 따로 없이 직접 수평 맞춰서 그냥 나사로 나무 뚫어서 사용하는게 좀 아쉽긴합니다 나중에 높낮이 바꿀때 지저분..할듯해서요 여튼 잘 사용은 하고 있습니다
[P] 잘 빠지고 식기세척기에도 문제업네요 [N] 튀김옷이 두껍고 밀가루 맛이 강해 텁텁해요 소스는 맛있고 야채도 듬뿍 들어 있어요
[P] 믿고 먹는 씨알상사고구마. 역시 맛있었어요. 근데 두개정도 썩어서 왔네요 ㅠㅠ 마음아프네요ㅠㅠㅠ [N] 쓰던것보다 누르기가 너무 힘들어요.. 힘껏 눌러야합니다
[P] 이거입고 몸짱덜꺼에요 [N] 여름에 사용하기에는 더울거 같아요
[P] 소변줄이 없는게 아쉽네요 무향이라 소변냄새가 나는데 쓰다보니 적응되요 [N] 한번쓰고 고장인 나네요
[P] 빠른배송 너무 좋았습니다. [N] 재구매 두께가 얇아서 두장씩 써야 할듯

이번에도 세 모델 전부 틀린 경우는 대부분 텍스트와 감정 라벨이 따로 노는 경우입니다. 혹은 긍정과 부정이 섞여 있어서 애매한 사례들도 있네요. 이번에도 steam 모델은 전반적으로 Positive로 편향 예측하는 경향을 보였습니다. 이는 steam 데이터에는 부정 리뷰에 비속어나 욕설 등이 섞여 있는 경우가 많기 때문에 이런 자질이 나와야지만 Negative로 분류하도록 모델이 학습되었기 때문이 아닐까 싶습니다. movie나 shopping 데이터에는 steam만큼 원색적인 비속어나 욕설이 포함되어 있지 않으니 이를 Positive로 편향 예측한거죠.

마지막으로 steam 평가 데이터의 오류들을 정리해보았습니다.

movie, shopping, steam 모델 전부 틀림
[N] 신기한 엔딩방식 영어도 꽤 단순해서 읽기도 편하고 중간중간에 이름이 한자로 바뀌는 현상을 제외하면 정말로 잘 만들었다
[N] 지금까지 해본 얼리엑세스 게임중 가장 참신하고 잠재력이 있는 작품입니다. . 아직 한글화가 완벽하게 이루어 지지 않았고 보완해야할점도 있습니다만 추후 멀티플레이가 업데이트 된다면 친구와 재밌는 대전도 가능할거라고 봅니다.
[N] 바이오쇼크1과 큰 차이를 느끼기 어려웠다는 게 전체적인 감상으로, 1보다는 스토리가 덜 난해하다는 게 장점이라면 장점이고 개인적으로는 빅 시스터의 존재가 공포스러워서 1보다 진행이 좀 더뎠지만 그럭저럭 재미있게 플레이한 게임.
[P] 이 게임을 하고나서 친구를 잃었습니다.. 멘탈도 잃었고... 돈도 잃었고... 대신 갓겜을 얻음
[P] 템포가 뒤지게 빠른 게임 하다보면 이게 피하란건가 싶은데 피해지더라... 돈값충분히 한다봄 ㅇ
[P] 하...출근해야 되는데...
[P] '7세 이용가' 같은 '12세 이용가' 같은 '21세 이용가'
movie 모델만 맞춤 (1855) movie 모델만 틀림 (3844)
[N] 쉽고 평이한 저퀄리티 타워디펜스. 카드, 도전과제 올클 목적 아니면 딱히 하실 필요는 없지 않을까 합니다. [P] 도과용.. 5분도 안되서 다깻부려..
[N] 각종 오류들이 많지만 게임 퀄리틴 좋고 브금도좋음. 스토리가 아쉽기도 하지만 무엇보다 난이도가 극악.. 본격 인내심을 알게되는 게임 [P] 내 시간 어디갔음?
[N] 간단히 잠깐 즐기기 좋음 [P] 할게 많지만 할게 없는게임
[N] 뭐 어떻게 해야돼 짱깨 ㅈㄴ많고 ㄹㅇ; [N] 아니 왜 실행안되요??
[P] GOTY 받을만 한데 왜 안주냐 [N] 두번은 못 키겠어요
[N] 플레이 타임 70시간중에 40시간정도는 버그가 있다고 보면 될듯. [N] 그냥 문명6 하세요 못기다리겠으면 문명5 사서 하세요
[N] 처음시작하면 지혼자서 위로가네요. 키보드 마우스도 안먹히네요. 엑박패드도 안먹힙니다. ;;;;;;; 게임좀 하게 해주세요 ㅜㅜ [N] 후,,, 쓰벌 느그들은 이딴거 하지마라
shopping 모델만 맞춤 (1895) shopping 모델만 틀림 (4569)
[N] 바이오쇼크1과 큰 차이를 느끼기 어려웠다는 게 전체적인 감상으로, 1보다는 스토리가 덜 난해하다는 게 장점이라면 장점이고 개인적으로는 빅 시스터의 존재가 공포스러워서 1보다 진행이 좀 더뎠지만 그럭저럭 재미있게 플레이한 게임. [P] 힘들게 적팀 폴피닉스 피 다 깎았는데 폴 : 우어어~~~~ 멘탈도 아작나고 내 조이스틱도 아작남
[N] 친구가 선물로 공포게임이라고 줬는데 에임연습게임이네요 와 정말 무서워라 버그도 너무 많아서 너무 재미있네요 여러분도 버그를 원하신다면 이 게임을 적극적으로 추천드립니다!! [P] 32분 했는데 쫄보라서 껐어요ㅠㅠㅠ 분위기 엄청 무섭네요 메뉴 번역이랑 걷는 속도에 환멸나서 환불하러 갑니다...
[N] 어려울줄 알았는데 쉽고 터트리는 맛이 재밋음 [P] 당신의 장기 plastic으로 대체되었다 불만있어요 Human? My 메스 has also 불만. 작은 장기들아
[N] 개씹씹질알맞은겜 빅ㅡ킹명6인줄 알았는데 아님 [P] 이거 엔딩은 언제쯤 볼 수 있을까. 10/10
[N] 사람이 별로 없는게 ^^7 [P] 오줌싸는게 젤로 재밌었던 게임
[N] 난이도도 무난하고 괜찮은 듯한데, 평이 안좋은 이유를 알겠네요. 현재 일부 도전 과제가 달성되지 않습니다. 이 글은 고쳐지면 수정하겠습니다 :( I can't seem to get some achievements... Please fix them :( [P] 대왕님께서는 웃고 계신다.
[N] 도전과제 온라인 100판이 솔직히 쉽지가 않음. 다들 중국사이트로 하지 스팀에서 하질 않으니깐.. [P] 우정판독기 2 영주님아 그니까 작농이한테 잘했어야지
all 모델만 맞춤 (1387) all 모델만 틀림 (1236)
[N] 아무리 게임이 싸도... 당신의 시간도 금입니다... 앨런 웨이크 오리지날은 명작 갓겜입니다. 좋은 추억을 망치지 않으시기를... [P] 동화 같은 이야기 하지만 다르게 말하면 유치한 스토리
[P] 이게임가지고 완성도가 어쩌니 아직은 갈길이 멀다느니 이딴소리하는놈은 제정신 아닌거다 [P] 도과용.. 5분도 안되서 다깻부려..
[N] 멀티에 긴장감이 없이 가벼움 모던워페어 멀티가 최고였는데 ㅎ [P] 하다가 오금이 저려서 중간에 끄고 나왔습니다 ㄷㄷㄷ
[N] 오렌지있는부분부터 존나 극암이네 못깨겠다 포기할련다 이겜하지마세요~ [N] 게임도중 죽으면서 자꾸튐김....
[P] 근래 스팀에서 50개의 게임을 샀다. 하지만, 이거만 한다. 출근 직전까지... [N] 당신의 인생이 소중하다면 지우세요
[N] 사람들 약빨았다 약빨았다 하는거 다 노잼이었는데 이것도 역시나였음 [P] 뭐야 언제부터 한글화됬어 나만 영어로 한거야?
[N] 재밌긴 한데 겜을 안키게 된다 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 한번 끄면 눈에 들어오지 않는 게임;;; [P] 컴퓨터로 낚시하니 다른재미?

steam 데이터에서는 위의 movie, shopping과 반대의 현상이 발생하고 있습니다. movie와 shopping 모델이 거꾸로 Negative 편향 예측을 하고 있습니다. movie, shopping 데이터에서는 비속어나 욕설 없이도 부정적인 감정을 드러내는 사례가 많았으므로 이를 학습한 모델이 steam데이터에서도 욕설없이 부정적인 뉘앙스만 있어도 이를 Negative로 분류해버리는 것이죠. 그래서 세 분야 데이터를 전부 학습한 all 모델의 경우 욕설 없이 비꼬거나 돌려서 표현하는 사례를 추가적으로 잡아냄으로써 미미하지만 성능 향상이 있었다고 볼 수 있겠습니다.

마무리하며

범용적인 감정 분석 모델의 가능성을 따져보고자 시작한 실험이었는데, 사실 가능 여부를 한 마디로 잘라내기는 어려워보입니다. 그래도 확인할 수 있었던 사실들을 정리해보면, 1) pretrained model의 성능에 따라 감정 분류 모델의 범용성이 크게 달라질 수 있고, 2) 서로 다른 분야의 데이터를 섞어서 학습시켜도 각 분야별 데이터 예측 정확도는 크게 변화가 없으며, 3) 일부 분야의 경우 다른 분야의 데이터로부터 추가적인 학습이 진행되어 예측 정확도가 올라갈 수도 있다.

이런 점들을 고려해볼 때 다양한 분야의 감정 레이블 데이터를 모아서 충분히 큰 pretrained model에 finetuning 시키면 범용적인 목표로 쓸 수 있는 모델도 만들 수 있지 않을까 생각해봅니다. 물론 각 분야에 특화된 모델만큼 뛰어나지는 않겠지만, 범용 모델을 다시 finetuning 함으로써 각 분야에 특화된 모델을 구축하는데 사용할 수도 있을테니 범용 모델을 구축해 볼 만한 가치는 충분하다고 할 수 있지 않을까요?

관련글 더보기

댓글 영역