기사 텍스트 정제 - konlpy가 지원하는 형태소 분석기 비교하기

konlpy 형태소 분석기 성능비교

from konlpy.tag import Kkma
from konlpy.tag import Komoran
from konlpy.tag import Hannanum
#from konlpy.tag import Mecab
import MeCab
from konlpy.tag import Okt
import re

# 형태소 분석을 위한 객체 생성.
kkma = Kkma()
komoran = Komoran()
hannanum = Hannanum()
mecab = MeCab.Tagger()
#mecab = Mecab()
okt = Okt()
C:\Users\MyCom\anaconda3\envs\text_analysis\lib\site-packages\ipykernel\parentpoller.py:116: UserWarning: Parent poll failed.  If the frontend dies,
                the kernel may be left running.  Please let us know
                about your system (bitness, Python, etc.) at
                ipython-dev@scipy.org
  ipython-dev@scipy.org""")
"""
    Parsing 규칙의 문제점, split을 "," 기준으로 하는데, token이 "," 인 경우에는 쉼표만 잘려서 나오기 때문에, 
    + "%," 같이 특수문자와 쉼표가 같이 등장하는 경우도 생각해주어야 함.
    
    (",", "SC") 의 원래 튜플이 만들어지지 않음.
    
    명사 분석의 경우 해당 토큰이 필요하지 않으니 pass
    
    형태소 분석과 POS tagging의 경우 해당 토큰이 필요하므로, token[0]이 ' 인 경우엔 따로 (",", "SC")를 집어 넣어줘야함.
"""


def mecab_nouns(text):
    nouns = []
    
    # 우리가 원하는 TOKEN\tPOS의 형태를 추출하는 정규표현식.
    pattern = re.compile(".*\t[A-Z]+") 
    
    # 패턴에 맞는 문자열을 추출하여 konlpy의 mecab 결과와 같아지도록 수정.
    temp = [tuple(pattern.match(token).group(0).split("\t")) for token in mecab.parse(text).splitlines()[:-1]]
        
    # 추출한 token중에 POS가 명사 분류에 속하는 토큰만 선택.
    for token in temp:
        if token[1] == "NNG" or token[1] == "NNP" or token[1] == "NNB" or token[1] == "NNBC" or token[1] == "NP" or token[1] == "NR":
             nouns.append(token[0])
        
    return nouns

def mecab_morphs(text):
    morphs = []
    
    # 우리가 원하는 TOKEN\tPOS의 형태를 추출하는 정규표현식.
    pattern = re.compile(".*\t[A-Z]+") 
    
    # 패턴에 맞는 문자열을 추출하여 konlpy의 mecab 결과와 같아지도록 수정.
    temp = [tuple(pattern.match(token).group(0).split("\t")) for token in mecab.parse(text).splitlines()[:-1]]
        
    # 추출한 token중에 문자열만 선택.
    for token in temp:
        morphs.append(token[0])
    
    return morphs

def mecab_pos(text):
    pos = []
    # 우리가 원하는 TOKEN\tPOS의 형태를 추출하는 정규표현식.
    pattern = re.compile(".*\t[A-Z]+") 
    
    # 패턴에 맞는 문자열을 추출하여 konlpy의 mecab 결과와 같아지도록 수정.
    pos = [tuple(pattern.match(token).group(0).split("\t")) for token in mecab.parse(text).splitlines()[:-1]]
        #group(0)으로 string으로 만들어 준다
    return pos
  • 정규 표현식은 특정한 규칙을 가진 문자열의 패턴을 표현하는 데 사용하는 표현식(Expression)으로 텍스트에서 특정 문자열을 검색하거나 치환할 때 흔히 사용된다.

문장 분석 품질 비교

1. 띄어쓰기가 제대로 되어있지 않은 문장

text = "아버지가방에들어가신다"
# 꼬꼬마 형태소 분석 결과
kkma.pos(text)
[('아버지', 'NNG'),
 ('가방', 'NNG'),
 ('에', 'JKM'),
 ('들어가', 'VV'),
 ('시', 'EPH'),
 ('ㄴ다', 'EFN')]
# 코모란 형태소 분석 결과
komoran.pos(text)
[('아버지', 'NNG'),
 ('가방', 'NNP'),
 ('에', 'JKB'),
 ('들어가', 'VV'),
 ('시', 'EP'),
 ('ㄴ다', 'EC')]
hannanum.pos(text)
[('아버지가방에들어가', 'N'), ('이', 'J'), ('시ㄴ다', 'E')]
mecab_pos(text)
[('아버지', 'NNG'),
 ('가', 'JKS'),
 ('방', 'NNG'),
 ('에', 'JKB'),
 ('들어가', 'VV'),
 ('신다', 'EP')]
okt.pos(text)
[('아버지', 'Noun'), ('가방', 'Noun'), ('에', 'Josa'), ('들어가신다', 'Verb')]

2. 오탈자 때문에 불완전한 문장

text2 = "ㄱㅐㄴㅏ리가 피어있는 동산에 누워있고싶ㄷㅏ"
# 꼬꼬마 형태소 결과 출력하기.

print("꼬꼬마 : %s\n" % kkma.pos(text2))
print("코모란 : %s\n" % komoran.pos(text2))
print("한나눔 : %s\n" % hannanum.pos(text2))
print("mecab : %s\n" % mecab_pos(text2))
print("Okt : %s\n" % okt.pos(text2))
꼬꼬마 : [('ㄱㅐㄴㅏ리', 'UN'), ('가', 'JKS'), ('피', 'VV'), ('어', 'ECD'), ('있', 'VXV'), ('는', 'ETD'), ('동산', 'NNG'), ('에', 'JKM'), ('눕', 'VV'), ('어', 'ECS'), ('있', 'VV'), ('고', 'ECE'), ('싶ㄷㅏ', 'UN')]

코모란 : [('개나리', 'NNP'), ('가', 'JKS'), ('피', 'VV'), ('어', 'EC'), ('있', 'VX'), ('는', 'ETM'), ('동산', 'NNP'), ('에', 'JKB'), ('눕', 'VV'), ('어', 'EC'), ('있', 'VX'), ('고', 'EC'), ('싶', 'VX'), ('다', 'EC')]

한나눔 : [('ㄱㅐㄴㅏ리', 'N'), ('가', 'J'), ('피', 'P'), ('어', 'E'), ('있', 'P'), ('는', 'E'), ('동산', 'N'), ('에', 'J'), ('누워있고싶ㄷㅏ', 'N')]

mecab : [('ㄱ', 'NNG'), ('ㅐㄴㅏ리가', 'UNKNOWN'), ('피', 'VV'), ('어', 'EC'), ('있', 'VX'), ('는', 'ETM'), ('동산', 'NNG'), ('에', 'JKB'), ('누워', 'VV'), ('있', 'VX'), ('고', 'EC'), ('싶', 'VX'), ('ㄷ', 'NNG'), ('ㅏ', 'UNKNOWN')]

Okt : [('ㄱㅐㄴㅏ', 'KoreanParticle'), ('리가', 'Noun'), ('피어있는', 'Verb'), ('동산', 'Noun'), ('에', 'Josa'), ('누워있고싶', 'Verb'), ('ㄷㅏ', 'KoreanParticle')]

3. 속도 비교

text3 = """5G 이동통신망을 빌려 사용하는 ‘5G 알뜰폰’이 올해 도입되고, 내년부터는 의무화된다.
정부는 알뜰폰 사업자(MNVO)가 통신사(MNO)에 통신망을 빌리는 비용(도매대가)을 지난해보다 큰 폭으로 낮춰, 알뜰폰 요금 인하를 유도하기로 했다. 하지만 줄어드는 알뜰폰 시장을 살릴 수 있을지는 지켜봐야 하는 상황이다.
과학기술정보통신부는 알뜰폰 활성화 추진대책을 25일 발표했다. 알뜰폰 가입자는 800만명으로 이동통신 시장의 12%를 차지한다. 2011년 출시 뒤 저렴한 요금제로 통신비 부담을 낮춰왔다. 하지만 지난해 5월 통신 3사가 준보편제 요금을 내놓은 이후 알뜰폰 이탈 현상이 지속되고 있다.
우선 올해 안에 3개 이상의 5G 알뜰폰이 시장에 나온다. 통신사가 5G망을 알뜰폰 사업자에게 도매 제공할지 여부는 통신사 자율로 정한다. 앞서 LG유플러스는 오는 10월 알뜰폰 사업을 시작하는 KB국민은행에 5G망을 제공한다고 밝힌 바 있다. SK텔레콤와 KT도 특정 제휴사를 선택해 올해 안에 5G 알뜰폰을 내놓기로 했다.
내년부터는 5G 알뜰폰 제공이 의무화된다. 지난 22일자로 종료된 도매제공 의무제도의 유효기간을 2022년 9월22일까지 연장하는 전기통신사업법 개정안이 국회에서 통과되면, 관련 고시를 개정해 SK텔레콤의 5G망 도매제공을 의무화하겠다는 것이다.
과기정통부 관계자는 “SK텔레콤이 자사와 계약을 맺은 13개 알뜰폰 사업자에게 5G망을 의무 제공하면, 그 외 31개의 알뜰폰 사업자들이 경쟁에서 밀릴 것을 우려해 KT와 LG유플러스도 5G망을 제공하게 될 것”이라고 내다봤다.
알뜰폰 사업자가 상품을 만드는 방식 크게 2가지다. 하나는 통신사로부터 음성·문자·데이터를 도매로 사들인 뒤 이를 바탕으로 통신사보다 저렴한 요금제를 내놓는 방식(종량제 도매제공)이다. 이를 위해 정부는 도매대가 인하율을 음성 17.8%, 데이터 19.2%, 단문메시지 1.15%로, 지난해 음성 15.1%, 데이터 19.1%, 단문메시지 1.13%에 비해 높여 잡았다.
또 다른 방식은 일정비용을 통신사에 내고 통신사의 정액 요금제를 그대로 판매하면서, 그 차액의 범위에서 저렴한 요금제를 내놓는 방식(수익배분 도매제공)이다. 정부는 SK텔레콤의 준보편 요금제인 ‘T플랜 요금제’를 알뜰폰 사업자가 재판매할 수 있게 했다. 기존에 SK텔레콤이 도매제공했던 ‘밴드데이터 요금제’의 최고구간의 대가도 1.5%포인트 낮췄다.
알뜰폰 업계는 대체로 반기는 분위기지만, 알뜰폰 시장을 살릴 수 있을지에는 의구심을 갖고 있다. 업계 관계자는 “도매대가 인하율이 크고, 5G망을 제공하는 것은 긍정적”이라면서도 “수익배분 도매제공의 의무화, 설비를 가진 업체에 대한 접속료 정산 도입 등의 제도적 개선이 필요하다”고 말했다."""
%%time
print(kkma.pos(text3)[:5])
[('5', 'NR'), ('G', 'OL'), ('이동', 'NNG'), ('통신망', 'NNG'), ('을', 'JKO')]
Wall time: 4.13 s
%%time
print(komoran.pos(text3)[:5])
[('5', 'SN'), ('G', 'SL'), ('이동', 'NNG'), ('통신망', 'NNG'), ('을', 'JKO')]
Wall time: 70 ms
%%time
print(hannanum.pos(text3)[:5])
[('5G', 'N'), ('이동통신망', 'N'), ('을', 'J'), ('빌리', 'P'), ('어', 'E')]
Wall time: 1.82 s
%%time
print(mecab_pos(text3)[:5])#5개만 짤라서 출력결과 확인 가능
[('5', 'SN'), ('G', 'SL'), ('이동', 'NNG'), ('통신망', 'NNG'), ('을', 'JKO')]
Wall time: 256 ms
%%time
print(mecab_nouns(text3))
['이동', '통신망', '사용', '알뜰', '폰', '올해', '도입', '내년', '의무', '정부', '알뜰', '폰', '사업자', '통신사', '통신망', '비용', '도매', '대가', '지난해', '폭', '알뜰', '폰', '요금', '인하', '유도', '알뜰', '폰', '시장', '수', '상황', '과학', '기술', '정보', '통신부', '알뜰', '폰', '활성', '추진', '대책', '일', '발표', '알뜰', '폰', '가입자', '만', '명', '이동', '통신', '시장', '차지', '년', '출시', '뒤', '요금제', '통신비', '부담', '지난해', '월', '통신', '사', '준보', '편제', '요금', '이후', '알뜰', '폰', '이탈', '현상', '지속', '올해', '안', '개', '이상', '알뜰', '폰', '시장', '통신사', '망', '알뜰', '폰', '사업자', '도매', '제공', '여부', '통신사', '자율', '유', '플러스', '월', '알뜰', '폰', '사업', '시작', '국민은행', '망', '제공', '바', '텔레콤', '특정', '휴사', '선택', '올해', '안', '알뜰', '폰', '내년', '알뜰', '폰', '제공', '의무', '일자', '종료', '도매', '제공', '의무', '제도', '유효', '기간', '년', '월', '일', '연장', '전기', '통신', '사업', '법', '개정안', '국회', '통과', '관련', '고시', '개정', '텔레콤', '망', '도매', '제공', '의무', '것', '과기', '정통부', '관계자', '텔레콤', '자사', '계약', '개', '알뜰', '폰', '사업자', '망', '의무', '제공', '외', '개', '알뜰', '폰', '사업자', '경쟁', '것', '우려', '유', '플러스', '망', '제공', '것', '알뜰', '폰', '사업자', '상품', '방식', '가지', '하나', '통신사', '음성', '문자', '데이터', '도매', '뒤', '이', '바탕', '통신사', '요금제', '방식', '종량제', '도매', '제공', '이', '정부', '도매', '대가', '인하', '음성', '데이터', '단문', '메시지', '지난해', '음성', '데이터', '단문', '메시지', '방식', '일정', '비용', '통신사', '통신사', '정액', '요금제', '판매', '차액', '범위', '요금제', '방식', '수익', '배분', '도매', '제공', '정부', '텔레콤', '보편', '요금', '제인', '플랜', '요금제', '알뜰', '폰', '사업자', '판매', '수', '기존', '텔레콤', '도매', '제공', '밴드', '데이터', '요금제', '최고', '구간', '대가', '포인트', '알뜰', '폰', '업계', '분위기', '알뜰', '폰', '시장', '수', '의구심', '업계', '관계자', '매대', '인하', '망', '제공', '것', '긍정', '서도', '수익', '배분', '도매', '제공', '의무', '설비', '업체', '접', '속료', '정산', '도입', '등', '제도', '개선', '필요', '말']
Wall time: 4 ms
%%time
print(mecab_pos(text3))
[('5', 'SN'), ('G', 'SL'), ('이동', 'NNG'), ('통신망', 'NNG'), ('을', 'JKO'), ('빌려', 'VV'), ('사용', 'NNG'), ('하', 'XSV'), ('는', 'ETM'), ('‘', 'SY'), ('5', 'SN'), ('G', 'SL'), ('알뜰', 'NNG'), ('폰', 'NNG'), ('’', 'SY'), ('이', 'MM'), ('올해', 'NNG'), ('도입', 'NNG'), ('되', 'XSV'), ('고', 'EC'), (',', 'SC'), ('내년', 'NNG'), ('부터', 'JX'), ('는', 'JX'), ('의무', 'NNG'), ('화', 'XSN'), ('된다', 'XSV'), ('.', 'SF'), ('정부', 'NNG'), ('는', 'JX'), ('알뜰', 'NNG'), ('폰', 'NNG'), ('사업자', 'NNG'), ('(', 'SSO'), ('MNVO', 'SL'), (')', 'SSC'), ('가', 'JKS'), ('통신사', 'NNG'), ('(', 'SSO'), ('MNO', 'SL'), (')', 'SSC'), ('에', 'JKB'), ('통신망', 'NNG'), ('을', 'JKO'), ('빌리', 'VV'), ('는', 'ETM'), ('비용', 'NNG'), ('(', 'SSO'), ('도매', 'NNG'), ('대가', 'NNG'), (')', 'SSC'), ('을', 'JKO'), ('지난해', 'NNG'), ('보다', 'JKB'), ('큰', 'VA'), ('폭', 'NNG'), ('으로', 'JKB'), ('낮춰', 'VV'), (',', 'SC'), ('알뜰', 'NNG'), ('폰', 'NNG'), ('요금', 'NNG'), ('인하', 'NNG'), ('를', 'JKO'), ('유도', 'NNG'), ('하', 'XSV'), ('기', 'ETN'), ('로', 'JKB'), ('했', 'VV'), ('다', 'EF'), ('.', 'SF'), ('하', 'VV'), ('지만', 'EC'), ('줄어드', 'VV'), ('는', 'ETM'), ('알뜰', 'NNG'), ('폰', 'NNG'), ('시장', 'NNG'), ('을', 'JKO'), ('살릴', 'VV'), ('수', 'NNB'), ('있', 'VV'), ('을지', 'EC'), ('는', 'JX'), ('지켜봐야', 'VV'), ('하', 'VV'), ('는', 'ETM'), ('상황', 'NNG'), ('이', 'VCP'), ('다', 'EF'), ('.', 'SF'), ('과학', 'NNG'), ('기술', 'NNG'), ('정보', 'NNG'), ('통신부', 'NNG'), ('는', 'JX'), ('알뜰', 'NNG'), ('폰', 'NNG'), ('활성', 'NNG'), ('화', 'XSN'), ('추진', 'NNG'), ('대책', 'NNG'), ('을', 'JKO'), ('25', 'SN'), ('일', 'NNBC'), ('발표', 'NNG'), ('했', 'XSV'), ('다', 'EF'), ('.', 'SF'), ('알뜰', 'NNG'), ('폰', 'NNG'), ('가입자', 'NNG'), ('는', 'JX'), ('800', 'SN'), ('만', 'NR'), ('명', 'NNBC'), ('으로', 'JKB'), ('이동', 'NNG'), ('통신', 'NNG'), ('시장', 'NNG'), ('의', 'JKG'), ('12', 'SN'), ('%', 'SY'), ('를', 'JKO'), ('차지', 'NNG'), ('한다', 'XSV'), ('.', 'SY'), ('2011', 'SN'), ('년', 'NNBC'), ('출시', 'NNG'), ('뒤', 'NNG'), ('저렴', 'XR'), ('한', 'XSA'), ('요금제', 'NNP'), ('로', 'JKB'), ('통신비', 'NNG'), ('부담', 'NNG'), ('을', 'JKO'), ('낮춰', 'VV'), ('왔', 'VX'), ('다', 'EF'), ('.', 'SF'), ('하지만', 'MAJ'), ('지난해', 'NNG'), ('5', 'SN'), ('월', 'NNBC'), ('통신', 'NNG'), ('3', 'SN'), ('사', 'NR'), ('가', 'JKS'), ('준보', 'NNG'), ('편제', 'NNG'), ('요금', 'NNG'), ('을', 'JKO'), ('내놓', 'VV'), ('은', 'ETM'), ('이후', 'NNG'), ('알뜰', 'NNG'), ('폰', 'NNG'), ('이탈', 'NNG'), ('현상', 'NNG'), ('이', 'JKS'), ('지속', 'NNG'), ('되', 'XSV'), ('고', 'EC'), ('있', 'VX'), ('다', 'EF'), ('.', 'SF'), ('우선', 'MAG'), ('올해', 'NNG'), ('안', 'NNG'), ('에', 'JKB'), ('3', 'SN'), ('개', 'NNBC'), ('이상', 'NNG'), ('의', 'JKG'), ('5', 'SN'), ('G', 'SL'), ('알뜰', 'NNG'), ('폰', 'NNG'), ('이', 'JKS'), ('시장', 'NNG'), ('에', 'JKB'), ('나온다', 'VV'), ('.', 'SF'), ('통신사', 'NNG'), ('가', 'JKS'), ('5', 'SN'), ('G', 'SL'), ('망', 'NNG'), ('을', 'JKO'), ('알뜰', 'NNG'), ('폰', 'NNG'), ('사업자', 'NNG'), ('에게', 'JKB'), ('도매', 'NNG'), ('제공', 'NNG'), ('할지', 'XSV'), ('여부', 'NNG'), ('는', 'JX'), ('통신사', 'NNG'), ('자율', 'NNG'), ('로', 'JKB'), ('정한다', 'VV'), ('.', 'SF'), ('앞서', 'VV'), ('LG', 'SL'), ('유', 'NNP'), ('플러스', 'NNP'), ('는', 'JX'), ('오', 'VV'), ('는', 'ETM'), ('10', 'SN'), ('월', 'NNBC'), ('알뜰', 'NNG'), ('폰', 'NNG'), ('사업', 'NNG'), ('을', 'JKO'), ('시작', 'NNG'), ('하', 'XSV'), ('는', 'ETM'), ('KB', 'SL'), ('국민은행', 'NNP'), ('에', 'JKB'), ('5', 'SN'), ('G', 'SL'), ('망', 'NNG'), ('을', 'JKO'), ('제공', 'NNG'), ('한다고', 'XSV'), ('밝힌', 'VV'), ('바', 'NNB'), ('있', 'VV'), ('다', 'EF'), ('.', 'SF'), ('SK', 'SL'), ('텔레콤', 'NNP'), ('와', 'JC'), ('KT', 'SL'), ('도', 'JX'), ('특정', 'NNG'), ('제', 'MM'), ('휴사', 'NNG'), ('를', 'JKO'), ('선택', 'NNG'), ('해', 'XSV'), ('올해', 'NNG'), ('안', 'NNG'), ('에', 'JKB'), ('5', 'SN'), ('G', 'SL'), ('알뜰', 'NNG'), ('폰', 'NNG'), ('을', 'JKO'), ('내놓', 'VV'), ('기', 'ETN'), ('로', 'JKB'), ('했', 'VV'), ('다', 'EF'), ('.', 'SF'), ('내년', 'NNG'), ('부터', 'JX'), ('는', 'JX'), ('5', 'SN'), ('G', 'SL'), ('알뜰', 'NNG'), ('폰', 'NNG'), ('제공', 'NNG'), ('이', 'JKS'), ('의무', 'NNG'), ('화', 'XSN'), ('된다', 'XSV'), ('.', 'SF'), ('지난', 'VV'), ('22', 'SN'), ('일자', 'NNG'), ('로', 'JKB'), ('종료', 'NNG'), ('된', 'XSV'), ('도매', 'NNG'), ('제공', 'NNG'), ('의무', 'NNG'), ('제도', 'NNG'), ('의', 'JKG'), ('유효', 'NNG'), ('기간', 'NNG'), ('을', 'JKO'), ('2022', 'SN'), ('년', 'NNBC'), ('9', 'SN'), ('월', 'NNBC'), ('22', 'SN'), ('일', 'NNBC'), ('까지', 'JX'), ('연장', 'NNG'), ('하', 'XSV'), ('는', 'ETM'), ('전기', 'NNG'), ('통신', 'NNG'), ('사업', 'NNG'), ('법', 'NNG'), ('개정안', 'NNG'), ('이', 'JKS'), ('국회', 'NNG'), ('에서', 'JKB'), ('통과', 'NNG'), ('되', 'XSV'), ('면', 'EC'), (',', 'SC'), ('관련', 'NNG'), ('고시', 'NNG'), ('를', 'JKO'), ('개정', 'NNG'), ('해', 'XSV'), ('SK', 'SL'), ('텔레콤', 'NNP'), ('의', 'JKG'), ('5', 'SN'), ('G', 'SL'), ('망', 'NNG'), ('도매', 'NNG'), ('제공', 'NNG'), ('을', 'JKO'), ('의무', 'NNG'), ('화', 'XSN'), ('하', 'XSV'), ('겠', 'EP'), ('다는', 'ETM'), ('것', 'NNB'), ('이', 'VCP'), ('다', 'EF'), ('.', 'SF'), ('과기', 'NNG'), ('정통부', 'NNG'), ('관계자', 'NNG'), ('는', 'JX'), ('“', 'SSO'), ('SK', 'SL'), ('텔레콤', 'NNP'), ('이', 'JKS'), ('자사', 'NNG'), ('와', 'JC'), ('계약', 'NNG'), ('을', 'JKO'), ('맺', 'VV'), ('은', 'ETM'), ('13', 'SN'), ('개', 'NNBC'), ('알뜰', 'NNG'), ('폰', 'NNG'), ('사업자', 'NNG'), ('에게', 'JKB'), ('5', 'SN'), ('G', 'SL'), ('망', 'NNG'), ('을', 'JKO'), ('의무', 'NNG'), ('제공', 'NNG'), ('하', 'XSV'), ('면', 'EC'), (',', 'SC'), ('그', 'MM'), ('외', 'NNB'), ('31', 'SN'), ('개', 'NNBC'), ('의', 'JKG'), ('알뜰', 'NNG'), ('폰', 'NNG'), ('사업자', 'NNG'), ('들', 'XSN'), ('이', 'JKS'), ('경쟁', 'NNG'), ('에서', 'JKB'), ('밀릴', 'VV'), ('것', 'NNB'), ('을', 'JKO'), ('우려', 'NNG'), ('해', 'XSV'), ('KT', 'SL'), ('와', 'JC'), ('LG', 'SL'), ('유', 'NNG'), ('플러스', 'NNG'), ('도', 'JX'), ('5', 'SN'), ('G', 'SL'), ('망', 'NNG'), ('을', 'JKO'), ('제공', 'NNG'), ('하', 'XSV'), ('게', 'EC'), ('될', 'VV'), ('것', 'NNB'), ('”', 'SSC'), ('이', 'VCP'), ('라고', 'EC'), ('내', 'VX'), ('다', 'EC'), ('봤', 'VX'), ('다', 'EF'), ('.', 'SF'), ('알뜰', 'NNG'), ('폰', 'NNG'), ('사업자', 'NNG'), ('가', 'JKS'), ('상품', 'NNG'), ('을', 'JKO'), ('만드', 'VV'), ('는', 'ETM'), ('방식', 'NNG'), ('크', 'VA'), ('게', 'EC'), ('2', 'SN'), ('가지', 'NNBC'), ('다', 'VCP'), ('.', 'SF'), ('하나', 'NR'), ('는', 'JX'), ('통신사', 'NNG'), ('로부터', 'JKB'), ('음성', 'NNG'), ('·', 'SC'), ('문자', 'NNG'), ('·', 'SC'), ('데이터', 'NNG'), ('를', 'JKO'), ('도매', 'NNG'), ('로', 'JKB'), ('사들인', 'VV'), ('뒤', 'NNG'), ('이', 'NP'), ('를', 'JKO'), ('바탕', 'NNG'), ('으로', 'JKB'), ('통신사', 'NNG'), ('보다', 'JKB'), ('저렴', 'XR'), ('한', 'XSA'), ('요금제', 'NNP'), ('를', 'JKO'), ('내놓', 'VV'), ('는', 'ETM'), ('방식', 'NNG'), ('(', 'SSO'), ('종량제', 'NNG'), ('도매', 'NNG'), ('제공', 'NNG'), (')', 'SSC'), ('이', 'VCP'), ('다', 'EF'), ('.', 'SF'), ('이', 'NP'), ('를', 'JKO'), ('위해', 'VV'), ('정부', 'NNG'), ('는', 'JX'), ('도매', 'NNG'), ('대가', 'NNG'), ('인하', 'NNG'), ('율', 'XSN'), ('을', 'JKO'), ('음성', 'NNG'), ('17', 'SN'), ('.', 'SY'), ('8', 'SN'), ('%,', 'SY'), ('데이터', 'NNG'), ('19', 'SN'), ('.', 'SY'), ('2', 'SN'), ('%,', 'SY'), ('단문', 'NNG'), ('메시지', 'NNG'), ('1', 'SN'), ('.', 'SY'), ('15', 'SN'), ('%', 'SY'), ('로', 'JKB'), (',', 'SC'), ('지난해', 'NNG'), ('음성', 'NNG'), ('15', 'SN'), ('.', 'SY'), ('1', 'SN'), ('%,', 'SY'), ('데이터', 'NNG'), ('19', 'SN'), ('.', 'SY'), ('1', 'SN'), ('%,', 'SY'), ('단문', 'NNG'), ('메시지', 'NNG'), ('1', 'SN'), ('.', 'SY'), ('13', 'SN'), ('%', 'SY'), ('에', 'JKB'), ('비해', 'VV'), ('높여', 'VV'), ('잡', 'VV'), ('았', 'EP'), ('다', 'EF'), ('.', 'SF'), ('또', 'MAG'), ('다른', 'MM'), ('방식', 'NNG'), ('은', 'JX'), ('일정', 'NNG'), ('비용', 'NNG'), ('을', 'JKO'), ('통신사', 'NNG'), ('에', 'JKB'), ('내', 'VV'), ('고', 'EC'), ('통신사', 'NNG'), ('의', 'JKG'), ('정액', 'NNG'), ('요금제', 'NNP'), ('를', 'JKO'), ('그대로', 'MAG'), ('판매', 'NNG'), ('하', 'XSV'), ('면서', 'EC'), (',', 'SC'), ('그', 'MM'), ('차액', 'NNG'), ('의', 'JKG'), ('범위', 'NNG'), ('에서', 'JKB'), ('저렴', 'XR'), ('한', 'XSA'), ('요금제', 'NNP'), ('를', 'JKO'), ('내놓', 'VV'), ('는', 'ETM'), ('방식', 'NNG'), ('(', 'SSO'), ('수익', 'NNG'), ('배분', 'NNG'), ('도매', 'NNG'), ('제공', 'NNG'), (')', 'SSC'), ('이', 'VCP'), ('다', 'EF'), ('.', 'SF'), ('정부', 'NNG'), ('는', 'JX'), ('SK', 'SL'), ('텔레콤', 'NNP'), ('의', 'JKG'), ('준', 'XPN'), ('보편', 'NNG'), ('요금', 'NNG'), ('제인', 'NNG'), ('‘', 'SY'), ('T', 'SL'), ('플랜', 'NNG'), ('요금제', 'NNP'), ('’', 'SY'), ('를', 'JKO'), ('알뜰', 'NNG'), ('폰', 'NNG'), ('사업자', 'NNG'), ('가', 'JKS'), ('재', 'XPN'), ('판매', 'NNG'), ('할', 'XSV'), ('수', 'NNB'), ('있', 'VV'), ('게', 'EC'), ('했', 'VX'), ('다', 'EF'), ('.', 'SF'), ('기존', 'NNG'), ('에', 'JKB'), ('SK', 'SL'), ('텔레콤', 'NNP'), ('이', 'JKS'), ('도매', 'NNG'), ('제공', 'NNG'), ('했', 'XSV'), ('던', 'ETM'), ('‘', 'SY'), ('밴드', 'NNG'), ('데이터', 'NNG'), ('요금제', 'NNP'), ('’', 'SY'), ('의', 'JKG'), ('최고', 'NNG'), ('구간', 'NNG'), ('의', 'JKG'), ('대가', 'NNG'), ('도', 'JX'), ('1', 'SN'), ('.', 'SY'), ('5', 'SN'), ('%', 'SY'), ('포인트', 'NNG'), ('낮췄', 'VV'), ('다', 'EF'), ('.', 'SF'), ('알뜰', 'NNG'), ('폰', 'NNG'), ('업계', 'NNG'), ('는', 'JX'), ('대체로', 'MAG'), ('반기', 'VV'), ('는', 'ETM'), ('분위기', 'NNG'), ('지만', 'VCP'), (',', 'SC'), ('알뜰', 'NNG'), ('폰', 'NNG'), ('시장', 'NNG'), ('을', 'JKO'), ('살릴', 'VV'), ('수', 'NNB'), ('있', 'VV'), ('을지', 'EC'), ('에', 'JKB'), ('는', 'JX'), ('의구심', 'NNG'), ('을', 'JKO'), ('갖', 'VV'), ('고', 'EC'), ('있', 'VX'), ('다', 'EF'), ('.', 'SF'), ('업계', 'NNG'), ('관계자', 'NNG'), ('는', 'JX'), ('“', 'SSO'), ('도', 'JX'), ('매대', 'NNG'), ('가', 'JKS'), ('인하', 'NNG'), ('율', 'XSN'), ('이', 'JKS'), ('크', 'VA'), ('고', 'EC'), (',', 'SC'), ('5', 'SN'), ('G', 'SL'), ('망', 'NNG'), ('을', 'JKO'), ('제공', 'NNG'), ('하', 'XSV'), ('는', 'ETM'), ('것', 'NNB'), ('은', 'JX'), ('긍정', 'NNG'), ('적', 'XSN'), ('”', 'SSC'), ('이', 'VCP'), ('라면', 'EC'), ('서도', 'NNG'), ('“', 'SSO'), ('수익', 'NNG'), ('배분', 'NNG'), ('도매', 'NNG'), ('제공', 'NNG'), ('의', 'JKG'), ('의무', 'NNG'), ('화', 'XSN'), (',', 'SC'), ('설비', 'NNG'), ('를', 'JKO'), ('가진', 'VV'), ('업체', 'NNG'), ('에', 'JKB'), ('대한', 'VV'), ('접', 'NNBC'), ('속료', 'NNG'), ('정산', 'NNG'), ('도입', 'NNG'), ('등', 'NNB'), ('의', 'JKG'), ('제도', 'NNG'), ('적', 'XSN'), ('개선', 'NNG'), ('이', 'JKS'), ('필요', 'NNG'), ('하', 'XSA'), ('다', 'EC'), ('”', 'SSC'), ('고', 'EC'), ('말', 'NNG'), ('했', 'XSV'), ('다', 'EF'), ('.', 'SF')]
Wall time: 3 ms
%%time
print(mecab_morphs(text3))
['5', 'G', '이동', '통신망', '을', '빌려', '사용', '하', '는', '‘', '5', 'G', '알뜰', '폰', '’', '이', '올해', '도입', '되', '고', ',', '내년', '부터', '는', '의무', '화', '된다', '.', '정부', '는', '알뜰', '폰', '사업자', '(', 'MNVO', ')', '가', '통신사', '(', 'MNO', ')', '에', '통신망', '을', '빌리', '는', '비용', '(', '도매', '대가', ')', '을', '지난해', '보다', '큰', '폭', '으로', '낮춰', ',', '알뜰', '폰', '요금', '인하', '를', '유도', '하', '기', '로', '했', '다', '.', '하', '지만', '줄어드', '는', '알뜰', '폰', '시장', '을', '살릴', '수', '있', '을지', '는', '지켜봐야', '하', '는', '상황', '이', '다', '.', '과학', '기술', '정보', '통신부', '는', '알뜰', '폰', '활성', '화', '추진', '대책', '을', '25', '일', '발표', '했', '다', '.', '알뜰', '폰', '가입자', '는', '800', '만', '명', '으로', '이동', '통신', '시장', '의', '12', '%', '를', '차지', '한다', '.', '2011', '년', '출시', '뒤', '저렴', '한', '요금제', '로', '통신비', '부담', '을', '낮춰', '왔', '다', '.', '하지만', '지난해', '5', '월', '통신', '3', '사', '가', '준보', '편제', '요금', '을', '내놓', '은', '이후', '알뜰', '폰', '이탈', '현상', '이', '지속', '되', '고', '있', '다', '.', '우선', '올해', '안', '에', '3', '개', '이상', '의', '5', 'G', '알뜰', '폰', '이', '시장', '에', '나온다', '.', '통신사', '가', '5', 'G', '망', '을', '알뜰', '폰', '사업자', '에게', '도매', '제공', '할지', '여부', '는', '통신사', '자율', '로', '정한다', '.', '앞서', 'LG', '유', '플러스', '는', '오', '는', '10', '월', '알뜰', '폰', '사업', '을', '시작', '하', '는', 'KB', '국민은행', '에', '5', 'G', '망', '을', '제공', '한다고', '밝힌', '바', '있', '다', '.', 'SK', '텔레콤', '와', 'KT', '도', '특정', '제', '휴사', '를', '선택', '해', '올해', '안', '에', '5', 'G', '알뜰', '폰', '을', '내놓', '기', '로', '했', '다', '.', '내년', '부터', '는', '5', 'G', '알뜰', '폰', '제공', '이', '의무', '화', '된다', '.', '지난', '22', '일자', '로', '종료', '된', '도매', '제공', '의무', '제도', '의', '유효', '기간', '을', '2022', '년', '9', '월', '22', '일', '까지', '연장', '하', '는', '전기', '통신', '사업', '법', '개정안', '이', '국회', '에서', '통과', '되', '면', ',', '관련', '고시', '를', '개정', '해', 'SK', '텔레콤', '의', '5', 'G', '망', '도매', '제공', '을', '의무', '화', '하', '겠', '다는', '것', '이', '다', '.', '과기', '정통부', '관계자', '는', '“', 'SK', '텔레콤', '이', '자사', '와', '계약', '을', '맺', '은', '13', '개', '알뜰', '폰', '사업자', '에게', '5', 'G', '망', '을', '의무', '제공', '하', '면', ',', '그', '외', '31', '개', '의', '알뜰', '폰', '사업자', '들', '이', '경쟁', '에서', '밀릴', '것', '을', '우려', '해', 'KT', '와', 'LG', '유', '플러스', '도', '5', 'G', '망', '을', '제공', '하', '게', '될', '것', '”', '이', '라고', '내', '다', '봤', '다', '.', '알뜰', '폰', '사업자', '가', '상품', '을', '만드', '는', '방식', '크', '게', '2', '가지', '다', '.', '하나', '는', '통신사', '로부터', '음성', '·', '문자', '·', '데이터', '를', '도매', '로', '사들인', '뒤', '이', '를', '바탕', '으로', '통신사', '보다', '저렴', '한', '요금제', '를', '내놓', '는', '방식', '(', '종량제', '도매', '제공', ')', '이', '다', '.', '이', '를', '위해', '정부', '는', '도매', '대가', '인하', '율', '을', '음성', '17', '.', '8', '%,', '데이터', '19', '.', '2', '%,', '단문', '메시지', '1', '.', '15', '%', '로', ',', '지난해', '음성', '15', '.', '1', '%,', '데이터', '19', '.', '1', '%,', '단문', '메시지', '1', '.', '13', '%', '에', '비해', '높여', '잡', '았', '다', '.', '또', '다른', '방식', '은', '일정', '비용', '을', '통신사', '에', '내', '고', '통신사', '의', '정액', '요금제', '를', '그대로', '판매', '하', '면서', ',', '그', '차액', '의', '범위', '에서', '저렴', '한', '요금제', '를', '내놓', '는', '방식', '(', '수익', '배분', '도매', '제공', ')', '이', '다', '.', '정부', '는', 'SK', '텔레콤', '의', '준', '보편', '요금', '제인', '‘', 'T', '플랜', '요금제', '’', '를', '알뜰', '폰', '사업자', '가', '재', '판매', '할', '수', '있', '게', '했', '다', '.', '기존', '에', 'SK', '텔레콤', '이', '도매', '제공', '했', '던', '‘', '밴드', '데이터', '요금제', '’', '의', '최고', '구간', '의', '대가', '도', '1', '.', '5', '%', '포인트', '낮췄', '다', '.', '알뜰', '폰', '업계', '는', '대체로', '반기', '는', '분위기', '지만', ',', '알뜰', '폰', '시장', '을', '살릴', '수', '있', '을지', '에', '는', '의구심', '을', '갖', '고', '있', '다', '.', '업계', '관계자', '는', '“', '도', '매대', '가', '인하', '율', '이', '크', '고', ',', '5', 'G', '망', '을', '제공', '하', '는', '것', '은', '긍정', '적', '”', '이', '라면', '서도', '“', '수익', '배분', '도매', '제공', '의', '의무', '화', ',', '설비', '를', '가진', '업체', '에', '대한', '접', '속료', '정산', '도입', '등', '의', '제도', '적', '개선', '이', '필요', '하', '다', '”', '고', '말', '했', '다', '.']
Wall time: 6 ms
%%time
print(okt.pos(text3)[:5])
[('5', 'Number'), ('G', 'Alpha'), ('이', 'Determiner'), ('동', 'Modifier'), ('통신망', 'Noun')]
Wall time: 302 ms