1. Zipf's law

# zipf's law => 상위와 하위를 뺀 중간 값을 사용하는 알고리즘 => 불용어 처리
import os
import matplotlib.pyplot as plt
from math import log

from konlpy.tag import Okt # => twitter였는데 이름이 바뀜
ma  = Okt() # 빠르게 형태소 분석을 해준다.

base = "./scraping/"
#for _ in [_ for _ in os.listdir(base)]: # 데이터 하나씩 불러오기
morphemes = list() 
for _ in [_ for _ in os.listdir(base)][:1000]:
    with open(base + _) as fp:
        text = fp.read() # 파일을 읽어옴
    for sentence in sent_tokenize(text):
        morphemes.extend(ma.morphs(sentence))
        
obj = Text(morphemes)
x = range(len(obj.vocab().most_common())) # vocab => 센텐스를 각 어절로 나누어줌, most_common => 가장 높은 순으로 출력해줌
#x = [_[0] for _ in obj.vocab().most_common(500)]
y = [_[1] for _ in obj.vocab().most_common()] # 해당 어절의 수의 갯수를 배열형태로 저장
yy = [log(_) for _ in y] # y의 log(선형된 결과를 뽑아내기 위해서)

plt.plot(x, y, 'r-')
plt.show()

plt.plot(x, yy, 'b-')
plt.show()

 

 

2. Heap's law

# Heap's law => 상위와 하위를 뺀 중간 값을 사용하는 알고리즘 => 불용어 처리
import os
import matplotlib.pyplot as plt
from math import log

from konlpy.tag import Okt # => twitter였는데 이름이 바뀜
ma  = Okt() # 빠르게 형태소 분석을 해준다.

k = 50
b = 0.5
# M = kT^b

base = "./scraping/"
text = ""
morphemes = list() 
for _ in [_ for _ in os.listdir(base)][:50]: # for 모든 파일
    tokens = list()
    with open(base + _) as fp:
        text += fp.read() # 파일 내용
        
    for sentence in sent_tokenize(text): # 토큰화(어절로 나눔)
        tokens.extend(ma.morphs(sentence)) # 형태소 분석 결과를 morphens를 누적하면서 쌓아감(점차 커지는 리스트: tokens)
    morphemes.append(tokens) # 점차 커지는 token 집합을 쌓음
        
obj = Text(morphemes) # 
x = [len(_) for _ in morphemes]
y = [k*_**b for _ in x]
yy = [len(set(_)) for _ in morphemes]

plt.plot(x, y, 'r-')
plt.plot(x, yy, 'b-')
plt.show()
    

1) 결과

2) 로그 결과


x = [log(len(_)) for _ in morphemes]
y = [log(k)+b*log(_) for _ in x]
yy = [log(len(set(_))) for _ in morphemes]

plt.plot(x, y, 'r-')
plt.show()

plt.plot(x, yy, 'b-')
plt.show()

'데이터 분석가 역량' 카테고리의 다른 글

day 12] BPE  (0) 2019.05.15
day 11 ] N-Gram  (0) 2019.05.15
day 10 ] 형태소 분석 심화  (0) 2019.05.14
day 10 ] 형태소 분석 개론  (0) 2019.05.14
day 9 ] 데이터 학습 개론  (0) 2019.05.13

+ Recent posts