본문 바로가기

Study/class note

감성분석 기본코드(한글)

#1. 텍스트 파일 3개를 불러옵니다. 
ladybug = open('C:\\data\\ladybug_total.txt', encoding='utf-8-sig')
positive = open('C:\\data\\pos_pol_word.txt',encoding='utf-8-sig')
negative = open('C:\\data\\neg_pol_word.txt',encoding='utf-8-sig')

#2. 텍스트 파일 3개를 읽어들입니다.
bug = ladybug.read()   # 게시글을 문자형 변수 bug 에 담는다.
pos = set(positive.read().split('\n'))  # 긍정단어를 엔터로 구분해서 리스트로 구성
neg = set(negative.read().split('\n')) # 부정단어를 엔터로 구분해서 리스트로 구성 

#3. pos 와 neg 리스트에서 결측치를 제거합니다.
pos = list(filter(lambda x:x,pos))
pos1=set(pos) #중복되는 pos 의 단어를 제거
neg = list(filter(lambda x:x,neg))


#4. 긍정단어를 갯수와 함께 ladybug_pos.csv 에 저장합니다. 
f2 = open("c:\\data\\ladybug_pos.csv", "w", encoding="utf-8-sig")  
pos1.remove('정')
pos_cnt = 0           # 긍정단어의 갯수를 담을 변수 생성 
for i in pos1:           # 긍정 단어들을 하나씩 불러와서 i 변수 담습니다.
    if i in bug:         # bug 라는 문자열 변수 안에 i 변수의 있는 긍정단어가  포함되어 있다면
        #print(i+','+ str(bug.count(i)))  # 그 단어를 출력하고  그 건수를 출력해라 ~
        f2.write( i + ',' + str(bug.count(i)) + '\n')  # lady_bug_pos.csv 에 써라 ~

#4. 부정단어를 갯수와 함께 ladybug_neg.csv 에 저장합니다. 
f3= open("c:\\data\\ladybug_neg.csv", "w", encoding="utf-8-sig")  

neg.remove('벌')
neg.remove('해')
neg.remove('화')
neg.remove('ㅜ')
neg.remove('ㅠ')
neg.remove('ㅜㅜ ')
neg.remove('ㅠㅠ ')
neg.remove(':)') # 스마일 페이스

pos_cnt = 0           # 부정단어의 갯수를 담을 변수 생성 
for i in neg:           # 부정 단어들을 하나씩 불러와서 i 변수 담습니다.
    if i in bug:         # bug 라는 문자열 변수 안에 i 변수의 있는 부정단어가  포함되어 있다면
        #print(i+','+ str(bug.count(i)))  # 그 단어를 출력하고  그 건수를 출력해라 ~
        f3.write( i + ',' + str(bug.count(i)) + '\n')  # ladybug_neg.csv 에 써라 ~        
f2.close()

f3.close()

 

#2. ladybug_pos의 긍정단어 상위 20개 나열


import pandas  as  pd

lady_pos = pd.read_csv("c:\\data\\ladybug_pos.csv" , header=None)
lady_pos.columns=['word', 'cnt'] 
lady_pos['순위']=lady_pos['cnt'].rank(method='dense', ascending=False).astype('int')
a=lady_pos[:].sort_values(by=['순위']).head(20) #head()를 이용 상위 20개만 출력
print(a)

#3. ladybug_neg의 부정 단어 상위 20개 나열

import pandas  as  pd

lady_neg = pd.read_csv("c:\\data\\ladybug_neg.csv" , header=None)
lady_neg.columns=['word', 'cnt'] 
lady_neg['순위']=lady_neg['cnt'].rank(method='dense', ascending=False).astype('int')
lady_neg[:].sort_values(by=['순위']).head(20)#head()를 이용 상위 20개만 출력
반응형