기사 텍스트 정제 - 형태소 추출기 만들기

형태소 분석기 제작하기

  1. 사용할 형태소 분석기 불러오기(import)
  1. 텍스트 전처리 하기(작업에 따라 다름)
  1. 형태소 / POS tagging 하기
import re
from konlpy.tag import Mecab

mecab = Mecab(dicpath='mecab\mecab-ko-dic')


  • 한국어 정규 표현식 밑에 사이트 참조!

https://gocoding.tistory.com/93

1.숫자만 가능 : [0~9] :띄어쓰기 불가능 /^[0~9]+$/

2.한글만 가능 : [ 가나다라 … ] 주의 : ㄱㄴㄷ… 형식으로는 입력 불가능 , 띄어쓰기 불가능 /^[가-힣]+$/

3.한글,띄어쓰기만 가능 : [ 가나다라 … ] 주의 : ㄱㄴㄷ… 형식으로는 입력 불가능 , 띄어쓰기 가능 /^[가-힣\s]+$/

4.영문만 가능 : /^[a-zA-Z]+$/

5.영문,띄어쓰기만 가능 /^[a-zA-Z\s]+$/

6.전화번호 형태 : 전화번호 형태 000-0000-0000 만 받는다. ] /^[0-9]{2,3}-[0-9]{3,4}-[0-9]{4}$/

7.도메인 형태, http:// https:// 포함안해도 되고 해도 되고 /^(((http(s?)):\/\/)?)([0-9a-zA-Z-]+.)+[a-zA-Z]{2,6}(:[0-9]+)?(\/\S*)?$/

8.도메인 형태, http:// https:// 꼭 포함 /^((http(s?)):\/\/)([0-9a-zA-Z-]+.)+[a-zA-Z]{2,6}(:[0-9]+)?(\/\S*)?$/

9.도메인 형태, http:// https:// 포함하면 안됨 /^[^((http(s?)):\/\/)]([0-9a-zA-Z-]+.)+[a-zA-Z]{2,6}(:[0-9]+)?(\/\S*)?$/

10.한글과 영문만 가능 /^[가-힣a-zA-Z]+$/;

11.숫자,알파벳만 가능 /^[a-zA-Z0-9]+$/;

12.주민번호, -까지 포함된 문자열로 검색 /^(?:[0-9]{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[1,2][0-9]|3[0,1]))-[1-4][0-9]{6}$/

def text_cleaning(doc): #텍스트 정제 
    # 한국어를 제외한 글자를 제거하는 함수.
    doc = re.sub("[^ㄱ-ㅎㅏ-ㅣ가-힣 ]", "", doc) #ㄱ ~ ㅎ 까지 , ㅏ ~ ㅣ까지, 가 ~ 힣 까지 , 띄어쓰기 꼭 포함 해주기~ 
    return doc

#https://www.ranks.nl/stopwords/korean
# 위 사이트 참고 / 한국어 불용어 stopwords-ko.txt 으로 텍스트 파일 만들어 주기 
def define_stopwords(path): #불용어 제거
    
    SW = set()  #집합으로 써줌
    # 불용어를 추가하는 방법 1.
    # SW.add("있다")
    
    # 불용어를 추가하는 방법 2.
    # stopwords-ko.txt에 직접 추가
    
    # 'cp949' codec can't decode byte 0xec in position 0: illegal multibyte sequence
    # 위에 오류 해결 방안
    #https://dev-guardy.tistory.com/34  (이 사이트 참고해서 해결함)
    with open(path, 'r', encoding='UTF-8') as f: #파일 열어 주고 자동적으로 닫아준다
        for word in f: #단어 라인 하나씩 가져온다 
            SW.add(word) # list는 .append , 집합은 .add이다 
            
    return SW

def text_tokenizing(doc): #형태소 분석 (토큰화)
    
    # list comprehension을 풀어서 쓴 코드.
    
#     tokenized_doc = []
    
#     for word in mecab.morphs(doc):
#         if word not in SW and len(word) > 1:
#             tokenized_doc.append(word)
    
#     return tokenized_doc    

# 위 코드 한줄로 작성 하는게 효율적임 
    return [word for word in mecab.morphs(doc) if word not in SW and len(word) > 1] # not in 을 사용 함 으로써 SW 포함되지 않도록 함 
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망을 제공하는 것은 긍정적”이라면서도 “수익배분 도매제공의 의무화, 설비를 가진 업체에 대한 접속료 정산 도입 등의 제도적 개선이 필요하다”고 말했다."""
SW = define_stopwords("stopwords-ko.txt")

cleaned_text = text_cleaning(text3)
print("전처리 : ", cleaned_text)

tokenized_text = text_tokenizing(cleaned_text) #정제한 데이터를 토큰화 시킴 
print("\n형태소 분석 : ", tokenized_text)
전처리 :   이동통신망을 빌려 사용하는  알뜰폰이 올해 도입되고 내년부터는 의무화된다정부는 알뜰폰 사업자가 통신사에 통신망을 빌리는 비용도매대가을 지난해보다 큰 폭으로 낮춰 알뜰폰 요금 인하를 유도하기로 했다 하지만 줄어드는 알뜰폰 시장을 살릴 수 있을지는 지켜봐야 하는 상황이다과학기술정보통신부는 알뜰폰 활성화 추진대책을 일 발표했다 알뜰폰 가입자는 만명으로 이동통신 시장의 를 차지한다 년 출시 뒤 저렴한 요금제로 통신비 부담을 낮춰왔다 하지만 지난해 월 통신 사가 준보편제 요금을 내놓은 이후 알뜰폰 이탈 현상이 지속되고 있다우선 올해 안에 개 이상의  알뜰폰이 시장에 나온다 통신사가 망을 알뜰폰 사업자에게 도매 제공할지 여부는 통신사 자율로 정한다 앞서 유플러스는 오는 월 알뜰폰 사업을 시작하는 국민은행에 망을 제공한다고 밝힌 바 있다 텔레콤와 도 특정 제휴사를 선택해 올해 안에  알뜰폰을 내놓기로 했다내년부터는  알뜰폰 제공이 의무화된다 지난 일자로 종료된 도매제공 의무제도의 유효기간을 년 월일까지 연장하는 전기통신사업법 개정안이 국회에서 통과되면 관련 고시를 개정해 텔레콤의 망 도매제공을 의무화하겠다는 것이다과기정통부 관계자는 텔레콤이 자사와 계약을 맺은 개 알뜰폰 사업자에게 망을 의무 제공하면 그 외 개의 알뜰폰 사업자들이 경쟁에서 밀릴 것을 우려해 와 유플러스도 망을 제공하게 될 것이라고 내다봤다알뜰폰 사업자가 상품을 만드는 방식 크게 가지다 하나는 통신사로부터 음성문자데이터를 도매로 사들인 뒤 이를 바탕으로 통신사보다 저렴한 요금제를 내놓는 방식종량제 도매제공이다 이를 위해 정부는 도매대가 인하율을 음성  데이터  단문메시지 로 지난해 음성  데이터  단문메시지 에 비해 높여 잡았다또 다른 방식은 일정비용을 통신사에 내고 통신사의 정액 요금제를 그대로 판매하면서 그 차액의 범위에서 저렴한 요금제를 내놓는 방식수익배분 도매제공이다 정부는 텔레콤의 준보편 요금제인 플랜 요금제를 알뜰폰 사업자가 재판매할 수 있게 했다 기존에 텔레콤이 도매제공했던 밴드데이터 요금제의 최고구간의 대가도 포인트 낮췄다알뜰폰 업계는 대체로 반기는 분위기지만 알뜰폰 시장을 살릴 수 있을지에는 의구심을 갖고 있다 업계 관계자는 도매대가 인하율이 크고 망을 제공하는 것은 긍정적이라면서도 수익배분 도매제공의 의무화 설비를 가진 업체에 대한 접속료 정산 도입 등의 제도적 개선이 필요하다고 말했다

형태소 분석 :  ['이동', '통신망', '빌려', '사용', '알뜰', '올해', '도입', '내년', '부터', '의무', '된다', '정부', '알뜰', '사업자', '통신사', '통신망', '빌리', '비용', '매대', '가을', '지난해', '보다', '으로', '낮춰', '알뜰', '요금', '인하', '유도', '지만', '줄어드', '알뜰', '시장', '살릴', '을지', '지켜봐야', '상황', '과학', '기술', '정보', '통신부', '알뜰', '활성', '추진', '대책', '발표', '알뜰', '가입자', '으로', '이동', '통신', '시장', '차지', '한다', '출시', '저렴', '요금제', '통신비', '부담', '낮춰', '하지만', '지난해', '통신', '준보', '편제', '요금', '내놓', '이후', '알뜰', '이탈', '현상', '지속', '우선', '올해', '이상', '알뜰', '시장', '나온다', '통신사', '알뜰', '사업자', '에게', '도매', '제공', '할지', '여부', '통신사', '자율', '정한다', '앞서', '플러스', '알뜰', '사업', '시작', '국민은행', '제공', '한다고', '밝힌', '텔레콤', '특정', '휴사', '선택', '올해', '알뜰', '내놓', '내년', '부터', '알뜰', '제공', '의무', '된다', '지난', '일자', '종료', '도매', '제공', '의무', '제도', '유효', '기간', '월일', '까지', '연장', '전기', '통신', '사업', '개정안', '국회', '에서', '통과', '관련', '고시', '개정', '텔레콤', '도매', '제공', '의무', '다는', '과기', '정통부', '관계자', '텔레콤', '자사', '계약', '알뜰', '사업자', '에게', '의무', '제공', '알뜰', '사업자', '경쟁', '에서', '밀릴', '우려', '플러스', '제공', '라고', '알뜰', '사업자', '상품', '만드', '방식', '가지', '하나', '통신사', '로부터', '음성', '문자', '데이터', '도매', '사들인', '바탕', '으로', '통신사', '보다', '저렴', '요금제', '내놓', '방식', '종량제', '도매', '제공', '위해', '정부', '도매', '대가', '인하', '음성', '데이터', '단문', '메시지', '지난해', '음성', '데이터', '단문', '메시지', '비해', '높여', '다른', '방식', '일정', '비용', '통신사', '통신사', '정액', '요금제', '그대로', '판매', '면서', '차액', '범위', '에서', '저렴', '요금제', '내놓', '방식', '수익', '배분', '도매', '제공', '정부', '텔레콤', '보편', '요금제', '플랜', '요금제', '알뜰', '사업자', '판매', '기존', '텔레콤', '도매', '제공', '밴드', '데이터', '요금제', '최고', '구간', '대가', '포인트', '낮췄', '알뜰', '업계', '대체로', '반기', '분위기', '지만', '알뜰', '시장', '살릴', '을지', '의구심', '업계', '관계자', '도매', '대가', '인하', '제공', '긍정', '라면서', '수익', '배분', '도매', '제공', '의무', '설비', '가진', '업체', '대한', '속료', '정산', '도입', '제도', '개선', '필요', '다고']