본문 바로가기

Programming/Python

Python을 이용한 한글 명사별 분류(Code)

Konlpy를 이용하여 크롤링한 데이터를 명사별로 분류하고자 한다.

 

https://sports.news.naver.com/news.nhn?oid=139&aid=0002124617

 

모리뉴 “1위 팀 우리 꺼릴 것” vs 사리 “모리뉴 만나고 싶다”

[스포탈코리아] 허윤수 기자= 유럽축구연맹(UEFA) 챔피언스리그 16강 진출팀이 모두 정해진 가운데 유벤투스의 마우리치오 사리 감독이 만나고 싶은 팀을 밝혔다.‘야후 스포츠’는 13일(한국시간) “사리 감독은 토트넘 홋스퍼와의 만남을 환영할 것이다. 그는 특별한 모리뉴 감독과 만날 수 있다”라고 전했다.조별리그를 1위로...

sports.news.naver.com

우선 크롤링을 하여 본문을 긁어온다.

 

1
2
3
4
5
6
import requests
import re
content = req.text.split('"newsEndContents">')[1].split('</div>')[0]
print(content)
 

긁어온 본문은 다음과 같다

본문 크롤링

필요없는 html 정보 (br, span) 등을 제거하는 방법은 다음과 같다

 

content = re.sub('<.+?>', '', content, 0).strip()

 

html 정보를 제거한 본문 크롤링

이제 konlpy를 설치해야 한다.

konlpy 설치 방법은 pip3 install konlpy(python 3 기준)이다.

 

그 다음 아래 소스와 같이 konlpy를 Import 하고, Kkma 모델을 가져온다.

Kkma말고도 Twitter 등이 있다고 한다.

1
2
3
4
5
6
7
8
9
10
11
12
import requests
import re
from konlpy.tag import Kkma
from konlpy.utils import pprint
content = req.text.split('"newsEndContents">')[1].split('</div>')[0]
content = re.sub('<.+?>''', content, 0).strip()
nlpy = Kkma()
print(noun)
 
 

그 다음, nlpy.nouns 를 이용하여 content로 부터 명사 단위로 쪼갠다.

 

결과

결과이다.

딥러닝을 잠깐이나마 공부한 사람들은 알겠지만, 명사를 문장 내에서 인식하여 쪼갠다는 것은 매우 어려운일이다.

특히 한글의 경우, 구조상으로 영어보다 훨씬 더 예측하기 어렵다고 한다.