데이터분석/데이터분석

글 스크래핑 후 형태소를 분석

이규승 2022. 4. 30. 13:54
728x90

위키백과 사이트에서 검색단어 '이순신' 관련 내용 스크래핑 후 형태소 분석하기

https://ko.wikipedia.org/wiki/%EC%9D%B4%EC%88%9C%EC%8B%A0

 

이순신 - 위키백과, 우리 모두의 백과사전

이순신(李舜臣, 1545년 4월 28일 ~ 1598년 12월 16일 (음력 11월 19일))은 조선 중기의 무신이었다. 본관은 덕수(德水), 자는 여해(汝諧), 시호는 충무(忠武)였으며, 한성 출신이었다. 문반 가문 출신으로

ko.wikipedia.org

 

주소형태를 만들기 위해 이순신을 parse 해주고 내용을 읽어온다.

import urllib
from urllib import parse

para = parse.quote('이순신') # 이순신을 한글 인코딩해준다.
url = "http://ko.wikipedia.org/wiki/" + para
page = urllib.request.urlopen(url)

#BeautifulSoup을 이용하여 담기
from bs4 import BeautifulSoup
soup = BeautifulSoup(page.read(), 'lxml') # 'lxml' -> 'html.parse' 가능하다

 

한글 형태소 분석으로 명사만 추출해서 기억장소에 담기

> BeautifulSoup에 대해 어느정도 지식이 있어야 한다.

from konlpy.tag import Okt
okt = Okt()
wordlist = [] # 명사를 담아주는 곳

for item in soup.select ("#mw-content-text > div > p"): #p요소 select
	if item.string != None: # None을 제외
    	wordlist += okt.nouns(item.string) # okt를 이용해 명사만 추출해 wordlits 담기

print('wordlist 출력:', wordlist)
print('단어 수 :', len(wordlist))
print('중복 제거 후 단어 수 :',len(set(wordlist))) # set을 이용하면 중복 제외해준다.

 

단어 발생 횟수를 출력하기

word_dict = {} # 발생 횟수을 표한하기 위한 dictionary
for i in wordlist:
	if i in word_dict:
    	word_dict[i] += 1 # 나온적이 있는 명사면 카운트를 올려준다.
    else:
    	word_dict[i] = 1 # 나온적이 없다면 넣어준다
        
print('word_dict 출력: ', word_dict)
728x90

'데이터분석 > 데이터분석' 카테고리의 다른 글

비율분석  (0) 2022.04.30
ANOVA  (0) 2022.04.30
T-test  (0) 2022.04.30
카이제곱 검정  (0) 2022.04.30
konlpy 한국어 처리 패키지  (0) 2022.04.30