Word2Vec(Sentimental Categorize);with code
06 Nov 2019 | NLP
NLP Basics 실습 코드: https://github.com/finddme/Finddme_Blog_Code/blob/master/NLP_Code/Sentimental_Categorize1.ipynb
홍종선(2009)에서는 의미적 차원과 표현 구조를 검토하여 감정동사들을 총19유형(감동, 감사, 기쁨, 고뇌, 고독, 놀람, 동정, 두려움, 미안함, 분노, 상쾌함,수용, 수치심, 슬픔, 욕구, 이완, 허무, 혐오, 후회)으로 분류했다. 표현 구조를고려하여 분류된 감정동사들의 벡터 값이 유사할 것이라는 가정 하에 Word2Vec을 활용하여 이를 검토해보고자 한다.
데이터는 AI 허브에서 제공하는 감성분석 데이터에서 content만 따로 추출하여 데이터로 사용한다.
import codecs
from bs4 import BeautifulSoup
from konlpy.tag import Okt
from gensim.models import word2vec
text = codecs.open("sent.content.txt", "r", encoding = "utf-8")
f = open("sent.content.txt", "r", encoding="utf-8")
print(f.read(20))
곧 만기 은퇴 앞두다 있다 노후 준비
word_dict = {}
lines = f.read().split("\n")
print(lines[10])
친구 내 자다 되다 건 다 너 덕분 고맙다 문자 하다 통 넣다
morph_analyzer = Okt()
morph_analyzer1 = Okt()
for line in lines:
morph_analysed = morph_analyzer.pos(line)
for word in morph_analysed:
if word[1] == "Noun":
if not (word[0] in word_dict):
word_dict[word[0]] = 0
word_dict[word[0]] += 1
C:\Users\yein4\Anaconda3\lib\site-packages\jpype\_core.py:210: UserWarning:
-------------------------------------------------------------------------------
Deprecated: convertStrings was not specified when starting the JVM. The default
behavior in JPype will be False starting in JPype 0.8. The recommended setting
for new code is convertStrings=False. The legacy value of True was assumed for
this session. If you are a user of an application that reported this warning,
please file a ticket with the developer.
-------------------------------------------------------------------------------
""")
keys = sorted(word_dict.items(), key=lambda x:x[1], reverse=True)
print(keys[:10])
[('것', 7900), ('수', 6570), ('친구', 5653), ('내', 5178), ('나', 3815), ('상황', 3586), ('기분', 3182), ('더', 3182), ('생각', 3003), ('말', 2977)]
for word, count in keys[:20]:
print("{0}{1}".format(word, count))
f.close()
것7900
수6570
친구5653
내5178
나3815
상황3586
기분3182
더3182
생각3003
말2977
마음2867
지금2799
안2658
일2477
이2434
못2432
사람2352
게2351
거2128
정말2059
with open("sent.content.txt", "r", encoding="utf-8") as fr:
results = []
lines = fr.read().split("\n")
for line in lines:
morph_analysed = morph_analyzer.pos(line, norm=True, stem=True) # stem=True로 어근 출력
r = []
for word in morph_analysed:
if not word[1] in ["Josa", "Punctuation", "Foreign", "Suffix", "Eomi"]:
r.append(word[0])
# 결과에서 제외 할 품사 입력하기
#print(r)
rl = (" ".join(r)).strip() #공백제거
results.append(rl)
print(results[:4])
['곧 만기 은퇴 앞두다 있다 노후 준비 미리 꼼꼼하다 해 두 어서 기쁘다', '노후 준비 미리 꼼꼼하다 해 두 어서 기쁘다', '이렇게 노후 준비 하다 수 있다 건 옆 도와주다 친구 덕분 이 고마움 뭐 갚다', '노후 준비 도운 친구 고마움 느끼다 있다 상대방 고마움 표현 하다 수 있다 좋다 방법 있다']
data_file = "sent.content.txt"
with open(data_file, "w", encoding="utf-8") as fw:
fw.write("\n".join(results))
from gensim.models import word2vec
data = word2vec.LineSentence(data_file)
print(data)
model = word2vec.Word2Vec(data, size=100, window=10, hs=1, min_count=2, sg=1)
# CBOW, Skip-gram(0)
model.init_sims(replace=True) #필요없는 메모리는 unload
#model.save("senti_cat.model")
print("done")
<gensim.models.word2vec.LineSentence object at 0x000001E2CC7345C8>
done
##model = word2vec.Word2Vec.load("senti_cat.model")
##print(model.similarity("기쁘다", "슬프다"))
##print(model.similarity("기쁘다", "행복하다"))
print(model.most_similar("기쁘다"))
[('행복하다', 0.6797296404838562), ('뿌듯하다', 0.6624724864959717), ('자랑스럽다', 0.6465882062911987), ('값지다', 0.6333721280097961), ('다행', 0.6318965554237366), ('최고', 0.6219849586486816), ('센스', 0.6149460077285767), ('만족스럽다', 0.6145679950714111), ('예식', 0.6099244356155396), ('축하', 0.5977829098701477)]
C:\Users\yein4\Anaconda3\lib\site-packages\ipykernel_launcher.py:1: DeprecationWarning: Call to deprecated `most_similar` (Method will be removed in 4.0.0, use self.wv.most_similar() instead).
"""Entry point for launching an IPython kernel.
from gensim.models import KeyedVectors
model.wv.save_word2vec_format("senti_cat_model")
# PCA 돌리기 위해 모델 텐서를 저장한다
#!python -m gensim.scripts.word2vec2tensor --input gimal_model --output gimal_model
차원 축소한 벡터를 통해 감정동사에 해당하는 동사들의 cosine distance를확인하였다. cosine distance는 1-cosine similarity로, 값이 작을수록 유사도가 높은 것이다. 각 동사들의 cosine distance 값은 다음과 같다:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
data=pd.read_excel('./senti_cat.xlsx')
pd.set_option('display.max_rows',500)
data
기준동사분류
기준동사
관련동사분류
관련동사
CD
0
감동
NaN
NaN
NaN
NaN
1
감사
고맙다
기쁨
기쁘다
0.544
2
감사
고맙다
미안함
미안하다
0.518
3
고뇌
걱정스럽다
고뇌
불안하다
0.531
4
고뇌
곤란하다
고뇌
난감하다
0.469
5
고뇌
괴롭다
고뇌
불안하다
0.545
6
고뇌
괴롭다
고뇌
착잡하다
0.569
7
고뇌
괴롭다
슬픔
슬프다
0.464
8
고뇌
괴롭다
혐오
속상하다
0.505
9
고뇌
괴롭다
두려움
무섭다
0.521
10
고뇌
괴롭다
두려움
두렵다
0.523
11
고뇌
괴롭다
슬픔
우울하다
0.539
12
고뇌
괴롭다
슬픔
서럽다
0.541
13
고뇌
괴롭다
동정
안타깝다
0.591
14
고뇌
불안하다
고뇌
초조하다
0.343
15
고뇌
불안하다
고뇌
심란하다
0.584
16
고뇌
불안하다
고뇌
착잡하다
0.587
17
고뇌
불안하다
두려움
두렵다
0.470
18
고뇌
심란하다
슬픔
울적하다
0.549
19
고뇌
심란하다
혐오
속상하다
0.597
20
고뇌
싱숭생숭하다
놀람
얼떨떨하다
0.537
21
고뇌
암담하다
혐오
지긋지긋하다
0.526
22
고뇌
암담하다
두려움
무섭다
0.585
23
고뇌
초조하다
허무
허탈하다
0.602
24
고뇌
초조하다
슬픔
우울하다
0.609
25
고뇌
초조하다
슬픔
서글프다
0.614
26
고뇌
고통스럽다
동정
안쓰럽다
0.465
27
고뇌
고통스럽다
두려움
무섭다
0.590
28
고뇌
난감하다
고뇌
곤란하다
0.469
29
고뇌
난감하다
혐오
부담스럽다
0.620
30
고뇌
찝찝하다
혐오
언짢다
0.606
31
고독
쓸쓸하다
고독
외롭다
0.315
32
고독
쓸쓸하다
고독
허전하다
0.519
33
고독
쓸쓸하다
슬픔
우울하다
0.431
34
고독
쓸쓸하다
슬픔
서글프다
0.481
35
고독
쓸쓸하다
슬픔
울적하다
0.526
36
고독
쓸쓸하다
혐오
섭섭하다
0.555
37
고독
외롭다
고독
허전하다
0.456
38
고독
외롭다
슬픔
우울하다
0.440
39
고독
외롭다
슬픔
슬프다
0.449
40
고독
외롭다
슬픔
울적하다
0.486
41
고독
외롭다
슬픔
서글프다
0.549
42
고독
허전하다
슬픔
울적하다
0.473
43
고독
허전하다
슬픔
서글프다
0.558
44
고독
심심하다
두려움
무섭다
0.556
45
고독
심심하다
동정
딱하다
0.556
46
기쁨
기쁘다
기쁨
행복하다
0.342
47
기쁨
기쁘다
기쁨
뿌듯하다
0.368
48
기쁨
기쁘다
기쁨
자랑스럽다
0.421
49
기쁨
기쁘다
수용
만족스럽다
0.481
50
기쁨
기쁘다
감사
고맙다
0.544
51
기쁨
들뜨다
수용
설레다
0.539
52
기쁨
뿌듯하다
기쁨
기쁘다
0.368
53
기쁨
뿌듯하다
기쁨
자랑스럽다
0.409
54
기쁨
뿌듯하다
기쁨
행복하다
0.494
55
기쁨
뿌듯하다
수용
만족스럽다
0.482
56
기쁨
뿌듯하다
수용
대견하다
0.535
57
기쁨
신나다
기쁨
행복하다
0.603
58
기쁨
신나다
수용
설레다
0.462
59
기쁨
자랑스럽다
기쁨
뿌듯하다
0.409
60
기쁨
자랑스럽다
기쁨
기쁘다
0.421
61
기쁨
자랑스럽다
수용
대견하다
0.381
62
기쁨
즐겁다
기쁨
행복하다
0.359
63
기쁨
즐겁다
수용
설레다
0.501
64
기쁨
행복하다
기쁨
기쁘다
0.342
65
기쁨
행복하다
기쁨
즐겁다
0.359
66
기쁨
행복하다
기쁨
뿌듯하다
0.494
67
기쁨
행복하다
수용
설레다
0.499
68
기쁨
행복하다
수용
흐뭇하다
0.566
69
기쁨
유쾌하다
수용
흐뭇하다
0.523
70
놀람
당혹스럽다
놀람
황당하다
0.607
71
놀람
당혹스럽다
슬픔
슬프다
0.647
72
놀람
당혹스럽다
고뇌
고통스럽다
0.664
73
놀람
황당하다
놀람
당혹스럽다
0.607
74
놀람
황당하다
혐오
부담스럽다
0.638
75
동정
딱하다
고독
심심하다
0.556
76
동정
불쌍하다
슬픔
처량하다
0.543
77
동정
불쌍하다
혐오
밉다
0.552
78
동정
안쓰럽다
동정
안타깝다
0.580
79
동정
안쓰럽다
고뇌
고통스럽다
0.465
80
동정
안쓰럽다
슬픔
비통하다
0.516
81
동정
안쓰럽다
슬픔
처량하다
0.574
82
동정
안쓰럽다
슬픔
슬프다
0.579
83
동정
안타깝다
동정
안쓰럽다
0.580
84
동정
안타깝다
슬픔
슬프다
0.432
85
동정
안타깝다
슬픔
비통하다
0.469
86
동정
안타깝다
혐오
속상하다
0.534
87
동정
안타깝다
슬픔
우울하다
0.536
88
동정
안타깝다
허무
허무
0.538
89
동정
안타깝다
고독
허전하다
0.567
90
동정
안타깝다
슬픔
울적하다
0.590
91
동정
안타깝다
고뇌
괴롭다
0.591
92
동정
안타깝다
슬픔
서글프다
0.596
93
동정
안타깝다
슬픔
억울하다
0.613
94
두려움
겁나다
슬픔
비통하다
0.577
95
두려움
두렵다
두려움
무섭다
0.344
96
두려움
두렵다
고뇌
불안하다
0.470
97
두려움
두렵다
고뇌
괴롭다
0.523
98
두려움
두렵다
슬픔
슬프다
0.586
99
두려움
무섭다
두려움
두렵다
0.344
100
두려움
무섭다
고뇌
괴롭다
0.521
101
두려움
무섭다
고독
심심하다
0.556
102
두려움
무섭다
고뇌
암담하다
0.585
103
두려움
무섭다
고뇌
고통스럽다
0.590
104
두려움
무섭다
슬픔
비통하다
0.596
105
두려움
무섭다
미안함
죄송하다
0.596
106
미안함
미안하다
미안함
죄송하다
0.586
107
미안함
미안하다
감사
고맙다
0.518
108
미안함
미안하다
혐오
서운하다
0.582
109
미안함
미안하다
혐오
속상하다
0.633
110
미안함
죄송스럽다
미안함
죄송하다
0.440
111
미안함
죄송스럽다
혐오
속상하다
0.528
112
미안함
죄송스럽다
혐오
서운하다
0.563
113
미안함
죄송스럽다
혐오
괘씸하다
0.580
114
미안함
죄송스럽다
슬픔
슬프다
0.589
115
미안함
죄송하다
미안함
죄송스럽다
0.440
116
미안함
죄송하다
미안함
미안하다
0.586
117
미안함
죄송하다
두려움
무섭다
0.596
118
분노
화나다
혐오
속상하다
0.482
119
분노
화나다
슬픔
억울하다
0.544
120
분노
화나다
혐오
섭섭하다
0.593
121
분노
화나다
혐오
서운하다
0.608
122
상쾌함
개운하다
상쾌함
홀가분하다
0.513
123
상쾌함
개운하다
상쾌함
상쾌하다
0.556
124
상쾌함
개운하다
복합감정
시원섭섭하다
0.592
125
상쾌함
상쾌하다
상쾌함
개운하다
0.556
126
상쾌함
홀가분하다
상쾌함
개운하다
0.513
127
상쾌함
홀가분하다
슬픔
서럽다
0.579
128
상쾌함
홀가분하다
허무
허무하다
0.603
129
상쾌함
후련하다
상쾌함
홀가분하다
0.660
130
상쾌함
후련하다
고뇌
암담하다
0.610
131
수용
대견하다
기쁨
자랑스럽다
0.381
132
수용
대견하다
기쁨
뿌듯하다
0.535
133
수용
만족스럽다
기쁨
기쁘다
0.481
134
수용
만족스럽다
기쁨
뿌듯하다
0.482
135
수용
만족스럽다
기쁨
행복하다
0.542
136
수용
설레다
기쁨
신나다
0.462
137
수용
설레다
기쁨
행복하다
0.499
138
수용
흐뭇하다
기쁨
유쾌하다
0.523
139
수용
흐뭇하다
기쁨
행복하다
0.566
140
수치심
민망하다
수치심
창피하다
0.557
141
수치심
민망하다
수치심
부끄럽다
0.587
142
수치심
민망하다
혐오
싫다
0.581
143
수치심
부끄럽다
수치심
창피하다
0.488
144
수치심
부끄럽다
수치심
민망하다
0.587
145
수치심
부끄럽다
혐오
싫다
0.530
146
수치심
비참하다
슬픔
비통하다
0.464
147
수치심
비참하다
슬픔
슬프다
0.485
148
수치심
비참하다
혐오
속상하다
0.569
149
수치심
창피하다
수치심
민망하다
0.557
150
수치심
창피하다
슬픔
비통하다
0.472
151
수치심
창피하다
혐오
싫다
0.568
152
수치심
참담하다
허무
허무하다
0.566
153
수치심
참담하다
허무
허탈하다
0.598
154
슬픔
비통하다
슬픔
슬프다
0.438
155
슬픔
비통하다
슬픔
서럽다
0.531
156
슬픔
비통하다
수치심
비참하다
0.464
157
슬픔
비통하다
수치심
창피하다
0.472
158
슬픔
비통하다
동정
안쓰럽다
0.516
159
슬픔
비통하다
상쾌함
홀가분하다
0.549
160
슬픔
비통하다
혐오
속상하다
0.581
161
슬픔
서글프다
슬픔
울적하다
0.518
162
슬픔
서글프다
슬픔
슬프다
0.548
163
슬픔
서글프다
허무
허무하다
0.436
164
슬픔
서글프다
고독
쓸쓸하다
0.481
165
슬픔
서글프다
고독
외롭다
0.549
166
슬픔
서글프다
고독
허전하다
0.558
167
슬픔
서럽다
슬픔
슬프다
0.413
168
슬픔
서럽다
슬픔
서글프다
0.520
169
슬픔
서럽다
슬픔
우울하다
0.525
170
슬픔
서럽다
슬픔
비통하다
0.531
171
슬픔
서럽다
혐오
서운하다
0.481
172
슬픔
서럽다
혐오
속상하다
0.487
173
슬픔
서럽다
고뇌
괴롭다
0.541
174
슬픔
서럽다
고뇌
고통스럽다
0.562
175
슬픔
서럽다
상쾌함
홀가분하다
0.579
176
슬픔
슬프다
슬픔
서럽다
0.413
177
슬픔
슬프다
슬픔
우울하다
0.457
178
슬픔
슬프다
슬픔
울적하다
0.487
179
슬픔
슬프다
슬픔
서글프다
0.548
180
슬픔
슬프다
슬픔
억울하다
0.615
181
슬픔
슬프다
혐오
속상하다
0.320
182
슬픔
슬프다
동정
안쓰럽다
0.432
183
슬픔
슬프다
혐오
서운하다
0.459
184
슬픔
슬프다
수치심
비참하다
0.485
185
슬픔
슬프다
고독
쓸쓸하다
0.538
186
슬픔
슬프다
동정
안쓰럽다
0.579
187
슬픔
억울하다
분노
화나다
0.554
188
슬픔
억울하다
슬픔
비통하다
0.573
189
슬픔
억울하다
슬픔
슬프다
0.615
190
슬픔
억울하다
혐오
속상하다
0.569
191
슬픔
억울하다
수치심
비참하다
0.607
192
슬픔
억울하다
동정
안타깝다
0.613
193
슬픔
우울하다
슬픔
울적하다
0.428
194
슬픔
우울하다
슬픔
슬프다
0.457
195
슬픔
우울하다
슬픔
서럽다
0.525
196
슬픔
우울하다
고독
쓸쓸하다
0.431
197
슬픔
우울하다
고독
외롭다
0.440
198
슬픔
우울하다
혐오
속상하다
0.485
199
슬픔
우울하다
동정
안타깝다
0.536
200
슬픔
우울하다
고뇌
괴롭다
0.539
201
슬픔
울적하다
슬픔
우울하다
0.428
202
슬픔
울적하다
슬픔
슬프다
0.487
203
슬픔
울적하다
슬픔
서글프다
0.518
204
슬픔
울적하다
고독
허전하다
0.473
205
슬픔
울적하다
고독
외롭다
0.486
206
슬픔
울적하다
혐오
속상하다
0.499
207
슬픔
울적하다
고독
쓸쓸하다
0.526
208
슬픔
울적하다
혐오
섭섭하다
0.548
209
슬픔
울적하다
고뇌
심란하다
0.549
210
슬픔
처량하다
혐오
지긋지긋하다
0.494
211
욕구
궁금하다
혐오
섭섭하다
0.525
212
욕구
부럽다
혐오
야속하다
0.633
213
이완
NaN
NaN
NaN
NaN
214
허무
허무하다
허무
허탈하다
0.540
215
허무
허무하다
슬픔
서글프다
0.436
216
허무
허무하다
동정
안타깝다
0.538
217
허무
허무하다
혐오
지긋지긋하다
0.540
218
허무
허무하다
수치심
참담하다
0.566
219
허무
허탈하다
허무
허무하다
0.540
220
허무
허탈하다
수치심
참담하다
0.598
221
허무
허탈하다
고뇌
초조하다
0.602
222
혐오
괘씸하다
혐오
섭섭하다
0.566
223
혐오
괘씸하다
혐오
서운하다
0.573
224
혐오
괘씸하다
슬픔
서럽다
0.520
225
혐오
물리다
고독
쓸쓸하다
0.505
226
혐오
밉다
동정
불쌍하다
0.552
227
혐오
부담스럽다
고뇌
난감하다
0.620
228
혐오
부담스럽다
놀람
황당하다
0.638
229
혐오
서운하다
혐오
섭섭하다
0.330
230
혐오
서운하다
혐오
속상하다
0.354
231
혐오
서운하다
혐오
괘씸하다
0.573
232
혐오
서운하다
슬픔
슬프다
0.459
233
혐오
서운하다
슬픔
서럽다
0.481
234
혐오
서운하다
미안함
죄송스럽다
0.563
235
혐오
서운하다
미안함
미안하다
0.582
236
혐오
서운하다
슬픔
울적하다
0.583
237
혐오
섭섭하다
혐오
서운하다
0.330
238
혐오
섭섭하다
혐오
속상하다
0.508
239
혐오
섭섭하다
혐오
괘씸하다
0.566
240
혐오
섭섭하다
분노
화나다
0.593
241
혐오
속상하다
혐오
서운하다
0.330
242
혐오
속상하다
슬픔
슬프다
0.320
243
혐오
속상하다
분노
화나다
0.482
244
혐오
속상하다
슬픔
우울하다
0.485
245
혐오
속상하다
슬픔
서럽다
0.487
246
혐오
속상하다
슬픔
울적하다
0.499
247
혐오
속상하다
미안함
죄송스럽다
0.528
248
혐오
속상하다
동정
안타깝다
0.534
249
혐오
속상하다
슬픔
억울하다
0.569
250
혐오
속상하다
수치심
비참하다
0.569
251
혐오
속상하다
슬픔
비통하다
0.581
252
혐오
속상하다
후회
아쉽다
0.586
253
혐오
싫다
혐오
짜증나다
0.543
254
혐오
싫다
혐오
지긋지긋하다
0.548
255
혐오
싫다
수치심
부끄럽다
0.530
256
혐오
싫다
수치심
창피하다
0.568
257
혐오
싫다
수치심
민망하다
0.581
258
혐오
싫다
고뇌
괴롭다
0.622
259
혐오
언짢다
고뇌
찝찝하다
0.606
260
혐오
지겹다
혐오
지긋지긋하다
0.597
261
혐오
지긋지긋하다
슬픔
처량하다
0.494
262
혐오
지긋지긋하다
고뇌
암담하다
0.526
263
혐오
지긋지긋하다
허무
허무하다
0.540
264
혐오
짜증나다
혐오
싫다
0.543
265
후회
아쉽다
혐오
속상하다
0.586
266
복합감정
시원섭섭하다
상쾌함
개운하다
0.592
v=data['기준동사분류'].value_counts()
v2=v.to_frame()
#v2.to_excel('senti_cat_v2.xlsx')
v2
기준동사분류
슬픔
57
혐오
43
고뇌
28
기쁨
24
동정
19
고독
15
수치심
14
미안함
12
두려움
12
수용
9
상쾌함
9
허무
8
놀람
5
분노
4
감사
2
욕구
2
후회
1
감동
1
이완
1
복합감정
1
size1=data.groupby(['기준동사분류','관련동사분류']).size()
size2=size1.to_frame()
size2
0
기준동사분류
관련동사분류
감사
기쁨
1
미안함
1
고뇌
고뇌
8
놀람
1
동정
2
두려움
5
슬픔
6
허무
1
혐오
5
고독
고독
3
동정
1
두려움
1
슬픔
9
혐오
1
기쁨
감사
1
기쁨
13
수용
10
놀람
고뇌
1
놀람
2
슬픔
1
혐오
1
동정
고뇌
2
고독
2
동정
2
슬픔
10
허무
1
혐오
2
두려움
고뇌
5
고독
1
두려움
2
미안함
1
슬픔
3
미안함
감사
1
두려움
1
미안함
4
슬픔
1
혐오
5
복합감정
상쾌함
1
분노
슬픔
1
혐오
3
상쾌함
고뇌
1
복합감정
1
상쾌함
5
슬픔
1
허무
1
수용
기쁨
9
수치심
수치심
5
슬픔
3
허무
2
혐오
4
슬픔
고뇌
4
고독
9
동정
5
분노
1
상쾌함
2
수치심
4
슬픔
21
허무
1
혐오
10
욕구
혐오
2
허무
고뇌
1
동정
1
수치심
2
슬픔
1
허무
2
혐오
1
혐오
고뇌
4
고독
1
놀람
1
동정
2
미안함
3
분노
2
수치심
4
슬픔
11
허무
1
혐오
13
후회
1
후회
혐오
1
18개이 범주 중 10개의 범주에서 기준동사범주와 관련동사범주의 일치율이 높은 것으로 확인되는데, 이를 통해 홍종선(2009)에서 제시된 감정동사의 분류 기재와 결과가 유의미하다는 것을 알 수 있다. 또한 각 기준동사범주에 대해 특정 관련동사범주의 비율이 높게 나옴을 확인할 수 있는데, 이는 감정동사범주들 간의 유사성도 존재한다는 것을 의미한다. 따라서 이후 규모가 더 큰 데이터를 사용하여 범주들 간의 유사성을 검증한 후 이를 다시 범주화할 수 있을 것으로 보인다. 이렇게 범주를 다시 범주화 하는 것은 세밀하게 나눠진 인간 감정의 범주를 덜 세분화하여 컴퓨터가 인간이 구사한 문장 속의 감정동사를 통해 인간이 전달하고자 한 감정과 근접한 감정을 인식할 수 있는또 다른 방법이 될 수도 있을 것이라 생각된다.
NLP Basics 실습 코드: https://github.com/finddme/Finddme_Blog_Code/blob/master/NLP_Code/Sentimental_Categorize1.ipynb
홍종선(2009)에서는 의미적 차원과 표현 구조를 검토하여 감정동사들을 총19유형(감동, 감사, 기쁨, 고뇌, 고독, 놀람, 동정, 두려움, 미안함, 분노, 상쾌함,수용, 수치심, 슬픔, 욕구, 이완, 허무, 혐오, 후회)으로 분류했다. 표현 구조를고려하여 분류된 감정동사들의 벡터 값이 유사할 것이라는 가정 하에 Word2Vec을 활용하여 이를 검토해보고자 한다.
데이터는 AI 허브에서 제공하는 감성분석 데이터에서 content만 따로 추출하여 데이터로 사용한다.
import codecs
from bs4 import BeautifulSoup
from konlpy.tag import Okt
from gensim.models import word2vec
text = codecs.open("sent.content.txt", "r", encoding = "utf-8")
f = open("sent.content.txt", "r", encoding="utf-8")
print(f.read(20))
곧 만기 은퇴 앞두다 있다 노후 준비
word_dict = {}
lines = f.read().split("\n")
print(lines[10])
친구 내 자다 되다 건 다 너 덕분 고맙다 문자 하다 통 넣다
morph_analyzer = Okt()
morph_analyzer1 = Okt()
for line in lines:
morph_analysed = morph_analyzer.pos(line)
for word in morph_analysed:
if word[1] == "Noun":
if not (word[0] in word_dict):
word_dict[word[0]] = 0
word_dict[word[0]] += 1
C:\Users\yein4\Anaconda3\lib\site-packages\jpype\_core.py:210: UserWarning:
-------------------------------------------------------------------------------
Deprecated: convertStrings was not specified when starting the JVM. The default
behavior in JPype will be False starting in JPype 0.8. The recommended setting
for new code is convertStrings=False. The legacy value of True was assumed for
this session. If you are a user of an application that reported this warning,
please file a ticket with the developer.
-------------------------------------------------------------------------------
""")
keys = sorted(word_dict.items(), key=lambda x:x[1], reverse=True)
print(keys[:10])
[('것', 7900), ('수', 6570), ('친구', 5653), ('내', 5178), ('나', 3815), ('상황', 3586), ('기분', 3182), ('더', 3182), ('생각', 3003), ('말', 2977)]
for word, count in keys[:20]:
print("{0}{1}".format(word, count))
f.close()
것7900
수6570
친구5653
내5178
나3815
상황3586
기분3182
더3182
생각3003
말2977
마음2867
지금2799
안2658
일2477
이2434
못2432
사람2352
게2351
거2128
정말2059
with open("sent.content.txt", "r", encoding="utf-8") as fr:
results = []
lines = fr.read().split("\n")
for line in lines:
morph_analysed = morph_analyzer.pos(line, norm=True, stem=True) # stem=True로 어근 출력
r = []
for word in morph_analysed:
if not word[1] in ["Josa", "Punctuation", "Foreign", "Suffix", "Eomi"]:
r.append(word[0])
# 결과에서 제외 할 품사 입력하기
#print(r)
rl = (" ".join(r)).strip() #공백제거
results.append(rl)
print(results[:4])
['곧 만기 은퇴 앞두다 있다 노후 준비 미리 꼼꼼하다 해 두 어서 기쁘다', '노후 준비 미리 꼼꼼하다 해 두 어서 기쁘다', '이렇게 노후 준비 하다 수 있다 건 옆 도와주다 친구 덕분 이 고마움 뭐 갚다', '노후 준비 도운 친구 고마움 느끼다 있다 상대방 고마움 표현 하다 수 있다 좋다 방법 있다']
data_file = "sent.content.txt"
with open(data_file, "w", encoding="utf-8") as fw:
fw.write("\n".join(results))
from gensim.models import word2vec
data = word2vec.LineSentence(data_file)
print(data)
model = word2vec.Word2Vec(data, size=100, window=10, hs=1, min_count=2, sg=1)
# CBOW, Skip-gram(0)
model.init_sims(replace=True) #필요없는 메모리는 unload
#model.save("senti_cat.model")
print("done")
<gensim.models.word2vec.LineSentence object at 0x000001E2CC7345C8>
done
##model = word2vec.Word2Vec.load("senti_cat.model")
##print(model.similarity("기쁘다", "슬프다"))
##print(model.similarity("기쁘다", "행복하다"))
print(model.most_similar("기쁘다"))
[('행복하다', 0.6797296404838562), ('뿌듯하다', 0.6624724864959717), ('자랑스럽다', 0.6465882062911987), ('값지다', 0.6333721280097961), ('다행', 0.6318965554237366), ('최고', 0.6219849586486816), ('센스', 0.6149460077285767), ('만족스럽다', 0.6145679950714111), ('예식', 0.6099244356155396), ('축하', 0.5977829098701477)]
C:\Users\yein4\Anaconda3\lib\site-packages\ipykernel_launcher.py:1: DeprecationWarning: Call to deprecated `most_similar` (Method will be removed in 4.0.0, use self.wv.most_similar() instead).
"""Entry point for launching an IPython kernel.
from gensim.models import KeyedVectors
model.wv.save_word2vec_format("senti_cat_model")
# PCA 돌리기 위해 모델 텐서를 저장한다
#!python -m gensim.scripts.word2vec2tensor --input gimal_model --output gimal_model
차원 축소한 벡터를 통해 감정동사에 해당하는 동사들의 cosine distance를확인하였다. cosine distance는 1-cosine similarity로, 값이 작을수록 유사도가 높은 것이다. 각 동사들의 cosine distance 값은 다음과 같다:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
data=pd.read_excel('./senti_cat.xlsx')
pd.set_option('display.max_rows',500)
data
기준동사분류 | 기준동사 | 관련동사분류 | 관련동사 | CD | |
---|---|---|---|---|---|
0 | 감동 | NaN | NaN | NaN | NaN |
1 | 감사 | 고맙다 | 기쁨 | 기쁘다 | 0.544 |
2 | 감사 | 고맙다 | 미안함 | 미안하다 | 0.518 |
3 | 고뇌 | 걱정스럽다 | 고뇌 | 불안하다 | 0.531 |
4 | 고뇌 | 곤란하다 | 고뇌 | 난감하다 | 0.469 |
5 | 고뇌 | 괴롭다 | 고뇌 | 불안하다 | 0.545 |
6 | 고뇌 | 괴롭다 | 고뇌 | 착잡하다 | 0.569 |
7 | 고뇌 | 괴롭다 | 슬픔 | 슬프다 | 0.464 |
8 | 고뇌 | 괴롭다 | 혐오 | 속상하다 | 0.505 |
9 | 고뇌 | 괴롭다 | 두려움 | 무섭다 | 0.521 |
10 | 고뇌 | 괴롭다 | 두려움 | 두렵다 | 0.523 |
11 | 고뇌 | 괴롭다 | 슬픔 | 우울하다 | 0.539 |
12 | 고뇌 | 괴롭다 | 슬픔 | 서럽다 | 0.541 |
13 | 고뇌 | 괴롭다 | 동정 | 안타깝다 | 0.591 |
14 | 고뇌 | 불안하다 | 고뇌 | 초조하다 | 0.343 |
15 | 고뇌 | 불안하다 | 고뇌 | 심란하다 | 0.584 |
16 | 고뇌 | 불안하다 | 고뇌 | 착잡하다 | 0.587 |
17 | 고뇌 | 불안하다 | 두려움 | 두렵다 | 0.470 |
18 | 고뇌 | 심란하다 | 슬픔 | 울적하다 | 0.549 |
19 | 고뇌 | 심란하다 | 혐오 | 속상하다 | 0.597 |
20 | 고뇌 | 싱숭생숭하다 | 놀람 | 얼떨떨하다 | 0.537 |
21 | 고뇌 | 암담하다 | 혐오 | 지긋지긋하다 | 0.526 |
22 | 고뇌 | 암담하다 | 두려움 | 무섭다 | 0.585 |
23 | 고뇌 | 초조하다 | 허무 | 허탈하다 | 0.602 |
24 | 고뇌 | 초조하다 | 슬픔 | 우울하다 | 0.609 |
25 | 고뇌 | 초조하다 | 슬픔 | 서글프다 | 0.614 |
26 | 고뇌 | 고통스럽다 | 동정 | 안쓰럽다 | 0.465 |
27 | 고뇌 | 고통스럽다 | 두려움 | 무섭다 | 0.590 |
28 | 고뇌 | 난감하다 | 고뇌 | 곤란하다 | 0.469 |
29 | 고뇌 | 난감하다 | 혐오 | 부담스럽다 | 0.620 |
30 | 고뇌 | 찝찝하다 | 혐오 | 언짢다 | 0.606 |
31 | 고독 | 쓸쓸하다 | 고독 | 외롭다 | 0.315 |
32 | 고독 | 쓸쓸하다 | 고독 | 허전하다 | 0.519 |
33 | 고독 | 쓸쓸하다 | 슬픔 | 우울하다 | 0.431 |
34 | 고독 | 쓸쓸하다 | 슬픔 | 서글프다 | 0.481 |
35 | 고독 | 쓸쓸하다 | 슬픔 | 울적하다 | 0.526 |
36 | 고독 | 쓸쓸하다 | 혐오 | 섭섭하다 | 0.555 |
37 | 고독 | 외롭다 | 고독 | 허전하다 | 0.456 |
38 | 고독 | 외롭다 | 슬픔 | 우울하다 | 0.440 |
39 | 고독 | 외롭다 | 슬픔 | 슬프다 | 0.449 |
40 | 고독 | 외롭다 | 슬픔 | 울적하다 | 0.486 |
41 | 고독 | 외롭다 | 슬픔 | 서글프다 | 0.549 |
42 | 고독 | 허전하다 | 슬픔 | 울적하다 | 0.473 |
43 | 고독 | 허전하다 | 슬픔 | 서글프다 | 0.558 |
44 | 고독 | 심심하다 | 두려움 | 무섭다 | 0.556 |
45 | 고독 | 심심하다 | 동정 | 딱하다 | 0.556 |
46 | 기쁨 | 기쁘다 | 기쁨 | 행복하다 | 0.342 |
47 | 기쁨 | 기쁘다 | 기쁨 | 뿌듯하다 | 0.368 |
48 | 기쁨 | 기쁘다 | 기쁨 | 자랑스럽다 | 0.421 |
49 | 기쁨 | 기쁘다 | 수용 | 만족스럽다 | 0.481 |
50 | 기쁨 | 기쁘다 | 감사 | 고맙다 | 0.544 |
51 | 기쁨 | 들뜨다 | 수용 | 설레다 | 0.539 |
52 | 기쁨 | 뿌듯하다 | 기쁨 | 기쁘다 | 0.368 |
53 | 기쁨 | 뿌듯하다 | 기쁨 | 자랑스럽다 | 0.409 |
54 | 기쁨 | 뿌듯하다 | 기쁨 | 행복하다 | 0.494 |
55 | 기쁨 | 뿌듯하다 | 수용 | 만족스럽다 | 0.482 |
56 | 기쁨 | 뿌듯하다 | 수용 | 대견하다 | 0.535 |
57 | 기쁨 | 신나다 | 기쁨 | 행복하다 | 0.603 |
58 | 기쁨 | 신나다 | 수용 | 설레다 | 0.462 |
59 | 기쁨 | 자랑스럽다 | 기쁨 | 뿌듯하다 | 0.409 |
60 | 기쁨 | 자랑스럽다 | 기쁨 | 기쁘다 | 0.421 |
61 | 기쁨 | 자랑스럽다 | 수용 | 대견하다 | 0.381 |
62 | 기쁨 | 즐겁다 | 기쁨 | 행복하다 | 0.359 |
63 | 기쁨 | 즐겁다 | 수용 | 설레다 | 0.501 |
64 | 기쁨 | 행복하다 | 기쁨 | 기쁘다 | 0.342 |
65 | 기쁨 | 행복하다 | 기쁨 | 즐겁다 | 0.359 |
66 | 기쁨 | 행복하다 | 기쁨 | 뿌듯하다 | 0.494 |
67 | 기쁨 | 행복하다 | 수용 | 설레다 | 0.499 |
68 | 기쁨 | 행복하다 | 수용 | 흐뭇하다 | 0.566 |
69 | 기쁨 | 유쾌하다 | 수용 | 흐뭇하다 | 0.523 |
70 | 놀람 | 당혹스럽다 | 놀람 | 황당하다 | 0.607 |
71 | 놀람 | 당혹스럽다 | 슬픔 | 슬프다 | 0.647 |
72 | 놀람 | 당혹스럽다 | 고뇌 | 고통스럽다 | 0.664 |
73 | 놀람 | 황당하다 | 놀람 | 당혹스럽다 | 0.607 |
74 | 놀람 | 황당하다 | 혐오 | 부담스럽다 | 0.638 |
75 | 동정 | 딱하다 | 고독 | 심심하다 | 0.556 |
76 | 동정 | 불쌍하다 | 슬픔 | 처량하다 | 0.543 |
77 | 동정 | 불쌍하다 | 혐오 | 밉다 | 0.552 |
78 | 동정 | 안쓰럽다 | 동정 | 안타깝다 | 0.580 |
79 | 동정 | 안쓰럽다 | 고뇌 | 고통스럽다 | 0.465 |
80 | 동정 | 안쓰럽다 | 슬픔 | 비통하다 | 0.516 |
81 | 동정 | 안쓰럽다 | 슬픔 | 처량하다 | 0.574 |
82 | 동정 | 안쓰럽다 | 슬픔 | 슬프다 | 0.579 |
83 | 동정 | 안타깝다 | 동정 | 안쓰럽다 | 0.580 |
84 | 동정 | 안타깝다 | 슬픔 | 슬프다 | 0.432 |
85 | 동정 | 안타깝다 | 슬픔 | 비통하다 | 0.469 |
86 | 동정 | 안타깝다 | 혐오 | 속상하다 | 0.534 |
87 | 동정 | 안타깝다 | 슬픔 | 우울하다 | 0.536 |
88 | 동정 | 안타깝다 | 허무 | 허무 | 0.538 |
89 | 동정 | 안타깝다 | 고독 | 허전하다 | 0.567 |
90 | 동정 | 안타깝다 | 슬픔 | 울적하다 | 0.590 |
91 | 동정 | 안타깝다 | 고뇌 | 괴롭다 | 0.591 |
92 | 동정 | 안타깝다 | 슬픔 | 서글프다 | 0.596 |
93 | 동정 | 안타깝다 | 슬픔 | 억울하다 | 0.613 |
94 | 두려움 | 겁나다 | 슬픔 | 비통하다 | 0.577 |
95 | 두려움 | 두렵다 | 두려움 | 무섭다 | 0.344 |
96 | 두려움 | 두렵다 | 고뇌 | 불안하다 | 0.470 |
97 | 두려움 | 두렵다 | 고뇌 | 괴롭다 | 0.523 |
98 | 두려움 | 두렵다 | 슬픔 | 슬프다 | 0.586 |
99 | 두려움 | 무섭다 | 두려움 | 두렵다 | 0.344 |
100 | 두려움 | 무섭다 | 고뇌 | 괴롭다 | 0.521 |
101 | 두려움 | 무섭다 | 고독 | 심심하다 | 0.556 |
102 | 두려움 | 무섭다 | 고뇌 | 암담하다 | 0.585 |
103 | 두려움 | 무섭다 | 고뇌 | 고통스럽다 | 0.590 |
104 | 두려움 | 무섭다 | 슬픔 | 비통하다 | 0.596 |
105 | 두려움 | 무섭다 | 미안함 | 죄송하다 | 0.596 |
106 | 미안함 | 미안하다 | 미안함 | 죄송하다 | 0.586 |
107 | 미안함 | 미안하다 | 감사 | 고맙다 | 0.518 |
108 | 미안함 | 미안하다 | 혐오 | 서운하다 | 0.582 |
109 | 미안함 | 미안하다 | 혐오 | 속상하다 | 0.633 |
110 | 미안함 | 죄송스럽다 | 미안함 | 죄송하다 | 0.440 |
111 | 미안함 | 죄송스럽다 | 혐오 | 속상하다 | 0.528 |
112 | 미안함 | 죄송스럽다 | 혐오 | 서운하다 | 0.563 |
113 | 미안함 | 죄송스럽다 | 혐오 | 괘씸하다 | 0.580 |
114 | 미안함 | 죄송스럽다 | 슬픔 | 슬프다 | 0.589 |
115 | 미안함 | 죄송하다 | 미안함 | 죄송스럽다 | 0.440 |
116 | 미안함 | 죄송하다 | 미안함 | 미안하다 | 0.586 |
117 | 미안함 | 죄송하다 | 두려움 | 무섭다 | 0.596 |
118 | 분노 | 화나다 | 혐오 | 속상하다 | 0.482 |
119 | 분노 | 화나다 | 슬픔 | 억울하다 | 0.544 |
120 | 분노 | 화나다 | 혐오 | 섭섭하다 | 0.593 |
121 | 분노 | 화나다 | 혐오 | 서운하다 | 0.608 |
122 | 상쾌함 | 개운하다 | 상쾌함 | 홀가분하다 | 0.513 |
123 | 상쾌함 | 개운하다 | 상쾌함 | 상쾌하다 | 0.556 |
124 | 상쾌함 | 개운하다 | 복합감정 | 시원섭섭하다 | 0.592 |
125 | 상쾌함 | 상쾌하다 | 상쾌함 | 개운하다 | 0.556 |
126 | 상쾌함 | 홀가분하다 | 상쾌함 | 개운하다 | 0.513 |
127 | 상쾌함 | 홀가분하다 | 슬픔 | 서럽다 | 0.579 |
128 | 상쾌함 | 홀가분하다 | 허무 | 허무하다 | 0.603 |
129 | 상쾌함 | 후련하다 | 상쾌함 | 홀가분하다 | 0.660 |
130 | 상쾌함 | 후련하다 | 고뇌 | 암담하다 | 0.610 |
131 | 수용 | 대견하다 | 기쁨 | 자랑스럽다 | 0.381 |
132 | 수용 | 대견하다 | 기쁨 | 뿌듯하다 | 0.535 |
133 | 수용 | 만족스럽다 | 기쁨 | 기쁘다 | 0.481 |
134 | 수용 | 만족스럽다 | 기쁨 | 뿌듯하다 | 0.482 |
135 | 수용 | 만족스럽다 | 기쁨 | 행복하다 | 0.542 |
136 | 수용 | 설레다 | 기쁨 | 신나다 | 0.462 |
137 | 수용 | 설레다 | 기쁨 | 행복하다 | 0.499 |
138 | 수용 | 흐뭇하다 | 기쁨 | 유쾌하다 | 0.523 |
139 | 수용 | 흐뭇하다 | 기쁨 | 행복하다 | 0.566 |
140 | 수치심 | 민망하다 | 수치심 | 창피하다 | 0.557 |
141 | 수치심 | 민망하다 | 수치심 | 부끄럽다 | 0.587 |
142 | 수치심 | 민망하다 | 혐오 | 싫다 | 0.581 |
143 | 수치심 | 부끄럽다 | 수치심 | 창피하다 | 0.488 |
144 | 수치심 | 부끄럽다 | 수치심 | 민망하다 | 0.587 |
145 | 수치심 | 부끄럽다 | 혐오 | 싫다 | 0.530 |
146 | 수치심 | 비참하다 | 슬픔 | 비통하다 | 0.464 |
147 | 수치심 | 비참하다 | 슬픔 | 슬프다 | 0.485 |
148 | 수치심 | 비참하다 | 혐오 | 속상하다 | 0.569 |
149 | 수치심 | 창피하다 | 수치심 | 민망하다 | 0.557 |
150 | 수치심 | 창피하다 | 슬픔 | 비통하다 | 0.472 |
151 | 수치심 | 창피하다 | 혐오 | 싫다 | 0.568 |
152 | 수치심 | 참담하다 | 허무 | 허무하다 | 0.566 |
153 | 수치심 | 참담하다 | 허무 | 허탈하다 | 0.598 |
154 | 슬픔 | 비통하다 | 슬픔 | 슬프다 | 0.438 |
155 | 슬픔 | 비통하다 | 슬픔 | 서럽다 | 0.531 |
156 | 슬픔 | 비통하다 | 수치심 | 비참하다 | 0.464 |
157 | 슬픔 | 비통하다 | 수치심 | 창피하다 | 0.472 |
158 | 슬픔 | 비통하다 | 동정 | 안쓰럽다 | 0.516 |
159 | 슬픔 | 비통하다 | 상쾌함 | 홀가분하다 | 0.549 |
160 | 슬픔 | 비통하다 | 혐오 | 속상하다 | 0.581 |
161 | 슬픔 | 서글프다 | 슬픔 | 울적하다 | 0.518 |
162 | 슬픔 | 서글프다 | 슬픔 | 슬프다 | 0.548 |
163 | 슬픔 | 서글프다 | 허무 | 허무하다 | 0.436 |
164 | 슬픔 | 서글프다 | 고독 | 쓸쓸하다 | 0.481 |
165 | 슬픔 | 서글프다 | 고독 | 외롭다 | 0.549 |
166 | 슬픔 | 서글프다 | 고독 | 허전하다 | 0.558 |
167 | 슬픔 | 서럽다 | 슬픔 | 슬프다 | 0.413 |
168 | 슬픔 | 서럽다 | 슬픔 | 서글프다 | 0.520 |
169 | 슬픔 | 서럽다 | 슬픔 | 우울하다 | 0.525 |
170 | 슬픔 | 서럽다 | 슬픔 | 비통하다 | 0.531 |
171 | 슬픔 | 서럽다 | 혐오 | 서운하다 | 0.481 |
172 | 슬픔 | 서럽다 | 혐오 | 속상하다 | 0.487 |
173 | 슬픔 | 서럽다 | 고뇌 | 괴롭다 | 0.541 |
174 | 슬픔 | 서럽다 | 고뇌 | 고통스럽다 | 0.562 |
175 | 슬픔 | 서럽다 | 상쾌함 | 홀가분하다 | 0.579 |
176 | 슬픔 | 슬프다 | 슬픔 | 서럽다 | 0.413 |
177 | 슬픔 | 슬프다 | 슬픔 | 우울하다 | 0.457 |
178 | 슬픔 | 슬프다 | 슬픔 | 울적하다 | 0.487 |
179 | 슬픔 | 슬프다 | 슬픔 | 서글프다 | 0.548 |
180 | 슬픔 | 슬프다 | 슬픔 | 억울하다 | 0.615 |
181 | 슬픔 | 슬프다 | 혐오 | 속상하다 | 0.320 |
182 | 슬픔 | 슬프다 | 동정 | 안쓰럽다 | 0.432 |
183 | 슬픔 | 슬프다 | 혐오 | 서운하다 | 0.459 |
184 | 슬픔 | 슬프다 | 수치심 | 비참하다 | 0.485 |
185 | 슬픔 | 슬프다 | 고독 | 쓸쓸하다 | 0.538 |
186 | 슬픔 | 슬프다 | 동정 | 안쓰럽다 | 0.579 |
187 | 슬픔 | 억울하다 | 분노 | 화나다 | 0.554 |
188 | 슬픔 | 억울하다 | 슬픔 | 비통하다 | 0.573 |
189 | 슬픔 | 억울하다 | 슬픔 | 슬프다 | 0.615 |
190 | 슬픔 | 억울하다 | 혐오 | 속상하다 | 0.569 |
191 | 슬픔 | 억울하다 | 수치심 | 비참하다 | 0.607 |
192 | 슬픔 | 억울하다 | 동정 | 안타깝다 | 0.613 |
193 | 슬픔 | 우울하다 | 슬픔 | 울적하다 | 0.428 |
194 | 슬픔 | 우울하다 | 슬픔 | 슬프다 | 0.457 |
195 | 슬픔 | 우울하다 | 슬픔 | 서럽다 | 0.525 |
196 | 슬픔 | 우울하다 | 고독 | 쓸쓸하다 | 0.431 |
197 | 슬픔 | 우울하다 | 고독 | 외롭다 | 0.440 |
198 | 슬픔 | 우울하다 | 혐오 | 속상하다 | 0.485 |
199 | 슬픔 | 우울하다 | 동정 | 안타깝다 | 0.536 |
200 | 슬픔 | 우울하다 | 고뇌 | 괴롭다 | 0.539 |
201 | 슬픔 | 울적하다 | 슬픔 | 우울하다 | 0.428 |
202 | 슬픔 | 울적하다 | 슬픔 | 슬프다 | 0.487 |
203 | 슬픔 | 울적하다 | 슬픔 | 서글프다 | 0.518 |
204 | 슬픔 | 울적하다 | 고독 | 허전하다 | 0.473 |
205 | 슬픔 | 울적하다 | 고독 | 외롭다 | 0.486 |
206 | 슬픔 | 울적하다 | 혐오 | 속상하다 | 0.499 |
207 | 슬픔 | 울적하다 | 고독 | 쓸쓸하다 | 0.526 |
208 | 슬픔 | 울적하다 | 혐오 | 섭섭하다 | 0.548 |
209 | 슬픔 | 울적하다 | 고뇌 | 심란하다 | 0.549 |
210 | 슬픔 | 처량하다 | 혐오 | 지긋지긋하다 | 0.494 |
211 | 욕구 | 궁금하다 | 혐오 | 섭섭하다 | 0.525 |
212 | 욕구 | 부럽다 | 혐오 | 야속하다 | 0.633 |
213 | 이완 | NaN | NaN | NaN | NaN |
214 | 허무 | 허무하다 | 허무 | 허탈하다 | 0.540 |
215 | 허무 | 허무하다 | 슬픔 | 서글프다 | 0.436 |
216 | 허무 | 허무하다 | 동정 | 안타깝다 | 0.538 |
217 | 허무 | 허무하다 | 혐오 | 지긋지긋하다 | 0.540 |
218 | 허무 | 허무하다 | 수치심 | 참담하다 | 0.566 |
219 | 허무 | 허탈하다 | 허무 | 허무하다 | 0.540 |
220 | 허무 | 허탈하다 | 수치심 | 참담하다 | 0.598 |
221 | 허무 | 허탈하다 | 고뇌 | 초조하다 | 0.602 |
222 | 혐오 | 괘씸하다 | 혐오 | 섭섭하다 | 0.566 |
223 | 혐오 | 괘씸하다 | 혐오 | 서운하다 | 0.573 |
224 | 혐오 | 괘씸하다 | 슬픔 | 서럽다 | 0.520 |
225 | 혐오 | 물리다 | 고독 | 쓸쓸하다 | 0.505 |
226 | 혐오 | 밉다 | 동정 | 불쌍하다 | 0.552 |
227 | 혐오 | 부담스럽다 | 고뇌 | 난감하다 | 0.620 |
228 | 혐오 | 부담스럽다 | 놀람 | 황당하다 | 0.638 |
229 | 혐오 | 서운하다 | 혐오 | 섭섭하다 | 0.330 |
230 | 혐오 | 서운하다 | 혐오 | 속상하다 | 0.354 |
231 | 혐오 | 서운하다 | 혐오 | 괘씸하다 | 0.573 |
232 | 혐오 | 서운하다 | 슬픔 | 슬프다 | 0.459 |
233 | 혐오 | 서운하다 | 슬픔 | 서럽다 | 0.481 |
234 | 혐오 | 서운하다 | 미안함 | 죄송스럽다 | 0.563 |
235 | 혐오 | 서운하다 | 미안함 | 미안하다 | 0.582 |
236 | 혐오 | 서운하다 | 슬픔 | 울적하다 | 0.583 |
237 | 혐오 | 섭섭하다 | 혐오 | 서운하다 | 0.330 |
238 | 혐오 | 섭섭하다 | 혐오 | 속상하다 | 0.508 |
239 | 혐오 | 섭섭하다 | 혐오 | 괘씸하다 | 0.566 |
240 | 혐오 | 섭섭하다 | 분노 | 화나다 | 0.593 |
241 | 혐오 | 속상하다 | 혐오 | 서운하다 | 0.330 |
242 | 혐오 | 속상하다 | 슬픔 | 슬프다 | 0.320 |
243 | 혐오 | 속상하다 | 분노 | 화나다 | 0.482 |
244 | 혐오 | 속상하다 | 슬픔 | 우울하다 | 0.485 |
245 | 혐오 | 속상하다 | 슬픔 | 서럽다 | 0.487 |
246 | 혐오 | 속상하다 | 슬픔 | 울적하다 | 0.499 |
247 | 혐오 | 속상하다 | 미안함 | 죄송스럽다 | 0.528 |
248 | 혐오 | 속상하다 | 동정 | 안타깝다 | 0.534 |
249 | 혐오 | 속상하다 | 슬픔 | 억울하다 | 0.569 |
250 | 혐오 | 속상하다 | 수치심 | 비참하다 | 0.569 |
251 | 혐오 | 속상하다 | 슬픔 | 비통하다 | 0.581 |
252 | 혐오 | 속상하다 | 후회 | 아쉽다 | 0.586 |
253 | 혐오 | 싫다 | 혐오 | 짜증나다 | 0.543 |
254 | 혐오 | 싫다 | 혐오 | 지긋지긋하다 | 0.548 |
255 | 혐오 | 싫다 | 수치심 | 부끄럽다 | 0.530 |
256 | 혐오 | 싫다 | 수치심 | 창피하다 | 0.568 |
257 | 혐오 | 싫다 | 수치심 | 민망하다 | 0.581 |
258 | 혐오 | 싫다 | 고뇌 | 괴롭다 | 0.622 |
259 | 혐오 | 언짢다 | 고뇌 | 찝찝하다 | 0.606 |
260 | 혐오 | 지겹다 | 혐오 | 지긋지긋하다 | 0.597 |
261 | 혐오 | 지긋지긋하다 | 슬픔 | 처량하다 | 0.494 |
262 | 혐오 | 지긋지긋하다 | 고뇌 | 암담하다 | 0.526 |
263 | 혐오 | 지긋지긋하다 | 허무 | 허무하다 | 0.540 |
264 | 혐오 | 짜증나다 | 혐오 | 싫다 | 0.543 |
265 | 후회 | 아쉽다 | 혐오 | 속상하다 | 0.586 |
266 | 복합감정 | 시원섭섭하다 | 상쾌함 | 개운하다 | 0.592 |
v=data['기준동사분류'].value_counts()
v2=v.to_frame()
#v2.to_excel('senti_cat_v2.xlsx')
v2
기준동사분류 | |
---|---|
슬픔 | 57 |
혐오 | 43 |
고뇌 | 28 |
기쁨 | 24 |
동정 | 19 |
고독 | 15 |
수치심 | 14 |
미안함 | 12 |
두려움 | 12 |
수용 | 9 |
상쾌함 | 9 |
허무 | 8 |
놀람 | 5 |
분노 | 4 |
감사 | 2 |
욕구 | 2 |
후회 | 1 |
감동 | 1 |
이완 | 1 |
복합감정 | 1 |
size1=data.groupby(['기준동사분류','관련동사분류']).size()
size2=size1.to_frame()
size2
0 | ||
---|---|---|
기준동사분류 | 관련동사분류 | |
감사 | 기쁨 | 1 |
미안함 | 1 | |
고뇌 | 고뇌 | 8 |
놀람 | 1 | |
동정 | 2 | |
두려움 | 5 | |
슬픔 | 6 | |
허무 | 1 | |
혐오 | 5 | |
고독 | 고독 | 3 |
동정 | 1 | |
두려움 | 1 | |
슬픔 | 9 | |
혐오 | 1 | |
기쁨 | 감사 | 1 |
기쁨 | 13 | |
수용 | 10 | |
놀람 | 고뇌 | 1 |
놀람 | 2 | |
슬픔 | 1 | |
혐오 | 1 | |
동정 | 고뇌 | 2 |
고독 | 2 | |
동정 | 2 | |
슬픔 | 10 | |
허무 | 1 | |
혐오 | 2 | |
두려움 | 고뇌 | 5 |
고독 | 1 | |
두려움 | 2 | |
미안함 | 1 | |
슬픔 | 3 | |
미안함 | 감사 | 1 |
두려움 | 1 | |
미안함 | 4 | |
슬픔 | 1 | |
혐오 | 5 | |
복합감정 | 상쾌함 | 1 |
분노 | 슬픔 | 1 |
혐오 | 3 | |
상쾌함 | 고뇌 | 1 |
복합감정 | 1 | |
상쾌함 | 5 | |
슬픔 | 1 | |
허무 | 1 | |
수용 | 기쁨 | 9 |
수치심 | 수치심 | 5 |
슬픔 | 3 | |
허무 | 2 | |
혐오 | 4 | |
슬픔 | 고뇌 | 4 |
고독 | 9 | |
동정 | 5 | |
분노 | 1 | |
상쾌함 | 2 | |
수치심 | 4 | |
슬픔 | 21 | |
허무 | 1 | |
혐오 | 10 | |
욕구 | 혐오 | 2 |
허무 | 고뇌 | 1 |
동정 | 1 | |
수치심 | 2 | |
슬픔 | 1 | |
허무 | 2 | |
혐오 | 1 | |
혐오 | 고뇌 | 4 |
고독 | 1 | |
놀람 | 1 | |
동정 | 2 | |
미안함 | 3 | |
분노 | 2 | |
수치심 | 4 | |
슬픔 | 11 | |
허무 | 1 | |
혐오 | 13 | |
후회 | 1 | |
후회 | 혐오 | 1 |
18개이 범주 중 10개의 범주에서 기준동사범주와 관련동사범주의 일치율이 높은 것으로 확인되는데, 이를 통해 홍종선(2009)에서 제시된 감정동사의 분류 기재와 결과가 유의미하다는 것을 알 수 있다. 또한 각 기준동사범주에 대해 특정 관련동사범주의 비율이 높게 나옴을 확인할 수 있는데, 이는 감정동사범주들 간의 유사성도 존재한다는 것을 의미한다. 따라서 이후 규모가 더 큰 데이터를 사용하여 범주들 간의 유사성을 검증한 후 이를 다시 범주화할 수 있을 것으로 보인다. 이렇게 범주를 다시 범주화 하는 것은 세밀하게 나눠진 인간 감정의 범주를 덜 세분화하여 컴퓨터가 인간이 구사한 문장 속의 감정동사를 통해 인간이 전달하고자 한 감정과 근접한 감정을 인식할 수 있는또 다른 방법이 될 수도 있을 것이라 생각된다.