import pandas as pd
import matplotlib.pyplot as plt
import urllib.request
from gensim.models.word2vec import Word2Vec
from konlpy.tag import Okt
urllib.request.urlretrieve("https://raw.githubusercontent.com/pykwon/python/master/testdata_utf8/ratings.txt", filename='rating.txt')
train_data = pd.read_table('rating.txt')
print(train_data[:3])
print(len(train_data))
print(train_data[train_data['label'].isnull()])
print(train_data.isnull().values.any())
train_data = train_data.dropna(how='any')
print(train_data.isnull().values.any())
print(len(train_data))
train_data['document'] = train_data['document'].str.replace('[^가-힣 ]', '')
print(train_data[:5])
stopwords = ['을', '으로', '은', '는', '들', '와', '에', '게', '해서']
okt = Okt()
token_data = []
for sent in train_data['document']:
temp = okt.morphs(sent, stem=True)
temp = [word for word in temp if not word in stopwords]
token_data.append(temp)
import time
time.sleep(5)
print(token_data)
print('리뷰의 최대 길이 :', max(len(i) for i in token_data))
print('리뷰의 평균 길이 :', sum(map(len, token_data))/ len(token_data))
plt.hist([len(s) for s in token_data])
plt.xlabel('length of samples')
plt.xlabel('number of samples')
plt.show()
word_model = Word2Vec(sentences=token_data, size = 100, window = 5, min_count=5, sg=0)
print(word_model.wv.vectors.shape)
print(word_model.wv.most_similar('주인공'))
print(word_model.wv.most_similar('드라마'))
import gensim
model = gensim.models.Word2Vec.load('ko.bin')
result = model.wv.most_similar("프로그램")
print(result)
result = model.wv.most_similar("자바")
print(result)
result = model.wv.most_similar("축구")
print(result)
<console>
id document label
0 8112052 어릴때보고 지금다시봐도 재밌어요ㅋㅋ 1.0
1 8132799 디자인을 배우는 학생으로, 외국디자이너와 그들이 일군 전통을 통해 발전해가는 문화산... 1.0
2 4655635 폴리스스토리 시리즈는 1부터 뉴까지 버릴께 하나도 없음.. 최고. 1.0
10295
id document label
3624 2078364 좋다. 잔잔하고 깊이있게 파고드는 내용. 1 NaN
3632 4166145 영화음악도 나름 괜찮았었죠. 테잎으로 사기까지 했는데...이젠 구하기가...--; 1 NaN
True
False
10293
id document label
0 8112052 어릴때보고 지금다시봐도 재밌어요 1.0
1 8132799 디자인을 배우는 학생으로 외국디자이너와 그들이 일군 전통을 통해 발전해가는 문화산업... 1.0
2 4655635 폴리스스토리 시리즈는 부터 뉴까지 버릴께 하나도 없음 최고 1.0
3 9251303 와 연기가 진짜 개쩔구나 지루할거라고 생각했는데 몰입해서 봤다 그래 이런게 진짜 영화지 1.0
4 10067386 안개 자욱한 밤하늘에 떠 있는 초승달 같은 영화 1.0
<ipython-input-11-3ceeb5958b23>:2: FutureWarning: The default value of regex will change from True to False in a future version.
train_data['document'] = train_data['document'].str.replace('[^가-힣 ]', '')
리뷰의 최대 길이 : 68
리뷰의 평균 길이 : 11.994948022928204
(2696, 100)
[('그리고', 0.9998807907104492), ('모든', 0.9998741149902344), ('남자', 0.9998416900634766), ('남', 0.9998341202735901), ('대한', 0.9998313188552856), ('여', 0.9998266100883484), ('여자', 0.9998222589492798), ('훌륭하다', 0.9998208284378052), ('차다', 0.9998202323913574), ('수준', 0.999819815158844)]
[('걸작', 0.9996998310089111), ('명작', 0.9996989965438843), ('한국', 0.9996887445449829), ('년대', 0.999679446220398), ('정말', 0.9996774196624756), ('임', 0.9996671676635742), ('막장', 0.9996431469917297), ('멋지다', 0.9996140003204346), ('팬', 0.9996113181114197), ('급', 0.9996106624603271)]
[('망하다', 0.9995930194854736), ('버리다', 0.9995826482772827), ('전', 0.9995824098587036), ('받다', 0.9995762705802917), ('쓰다', 0.9995754957199097), ('놓다', 0.9995753169059753), ('존나', 0.9995747804641724), ('없이', 0.9995696544647217), ('서', 0.9995642304420471), ('빠지다', 0.9995630979537964)]
[('애플리케이션', 0.6408973932266235), ('시스템', 0.6084378957748413), ('플러그인', 0.6059278249740601), ('자막', 0.5899795889854431), ('포맷', 0.5888468623161316), ('플랫폼', 0.5867334008216858), ('소프트웨어', 0.5808665752410889), ('텔레비전', 0.5772788524627686), ('세션', 0.5750851035118103), ('솔루션', 0.5719414353370667)]
[('스크립트', 0.7378242015838623), ('컴파일러', 0.6451905965805054), ('리눅스', 0.6398512721061707), ('라이브러리', 0.6347814798355103), ('유닉스', 0.6131169199943542), ('리스프', 0.6066397428512573), ('도스', 0.6017436385154724), ('미디', 0.5987685918807983), ('프로그래밍', 0.5934149622917175), ('인터프리터', 0.5905465483665466)]
[('아이스하키', 0.7354738116264343), ('배구', 0.7272718548774719), ('권투', 0.7065301537513733), ('축구팀', 0.6947455406188965), ('농구', 0.6805489659309387), ('야구', 0.6605638265609741), ('럭비', 0.653668224811554), ('미식축구', 0.644683837890625), ('테니스', 0.6392970681190491), ('골프', 0.6258326768875122)]
리뷰의 길이 평균 시각화