[Python] 형태소분석 – Konlpy 사용하기

KoNLPy: 파이썬 한국어 NLP

KoNLPy 실습

형태소 분석 및 품사 태깅

In [1]:
from konlpy.tag import Twitter

sentance = '아버지가 방에 들어 가신다.'
twt = Twitter()
tagging = twt.pos(sentance)
tagging
Out[1]:
[('아버지', 'Noun'),
 ('가', 'Josa'),
 ('방', 'Noun'),
 ('에', 'Josa'),
 ('들어', 'Verb'),
 ('가신', 'Noun'),
 ('다', 'Josa'),
 ('.', 'Punctuation')]
In [2]:
from konlpy.tag import Kkma
from konlpy.tag import Komoran
from konlpy.tag import Hannanum

kkma = Kkma()
kom = Komoran()
hann = Hannanum()
In [3]:
kkma_tagger = kkma.pos(sentance)
kkma_tagger
Out[3]:
[('아버지', 'NNG'),
 ('가', 'JKS'),
 ('방', 'NNG'),
 ('에', 'JKM'),
 ('듣', 'VV'),
 ('어', 'ECD'),
 ('가시', 'VV'),
 ('ㄴ다', 'EFN'),
 ('.', 'SF')]
In [4]:
kom_tagger = kom.pos(sentance)
kom_tagger
Out[4]:
[('아버지', 'NNG'),
 ('가', 'JKS'),
 ('방', 'NNG'),
 ('에', 'JKB'),
 ('들', 'VV'),
 ('어', 'EC'),
 ('가', 'VV'),
 ('시', 'EP'),
 ('ㄴ다', 'EF'),
 ('.', 'SF')]
In [5]:
import requests
from bs4 import BeautifulSoup

url = 'http://news.naver.com/main/ranking/read.nhn?mid=etc&sid1=111&rankingType=popular_day&oid=001&aid=0008767582&date=20161020&type=1&rankingSectionId=105&rankingSeq=1'

resp = requests.get(url)

soup = BeautifulSoup(resp.text, 'html.parser')
articlebody = soup.find('div', id='articleBodyContents')
content = articlebody.text
content
Out[5]:
'\n\n [연합뉴스자료사진]갤노트7 교환 촉진하고 충성고객 붙잡기(서울=연합뉴스) 임화섭 기자 = 삼성전자가 갤럭시노트7 구매자들과 이동통신 단말기 유통점을 위한 추가 피해보상 프로그램을 곧 내놓을 것으로 보인다.    20일 업계에 따르면 삼성전자는 갤럭시노트7 구매자들이 기기를 조기에 반납하고 다른 기종으로 교환하도록 유도하기 위한 방안을 만들고 있으며 금명간 발표할 예정이다.    삼성전자 스마트폰을 계속 이용하려는 \'충성고객\'을 위해 내년에 나올 갤럭시S8 등 신제품을 살 때 혜택을 주는 방안 등도 검토중인 것으로 전해졌다.    김진해 삼성전자 한국총괄 모바일영업팀 전무는 이날 서울 사당역 근처의 한 이동통신 대리점을 방문해 "소비자들의 이탈을 막고 유통망 입장에서도 큰 혜택을 볼 수 있는 프로그램이 될 것"이라며 "고객들이 삼성전자 모델로 갈아타고 내년에 새로운 모델로 또 쉽게 교체할 수 있도록 해 드리겠다"고 말했다.    삼성전자는 발화 문제를 일으킨 갤럭시노트7을 지난 11일 단종하고 13일부터 제품 교환과 환불을 실시하는 중이다. 타 기종 교환이나 환불 기한은 12월 31일이다.    최양희 미래창조과학부 장관은 이날 같은 대리점을 찾아  "(갤럭시노트7 단종 사태와 관련해) 무엇보다 소비자 피해와 불편이 최소화돼야 하고, 유통망의 애로 해소에도 노력해야 한다"며 "미래부가 여기 도움을 줄 수 있는 부분이 있는지 살펴보겠다"고 말했다.    solatido@yna.co.kr\n\n'
In [6]:
from pprint import pprint

tokens = twt.pos(content, norm=True)
pprint(tokens)
[('[', 'Punctuation'),
 ('연합뉴스', 'Noun'),
 ('자료', 'Noun'),
 ('사진', 'Noun'),
 (']', 'Punctuation'),
 ('갤', 'Verb'),
 ('노트', 'Noun'),
 ('7', 'Number'),
 ('교환', 'Noun'),
 ('촉진', 'Noun'),
 ('하고', 'Josa'),
 ('충성', 'Noun'),
 ('고객', 'Noun'),
 ('붙잡', 'Verb'),
 ('기', 'Eomi'),
 ('(', 'Punctuation'),
 ('서울', 'Noun'),
 ('=', 'Punctuation'),
 ('연합뉴스', 'Noun'),
 (')', 'Punctuation'),
 ('임화', 'Noun'),
 ('섭', 'Noun'),
 ('기자', 'Noun'),
 ('=', 'Punctuation'),
 ('삼성', 'Noun'),
 ('전자', 'Noun'),
 ('가', 'Josa'),
 ('갤럭시', 'Noun'),
 ('노트', 'Noun'),
 ('7', 'Number'),
 ('구매', 'Noun'),
 ('자', 'Noun'),
 ('들', 'Suffix'),
 ('과', 'Josa'),
 ('이동통신', 'Noun'),
 ('단말기', 'Noun'),
 ('유통', 'Noun'),
 ('점', 'Noun'),
 ('을', 'Josa'),
 ('위한', 'Verb'),
 ('추가', 'Noun'),
 ('피해', 'Noun'),
 ('보상', 'Noun'),
 ('프로그램', 'Noun'),
 ('을', 'Josa'),
 ('곧', 'Noun'),
 ('내놓', 'Verb'),
 ('을', 'Eomi'),
 ('것', 'Noun'),
 ('으로', 'Josa'),
 ('보인', 'Verb'),
 ('다', 'Eomi'),
 ('.', 'Punctuation'),
 ('20', 'Number'),
 ('일', 'Noun'),
 ('업계', 'Noun'),
 ('에', 'Josa'),
 ('따르', 'Verb'),
 ('면', 'Eomi'),
 ('삼성', 'Noun'),
 ('전자', 'Noun'),
 ('는', 'Josa'),
 ('갤럭시', 'Noun'),
 ('노트', 'Noun'),
 ('7', 'Number'),
 ('구매', 'Noun'),
 ('자', 'Suffix'),
 ('들이', 'Verb'),
 ('기기', 'Noun'),
 ('를', 'Josa'),
 ('조기', 'Noun'),
 ('에', 'Josa'),
 ('반납', 'Noun'),
 ('하고', 'Josa'),
 ('다른', 'Noun'),
 ('기종', 'Noun'),
 ('으로', 'Josa'),
 ('교환하도', 'Verb'),
 ('록', 'Eomi'),
 ('유도', 'Noun'),
 ('하기', 'Verb'),
 ('위한', 'Verb'),
 ('방안', 'Noun'),
 ('을', 'Josa'),
 ('만들', 'Verb'),
 ('고', 'Eomi'),
 ('있으', 'Adjective'),
 ('며', 'Eomi'),
 ('금명간', 'Noun'),
 ('발표할', 'Verb'),
 ('예정', 'Noun'),
 ('이다', 'Josa'),
 ('.', 'Punctuation'),
 ('삼성', 'Noun'),
 ('전자', 'Noun'),
 ('스마트폰', 'Noun'),
 ('을', 'Josa'),
 ('계속', 'Noun'),
 ('이용하려', 'Verb'),
 ('는', 'Eomi'),
 ("'", 'Punctuation'),
 ('충성', 'Noun'),
 ('고객', 'Noun'),
 ("'", 'Punctuation'),
 ('을', 'Josa'),
 ('위해', 'Noun'),
 ('내년', 'Noun'),
 ('에', 'Josa'),
 ('나올', 'Verb'),
 ('갤럭시', 'Noun'),
 ('S', 'Alpha'),
 ('8', 'Number'),
 ('등', 'Noun'),
 ('신제품', 'Noun'),
 ('을', 'Josa'),
 ('살', 'Noun'),
 ('때', 'Noun'),
 ('혜택', 'Noun'),
 ('을', 'Josa'),
 ('주는', 'Verb'),
 ('방안', 'Noun'),
 ('등', 'Noun'),
 ('도', 'Josa'),
 ('검토', 'Noun'),
 ('중', 'Suffix'),
 ('인', 'Josa'),
 ('것', 'Noun'),
 ('으로', 'Josa'),
 ('전해졌', 'Verb'),
 ('다', 'Eomi'),
 ('.', 'Punctuation'),
 ('김진해', 'Noun'),
 ('삼성', 'Noun'),
 ('전자', 'Noun'),
 ('한국', 'Noun'),
 ('총괄', 'Noun'),
 ('모바일', 'Noun'),
 ('영업', 'Noun'),
 ('팀', 'Noun'),
 ('전무', 'Noun'),
 ('는', 'Josa'),
 ('이', 'Determiner'),
 ('날', 'Noun'),
 ('서울', 'Noun'),
 ('사당역', 'Noun'),
 ('근처', 'Noun'),
 ('의', 'Josa'),
 ('한', 'Verb'),
 ('이동통신', 'Noun'),
 ('대리점', 'Noun'),
 ('을', 'Josa'),
 ('방문해', 'Verb'),
 ('"', 'Punctuation'),
 ('소비자', 'Noun'),
 ('들', 'Suffix'),
 ('의', 'Josa'),
 ('이탈', 'Noun'),
 ('을', 'Josa'),
 ('막고', 'Verb'),
 ('유통', 'Noun'),
 ('망', 'Noun'),
 ('입장', 'Noun'),
 ('에서도', 'Josa'),
 ('큰', 'Verb'),
 ('혜택', 'Noun'),
 ('을', 'Josa'),
 ('볼', 'Noun'),
 ('수', 'Noun'),
 ('있는', 'Adjective'),
 ('프로그램', 'Noun'),
 ('이', 'Josa'),
 ('될', 'Verb'),
 ('것', 'Noun'),
 ('"', 'Punctuation'),
 ('이', 'Determiner'),
 ('라며', 'Noun'),
 ('"', 'Punctuation'),
 ('고객', 'Noun'),
 ('들', 'Suffix'),
 ('이', 'Josa'),
 ('삼성', 'Noun'),
 ('전자', 'Noun'),
 ('모델', 'Noun'),
 ('로', 'Josa'),
 ('갈아타고', 'Verb'),
 ('내년', 'Noun'),
 ('에', 'Josa'),
 ('새로운', 'Adjective'),
 ('모델', 'Noun'),
 ('로', 'Josa'),
 ('또', 'Noun'),
 ('쉽', 'Verb'),
 ('게', 'Eomi'),
 ('교체', 'Noun'),
 ('할', 'Verb'),
 ('수', 'Noun'),
 ('있도', 'Adjective'),
 ('록', 'Eomi'),
 ('해', 'Noun'),
 ('드리', 'Verb'),
 ('겠', 'PreEomi'),
 ('다', 'Eomi'),
 ('"', 'Punctuation'),
 ('고', 'Noun'),
 ('말했', 'Verb'),
 ('다', 'Eomi'),
 ('.', 'Punctuation'),
 ('삼성', 'Noun'),
 ('전자', 'Noun'),
 ('는', 'Josa'),
 ('발화', 'Noun'),
 ('문제', 'Noun'),
 ('를', 'Josa'),
 ('일으킨', 'Verb'),
 ('갤럭시', 'Noun'),
 ('노트', 'Noun'),
 ('7', 'Number'),
 ('을', 'Josa'),
 ('지난', 'Noun'),
 ('11', 'Number'),
 ('일', 'Noun'),
 ('단종', 'Noun'),
 ('하고', 'Josa'),
 ('13', 'Number'),
 ('일', 'Noun'),
 ('부터', 'Josa'),
 ('제품', 'Noun'),
 ('교환', 'Noun'),
 ('과', 'Josa'),
 ('환불', 'Noun'),
 ('을', 'Josa'),
 ('실시하는', 'Verb'),
 ('중이', 'Noun'),
 ('다', 'Josa'),
 ('.', 'Punctuation'),
 ('타', 'Noun'),
 ('기종', 'Noun'),
 ('교환', 'Noun'),
 ('이나', 'Josa'),
 ('환불', 'Noun'),
 ('기한', 'Noun'),
 ('은', 'Josa'),
 ('12', 'Number'),
 ('월', 'Noun'),
 ('31', 'Number'),
 ('일이', 'Noun'),
 ('다', 'Josa'),
 ('.', 'Punctuation'),
 ('최양희', 'Noun'),
 ('미래창조과학부', 'Noun'),
 ('장관', 'Noun'),
 ('은', 'Josa'),
 ('이', 'Determiner'),
 ('날', 'Noun'),
 ('같은', 'Adjective'),
 ('대리점', 'Noun'),
 ('을', 'Josa'),
 ('찾아', 'Verb'),
 ('"(', 'Punctuation'),
 ('갤럭시', 'Noun'),
 ('노트', 'Noun'),
 ('7', 'Number'),
 ('단종', 'Noun'),
 ('사태', 'Noun'),
 ('와', 'Josa'),
 ('관련해', 'Verb'),
 (')', 'Punctuation'),
 ('무엇', 'Noun'),
 ('보다', 'Josa'),
 ('소비자', 'Noun'),
 ('피해', 'Noun'),
 ('와', 'Josa'),
 ('불편', 'Noun'),
 ('이', 'Josa'),
 ('최소', 'Noun'),
 ('화', 'Suffix'),
 ('돼', 'Verb'),
 ('야', 'Eomi'),
 ('하고', 'Verb'),
 (',', 'Punctuation'),
 ('유통', 'Noun'),
 ('망', 'Noun'),
 ('의', 'Josa'),
 ('애로', 'Noun'),
 ('해소', 'Noun'),
 ('에도', 'Josa'),
 ('노력해야', 'Verb'),
 ('한', 'Verb'),
 ('다', 'Eomi'),
 ('"', 'Punctuation'),
 ('며', 'Noun'),
 ('"', 'Punctuation'),
 ('미래부', 'Noun'),
 ('가', 'Josa'),
 ('여기', 'Noun'),
 ('도움', 'Noun'),
 ('을', 'Josa'),
 ('줄', 'Noun'),
 ('수', 'Noun'),
 ('있는', 'Adjective'),
 ('부분', 'Noun'),
 ('이', 'Josa'),
 ('있는', 'Adjective'),
 ('지', 'Eomi'),
 ('살펴보겠', 'Verb'),
 ('다', 'Eomi'),
 ('"', 'Punctuation'),
 ('고', 'Noun'),
 ('말했', 'Verb'),
 ('다', 'Eomi'),
 ('.', 'Punctuation'),
 ('solatido@yna.co.kr', 'Email')]
In [7]:
nouns = [n for n, tag in tokens if tag == 'Noun']
pprint(nouns)
['연합뉴스',
 '자료',
 '사진',
 '노트',
 '교환',
 '촉진',
 '충성',
 '고객',
 '서울',
 '연합뉴스',
 '여기',
 '도움',
 '줄',
 '수',
 '부분',
 '고'....]

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다