본문 바로가기
AI/자연어처리

03. 자연어처리 - 전처리 실습

by 사라리24 2024. 6. 24.
SMALL

 

1. 자연어 전처리 

 

 

뉴스 기사 크롤링 라이브러리 설치


      
      # 웹 스크래핑을 통해 뉴스 기사를 수집하고 분석하는데 사용되는 라이브러리
      !pip install newspaper3k


 

 

 

지원 언어 확인


       
        import newspaper

        newspaper.languages()


Your available languages are:

input code full name
  vi   Vietnamese
  it   Italian
  de   German
  sr   Serbian
  zh   Chinese
  fa   Persian
  be   Belarusian
  sv   Swedish
  el   Greek
  da   Danish
  no   Norwegian
  nb   Norwegian (Bokmål)
  et   Estonian
  hu   Hungarian
  id   Indonesian
  en   English
  es   Spanish
  pt   Portuguese
  fr   French
  fi   Finnish
  pl   Polish
  ro   Romanian
  ko   Korean
  hi   Hindi
  sl   Slovenian
  hr   Croatian
  ar   Arabic
  bg   Bulgarian
  sw   Swahili
  ja   Japanese
  uk   Ukrainian
  nl   Dutch
  ru   Russian
  he   Hebrew
  tr   Turkish
  mk   Macedonian

 

 

 

다음 뉴스 기사 데이터


       
        # 특정 뉴스의 기사의 url을 통해 기사를 다운로드하고, 파싱하며 기사의 메타데이트와 본문 내용을 추출
        from newspaper import Article

        article = Article(url, language = 'ko')

        article.download()
        article.parse()

        print('[title]', article.title)
        print('[content]', article.text)

 
[title] 개봉 D-2 '핸섬가이즈', 한국영화 예매율 1위 기염…흥행 청신호
[content] 6월 26일 개봉하는 고자극 오싹 코미디 '핸섬가이즈'가 개봉을 이틀 앞두고 한국영화 예매율 1위에 올랐다.

iMBC 연예뉴스 사진

개봉 전 시사회를 통해 언론과 관객 모두를 사로잡으며 예사롭지 않은 호평을 얻고 있는 영화 '핸섬가이즈'가 관객들의 열띤 기대에 힘입어 개봉을 이틀 앞두고 한국영화 예매율 1위에 등극했다. '핸섬가이즈'는 평화로운 전원생활을 꿈꾸던 ' 재필'과 '상구'가 하필이면 귀신들린 집으로 이사 오며 벌어지는 고자극 오싹 코미디다.

영화진흥위원회 통합전산망에 따르면 '핸섬가이즈' 는 6월 24일 오전 8시 55분 기준 14.0%의 예매율로 한국영화 예매율 1위에 올라 올여름 극장가 최고의 기대작임을 입증했다. 특히 이번 한국영화 예매율 1위는 여름 극장가에 찾아오는 다양한 화제작들 속에서 이뤄낸 유의미한 결과라 더욱 이목을 집중시킨다. 여기에 '인사이드 아웃 2'에 이어 전체 예매율로는 2위를 기록하며 그 뒤를 쫓고 있어 6월 26일(수) 개봉을 통해 시작될 본격적인 흥행 레이스에 더욱 귀추가 주목된다.

영화 '핸섬가이즈' 는 귀신들린 집으로 이사 온 불운의 집주인 '재필'(이성민)과 '상구'(이희준)가 원치 않았던 강제 집들이를 시작하며 멈출 수 없는 웃음을 유발한다. 끝없이 몰려드는 불청객은 사람, 악령 가리지 않아 두 남자가 꿈꾸던 드림하우스에서 펼쳐지는 예측불가한 웃음으로 관객들을 사로잡을 것이다. 이를 완벽한 연기력으로 소화한 이성민, 이희준, 공승연, 박지환, 이규형 등 믿고 보는 배우들의 환상적인 앙상블은 물론 코미디와 호러 두 마리 토끼를 다 잡은 복합 장르가 전하는 독보적인 매력으로 관객들을 극장가로 불러들일 것이다.

 

 

추가 데이터






        additional_info =
[
            "※ 기자 김사과(apple@apple.com) 취재 반하나(banana@banana.com)",
            "<h2>'핸섬가이즈'가 개봉전 시사회를 통해 얼론과 관객 모두를 사로잡으며 예사롭지 호평을 얻고 있다.'</h2>",
            "이 기사는 임시 데이터임을 알립니다, …",
            "Copyright@코리아IT아카데미",
            "<br> ☞ 이 기사는 문화 섹션으로 분류되었습니다 … </br>",
            "#기사 #문화 #핸섬가이즈 #시사회"
        ]

        context = article.text.split('\n\n')
        context += additional_info

        for i, text in enumerate(context):
          print(i, text)
       
 
 
0 6월 26일 개봉하는 고자극 오싹 코미디 '핸섬가이즈'가 개봉을 이틀 앞두고 한국영화 예매율 1위에 올랐다.
1 iMBC 연예뉴스 사진
2 개봉 전 시사회를 통해 언론과 관객 모두를 사로잡으며 예사롭지 않은 호평을 얻고 있는 영화 '핸섬가이즈'가 관객들의 열띤 기대에 힘입어 개봉을 이틀 앞두고 한국영화 예매율 1위에 등극했다. '핸섬가이즈'는 평화로운 전원생활을 꿈꾸던 ' 재필'과 '상구'가 하필이면 귀신들린 집으로 이사 오며 벌어지는 고자극 오싹 코미디다.
3 영화진흥위원회 통합전산망에 따르면 '핸섬가이즈' 는 6월 24일 오전 8시 55분 기준 14.0%의 예매율로 한국영화 예매율 1위에 올라 올여름 극장가 최고의 기대작임을 입증했다. 특히 이번 한국영화 예매율 1위는 여름 극장가에 찾아오는 다양한 화제작들 속에서 이뤄낸 유의미한 결과라 더욱 이목을 집중시킨다. 여기에 '인사이드 아웃 2'에 이어 전체 예매율로는 2위를 기록하며 그 뒤를 쫓고 있어 6월 26일(수) 개봉을 통해 시작될 본격적인 흥행 레이스에 더욱 귀추가 주목된다.
4 영화 '핸섬가이즈' 는 귀신들린 집으로 이사 온 불운의 집주인 '재필'(이성민)과 '상구'(이희준)가 원치 않았던 강제 집들이를 시작하며 멈출 수 없는 웃음을 유발한다. 끝없이 몰려드는 불청객은 사람, 악령 가리지 않아 두 남자가 꿈꾸던 드림하우스에서 펼쳐지는 예측불가한 웃음으로 관객들을 사로잡을 것이다. 이를 완벽한 연기력으로 소화한 이성민, 이희준, 공승연, 박지환, 이규형 등 믿고 보는 배우들의 환상적인 앙상블은 물론 코미디와 호러 두 마리 토끼를 다 잡은 복합 장르가 전하는 독보적인 매력으로 관객들을 극장가로 불러들일 것이다.
5 ※ 기자 김사과(apple@apple.com) 취재 반하나(banana@banana.com)
6 <h2>'핸섬가이즈'가 개봉전 시사회를 통해 얼론과 관객 모두를 사로잡으며 예사롭지 호평을 얻고 있다.'</h2>
7 이 기사는 임시 데이터임을 알립니다, …
8 Copyright@코리아IT아카데미
9 <br> ☞ 이 기사는 문화 섹션으로 분류되었습니다 … </br>
10 #기사 #문화 #핸섬가이즈 #시사회

 

 

불용어 제거


       
      # 불용어 제거
      # 불용어 사전 정의 ['※','☞','...','오싹']
      # delete_stopwords() : context 데이터를 넣으면 불용어를 제거 후 리스트(데이터)를 반환

      stopwords = ['※', '☞', '…','오싹']

      def delete_stopwords(context):
        preprocessed_text = []

        for text in context:
          text = [w for w in text.split(' ') if w not in stopwords]
          preprocessed_text.append(' '.join(text))
        return preprocessed_text

      preprocessed_context = delete_stopwords(context)

      for i, text in enumerate(preprocessed_context):
        print(i, text)

 
0 6월 26일 개봉하는 고자극 코미디 '핸섬가이즈'가 개봉을 이틀 앞두고 한국영화 예매율 1위에 올랐다.
1 iMBC 연예뉴스 사진
2 개봉 전 시사회를 통해 언론과 관객 모두를 사로잡으며 예사롭지 않은 호평을 얻고 있는 영화 '핸섬가이즈'가 관객들의 열띤 기대에 힘입어 개봉을 이틀 앞두고 한국영화 예매율 1위에 등극했다. '핸섬가이즈'는 평화로운 전원생활을 꿈꾸던 ' 재필'과 '상구'가 하필이면 귀신들린 집으로 이사 오며 벌어지는 고자극 코미디다.
3 영화진흥위원회 통합전산망에 따르면 '핸섬가이즈' 는 6월 24일 오전 8시 55분 기준 14.0%의 예매율로 한국영화 예매율 1위에 올라 올여름 극장가 최고의 기대작임을 입증했다. 특히 이번 한국영화 예매율 1위는 여름 극장가에 찾아오는 다양한 화제작들 속에서 이뤄낸 유의미한 결과라 더욱 이목을 집중시킨다. 여기에 '인사이드 아웃 2'에 이어 전체 예매율로는 2위를 기록하며 그 뒤를 쫓고 있어 6월 26일(수) 개봉을 통해 시작될 본격적인 흥행 레이스에 더욱 귀추가 주목된다.
4 영화 '핸섬가이즈' 는 귀신들린 집으로 이사 온 불운의 집주인 '재필'(이성민)과 '상구'(이희준)가 원치 않았던 강제 집들이를 시작하며 멈출 수 없는 웃음을 유발한다. 끝없이 몰려드는 불청객은 사람, 악령 가리지 않아 두 남자가 꿈꾸던 드림하우스에서 펼쳐지는 예측불가한 웃음으로 관객들을 사로잡을 것이다. 이를 완벽한 연기력으로 소화한 이성민, 이희준, 공승연, 박지환, 이규형 등 믿고 보는 배우들의 환상적인 앙상블은 물론 코미디와 호러 두 마리 토끼를 다 잡은 복합 장르가 전하는 독보적인 매력으로 관객들을 극장가로 불러들일 것이다.
5 기자 김사과(apple@apple.com) 취재 반하나(banana@banana.com)
6 <h2>'핸섬가이즈'가 개봉전 시사회를 통해 얼론과 관객 모두를 사로잡으며 예사롭지 호평을 얻고 있다.'</h2>
7 이 기사는 임시 데이터임을 알립니다,
8 Copyright@코리아IT아카데미
9 <br> 이 기사는 문화 섹션으로 분류되었습니다 </br>
10 #기사 #문화 #핸섬가이즈 #시사회

 

 

이메일 제거




       
# 이메일 제거
        # delete_email() : context 데이터를 넣으면 이메일 제거 후 리스트(데이터)를 반환

        import re

        def delete_email(context):
            preprocessed_text = []
            for text in context:
                text = re.sub("[A-Za-z0-9+-_.]+@[A-Za-z0-9]+\.[a-zA-Z0-9]+", '', text).strip()
                if text:
                    preprocessed_text.append(text)
            return preprocessed_text

        preprocessed_context = delete_email(preprocessed_context)
        for i, text in enumerate(preprocessed_context):
            print(i, text)
       
 
 
0 6월 26일 개봉하는 고자극 코미디 '핸섬가이즈'가 개봉을 이틀 앞두고 한국영화 예매율 1위에 올랐다.
1 iMBC 연예뉴스 사진
2 개봉 전 시사회를 통해 언론과 관객 모두를 사로잡으며 예사롭지 않은 호평을 얻고 있는 영화 '핸섬가이즈'가 관객들의 열띤 기대에 힘입어 개봉을 이틀 앞두고 한국영화 예매율 1위에 등극했다. '핸섬가이즈'는 평화로운 전원생활을 꿈꾸던 ' 재필'과 '상구'가 하필이면 귀신들린 집으로 이사 오며 벌어지는 고자극 코미디다.
3 영화진흥위원회 통합전산망에 따르면 '핸섬가이즈' 는 6월 24일 오전 8시 55분 기준 14.0%의 예매율로 한국영화 예매율 1위에 올라 올여름 극장가 최고의 기대작임을 입증했다. 특히 이번 한국영화 예매율 1위는 여름 극장가에 찾아오는 다양한 화제작들 속에서 이뤄낸 유의미한 결과라 더욱 이목을 집중시킨다. 여기에 '인사이드 아웃 2'에 이어 전체 예매율로는 2위를 기록하며 그 뒤를 쫓고 있어 6월 26일(수) 개봉을 통해 시작될 본격적인 흥행 레이스에 더욱 귀추가 주목된다.
4 영화 '핸섬가이즈' 는 귀신들린 집으로 이사 온 불운의 집주인 '재필'(이성민)과 '상구'(이희준)가 원치 않았던 강제 집들이를 시작하며 멈출 수 없는 웃음을 유발한다. 끝없이 몰려드는 불청객은 사람, 악령 가리지 않아 두 남자가 꿈꾸던 드림하우스에서 펼쳐지는 예측불가한 웃음으로 관객들을 사로잡을 것이다. 이를 완벽한 연기력으로 소화한 이성민, 이희준, 공승연, 박지환, 이규형 등 믿고 보는 배우들의 환상적인 앙상블은 물론 코미디와 호러 두 마리 토끼를 다 잡은 복합 장르가 전하는 독보적인 매력으로 관객들을 극장가로 불러들일 것이다.
5 기자 김사과() 취재 반하나()
6 <h2>'핸섬가이즈'가 개봉전 시사회를 통해 얼론과 관객 모두를 사로잡으며 예사롭지 호평을 얻고 있다.'</h2>
7 이 기사는 임시 데이터임을 알립니다,
8 Copyright@코리아IT아카데미
9 <br> 이 기사는 문화 섹션으로 분류되었습니다 </br>
10 #기사 #문화 #핸섬가이즈 #시사회

 

 

HTML 태그 제거


       
        # HTML 태그 제거
        # delete_html_tag() : context 데이터를 넣으면 HTML 제거 후 리스트(데이터)를 반환
        def delete_html_tag(context):
            preprocessed_text = []

            # <태그의 시작을 나타내는 문자를 찾음>
            # .*? 다음에 오는 패턴과 매칭되지 않을 때까지 최소한의 문자를 포함
            # '.' : 줄바꿈 문자를 제외한 모든 문자
            # '*?' : 0번 이상 가능한 적게를 의미
            html_tag = re.compile('<.*?>')

            for text in context:
                text = re.sub(html_tag, '', text).strip()
                if text:
                    preprocessed_text.append(text)
            return preprocessed_text

        preprocessed_context = delete_html_tag(preprocessed_context)

        for i, text in enumerate(preprocessed_context):
            print(i, text)

0 6월 26일 개봉하는 고자극 코미디 '핸섬가이즈'가 개봉을 이틀 앞두고 한국영화 예매율 1위에 올랐다.
1 iMBC 연예뉴스 사진
2 개봉 전 시사회를 통해 언론과 관객 모두를 사로잡으며 예사롭지 않은 호평을 얻고 있는 영화 '핸섬가이즈'가 관객들의 열띤 기대에 힘입어 개봉을 이틀 앞두고 한국영화 예매율 1위에 등극했다. '핸섬가이즈'는 평화로운 전원생활을 꿈꾸던 ' 재필'과 '상구'가 하필이면 귀신들린 집으로 이사 오며 벌어지는 고자극 코미디다.
3 영화진흥위원회 통합전산망에 따르면 '핸섬가이즈' 는 6월 24일 오전 8시 55분 기준 14.0%의 예매율로 한국영화 예매율 1위에 올라 올여름 극장가 최고의 기대작임을 입증했다. 특히 이번 한국영화 예매율 1위는 여름 극장가에 찾아오는 다양한 화제작들 속에서 이뤄낸 유의미한 결과라 더욱 이목을 집중시킨다. 여기에 '인사이드 아웃 2'에 이어 전체 예매율로는 2위를 기록하며 그 뒤를 쫓고 있어 6월 26일(수) 개봉을 통해 시작될 본격적인 흥행 레이스에 더욱 귀추가 주목된다.
4 영화 '핸섬가이즈' 는 귀신들린 집으로 이사 온 불운의 집주인 '재필'(이성민)과 '상구'(이희준)가 원치 않았던 강제 집들이를 시작하며 멈출 수 없는 웃음을 유발한다. 끝없이 몰려드는 불청객은 사람, 악령 가리지 않아 두 남자가 꿈꾸던 드림하우스에서 펼쳐지는 예측불가한 웃음으로 관객들을 사로잡을 것이다. 이를 완벽한 연기력으로 소화한 이성민, 이희준, 공승연, 박지환, 이규형 등 믿고 보는 배우들의 환상적인 앙상블은 물론 코미디와 호러 두 마리 토끼를 다 잡은 복합 장르가 전하는 독보적인 매력으로 관객들을 극장가로 불러들일 것이다.
5 기자 김사과() 취재 반하나()
6 '핸섬가이즈'가 개봉전 시사회를 통해 얼론과 관객 모두를 사로잡으며 예사롭지 호평을 얻고 있다.'
7 이 기사는 임시 데이터임을 알립니다,
8 Copyright@코리아IT아카데미
9 이 기사는 문화 섹션으로 분류되었습니다
10 #기사 #문화 #핸섬가이즈 #시사회

 

 

  해시태그 제거


       
        # 해시태그 제거
        # delete_hashtag():context 데이터를 넣으면 해시태그 제거 후 리스트(데이터)를 반환

        def delete_hashtag(context):
            preprocessed_text = []
         
            for text in context:
                text = re.sub("#\S+", '', text).strip()
                if text:
                    preprocessed_text.append(text)
            return preprocessed_text

        preprocessed_context = delete_hashtag(preprocessed_context)
        for i, text in enumerate(preprocessed_context):
            print(i, text)

 
0 6월 26일 개봉하는 고자극 코미디 '핸섬가이즈'가 개봉을 이틀 앞두고 한국영화 예매율 1위에 올랐다.
1 iMBC 연예뉴스 사진
2 개봉 전 시사회를 통해 언론과 관객 모두를 사로잡으며 예사롭지 않은 호평을 얻고 있는 영화 '핸섬가이즈'가 관객들의 열띤 기대에 힘입어 개봉을 이틀 앞두고 한국영화 예매율 1위에 등극했다. '핸섬가이즈'는 평화로운 전원생활을 꿈꾸던 ' 재필'과 '상구'가 하필이면 귀신들린 집으로 이사 오며 벌어지는 고자극 코미디다.
3 영화진흥위원회 통합전산망에 따르면 '핸섬가이즈' 는 6월 24일 오전 8시 55분 기준 14.0%의 예매율로 한국영화 예매율 1위에 올라 올여름 극장가 최고의 기대작임을 입증했다. 특히 이번 한국영화 예매율 1위는 여름 극장가에 찾아오는 다양한 화제작들 속에서 이뤄낸 유의미한 결과라 더욱 이목을 집중시킨다. 여기에 '인사이드 아웃 2'에 이어 전체 예매율로는 2위를 기록하며 그 뒤를 쫓고 있어 6월 26일(수) 개봉을 통해 시작될 본격적인 흥행 레이스에 더욱 귀추가 주목된다.
4 영화 '핸섬가이즈' 는 귀신들린 집으로 이사 온 불운의 집주인 '재필'(이성민)과 '상구'(이희준)가 원치 않았던 강제 집들이를 시작하며 멈출 수 없는 웃음을 유발한다. 끝없이 몰려드는 불청객은 사람, 악령 가리지 않아 두 남자가 꿈꾸던 드림하우스에서 펼쳐지는 예측불가한 웃음으로 관객들을 사로잡을 것이다. 이를 완벽한 연기력으로 소화한 이성민, 이희준, 공승연, 박지환, 이규형 등 믿고 보는 배우들의 환상적인 앙상블은 물론 코미디와 호러 두 마리 토끼를 다 잡은 복합 장르가 전하는 독보적인 매력으로 관객들을 극장가로 불러들일 것이다.
5 기자 김사과() 취재 반하나()
6 '핸섬가이즈'가 개봉전 시사회를 통해 얼론과 관객 모두를 사로잡으며 예사롭지 호평을 얻고 있다.'
7 이 기사는 임시 데이터임을 알립니다,
8 Copyright@코리아IT아카데미
9 이 기사는 문화 섹션으로 분류되었습니다

 

 

문장 정리

  • 학습된 데이터를 구성할 때 입력 데이터의 단위를 설정하기 애매해지므로 문장 단위로 모델이 학습할 수 있도록 문장분리가 필요
  • 한국어 문자 분리기 중 kss 라이브러리 사용 

       
      ! pip install kss    

 
 

 

 

kss라이브러리: 한국어 텍스트에서 문장을 분리
     ->  전처리된 문장에서 문장을 분리


       
          import kss

          def sentence_seperator(context):
            splited_context = []

            for text in context:
              text = text.strip() # 텍스트의 앞뒤 공백제거

              if text:
                splited_text = kss.split_sentences(text)  # kss를 사용하여 문장을 분리
                splited_context.extend(splited_text) # 분리된 각 문장을 splited_context 리스트에 추가
           
            return splited_context # 분리된 모든 문장이 담긴 리스트

          preprocessed_context = sentence_seperator(preprocessed_context) # 전처리된 콘텍스트에서 문장을 분리
          for i, text in enumerate(preprocessed_context):
              print(i, text)


WARNING:root:Oh! You have mecab in your environment. Kss will take this as a backend! :D

0 6월 26일 개봉하는 고자극 코미디 '핸섬가이즈'가 개봉을 이틀 앞두고 한국영화 예매율 1위에 올랐다.
1 iMBC 연예뉴스 사진
2 개봉 전 시사회를 통해 언론과 관객 모두를 사로잡으며 예사롭지 않은 호평을 얻고 있는 영화 '핸섬가이즈'가 관객들의 열띤 기대에 힘입어 개봉을 이틀 앞두고 한국영화 예매율 1위에 등극했다.
3 '핸섬가이즈'는 평화로운 전원생활을 꿈꾸던 ' 재필'과 '상구'가 하필이면 귀신들린 집으로 이사 오며 벌어지는 고자극 코미디다.
4 영화진흥위원회 통합전산망에 따르면 '핸섬가이즈' 는 6월 24일 오전 8시 55분 기준 14.0%의 예매율로 한국영화 예매율 1위에 올라 올여름 극장가 최고의 기대작임을 입증했다.
5 특히 이번 한국영화 예매율 1위는 여름 극장가에 찾아오는 다양한 화제작들 속에서 이뤄낸 유의미한 결과라 더욱 이목을 집중시킨다.
6 여기에 '인사이드 아웃 2'에 이어 전체 예매율로는 2위를 기록하며 그 뒤를 쫓고 있어 6월 26일(수) 개봉을 통해 시작될 본격적인 흥행 레이스에 더욱 귀추가 주목된다.
7 영화 '핸섬가이즈' 는 귀신들린 집으로 이사 온 불운의 집주인 '재필'(이성민)과 '상구'(이희준)가 원치 않았던 강제 집들이를 시작하며 멈출 수 없는 웃음을 유발한다.
8 끝없이 몰려드는 불청객은 사람, 악령 가리지 않아 두 남자가 꿈꾸던 드림하우스에서 펼쳐지는 예측불가한 웃음으로 관객들을 사로잡을 것이다.
9 이를 완벽한 연기력으로 소화한 이성민, 이희준, 공승연, 박지환, 이규형 등 믿고 보는 배우들의 환상적인 앙상블은 물론 코미디와 호러 두 마리 토끼를 다 잡은 복합 장르가 전하는 독보적인 매력으로 관객들을 극장가로 불러들일 것이다.
10 기자 김사과() 취재 반하나()
11 '핸섬가이즈'가 개봉전 시사회를 통해 얼론과 관객 모두를 사로잡으며 예사롭지 호평을 얻고 있다.'
12 이 기사는 임시 데이터임을 알립니다,
13 Copyright@코리아IT아카데미
14 이 기사는 문화 섹션으로 분류되었습니다

 

 

 

반복횟수가 많은 문자 정규화


       

      ! pip install soynlp


 

 

  • repeat_normalize 함수를 호출 : 반복되는 문자를 최대 num_repeats 값에 따라 정규화

       

          from soynlp.normalizer import *

          repeat_normalize('ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ', num_repeats = 2)

          repeat_normalize('야야!!!! 너!!!! 하하하하하... 지금 뭐하냐?ㅠㅠㅠㅠㅠㅠ', num_repeats = 2)


ㅋㅋ

-----------------

야야!!!! 너!!!! 하하... 지금 뭐하냐?ㅠㅠ

 

 

중복된 문장 제거


       
        # 중복된 문장 제거
        from  collections import OrderedDict

        def duplicated_sentence_normalizer(context):
          context = list(OrderedDict.fromkeys(context))
          return(context)

        temp = ['apple', 'banana','apple','orange', 'banana', 'melon']
        temp = duplicated_sentence_normalizer(temp)

        for i, text in enumerate(temp):
            print(i, text)

 
0 apple
1 banana
2 orange
3 melon

 

 

문장 길이 기반 필터링

  • min_max_filter(min_len,max_len,context) : min_len 보다 길고, max_len보다 짧은 문장만 필터링하여 저장

       
        # 문장길이 기반 필터링
        # min_max_filter(min_len, max_len, context): min_len 보다 길고, max_len보다
        # 짧은 문장만 필터링하여 저장


        def min_max_filter(min_len, max_len, context):
          preprocessed_text = []
          for text in context:
            if min_len < len(text) and len(text) < max_len:
              preprocessed_text.append(text)
          return preprocessed_text

        preprocessed_context = min_max_filter(20, 200, preprocessed_context)

        for i, text in enumerate(preprocessed_context):
            print(i, text)


0 6월 26일 개봉하는 고자극 코미디 '핸섬가이즈'가 개봉을 이틀 앞두고 한국영화 예매율 1위에 올랐다.
1 개봉 전 시사회를 통해 언론과 관객 모두를 사로잡으며 예사롭지 않은 호평을 얻고 있는 영화 '핸섬가이즈'가 관객들의 열띤 기대에 힘입어 개봉을 이틀 앞두고 한국영화 예매율 1위에 등극했다.
2 '핸섬가이즈'는 평화로운 전원생활을 꿈꾸던 ' 재필'과 '상구'가 하필이면 귀신들린 집으로 이사 오며 벌어지는 고자극 코미디다.
3 영화진흥위원회 통합전산망에 따르면 '핸섬가이즈' 는 6월 24일 오전 8시 55분 기준 14.0%의 예매율로 한국영화 예매율 1위에 올라 올여름 극장가 최고의 기대작임을 입증했다.
4 특히 이번 한국영화 예매율 1위는 여름 극장가에 찾아오는 다양한 화제작들 속에서 이뤄낸 유의미한 결과라 더욱 이목을 집중시킨다.
5 여기에 '인사이드 아웃 2'에 이어 전체 예매율로는 2위를 기록하며 그 뒤를 쫓고 있어 6월 26일(수) 개봉을 통해 시작될 본격적인 흥행 레이스에 더욱 귀추가 주목된다.
6 영화 '핸섬가이즈' 는 귀신들린 집으로 이사 온 불운의 집주인 '재필'(이성민)과 '상구'(이희준)가 원치 않았던 강제 집들이를 시작하며 멈출 수 없는 웃음을 유발한다.
7 끝없이 몰려드는 불청객은 사람, 악령 가리지 않아 두 남자가 꿈꾸던 드림하우스에서 펼쳐지는 예측불가한 웃음으로 관객들을 사로잡을 것이다.
8 이를 완벽한 연기력으로 소화한 이성민, 이희준, 공승연, 박지환, 이규형 등 믿고 보는 배우들의 환상적인 앙상블은 물론 코미디와 호러 두 마리 토끼를 다 잡은 복합 장르가 전하는 독보적인 매력으로 관객들을 극장가로 불러들일 것이다.
9 '핸섬가이즈'가 개봉전 시사회를 통해 얼론과 관객 모두를 사로잡으며 예사롭지 호평을 얻고 있다.'
10 이 기사는 문화 섹션으로 분류되었습니다

 



2. 토큰화 

 

 

토큰화 {단어:1...}


       

      # 토큰화

      from tensorflow.keras.preprocessing.text import Tokenizer

      tokenizer = Tokenizer()
      tokenizer.fit_on_texts(preprocessed_context)

      word2idx = tokenizer.word_index
      print(word2idx)


{'한국영화': 1, '예매율': 2, '6월': 3, "'핸섬가이즈'가": 4, '개봉을': 5, '1위에': 6, '통해': 7, '26일': 8, '고자극': 9, '이틀': 10, '앞두고': 11, '시사회를': 12, '관객': 13, '모두를': 14, '사로잡으며': 15, '예사롭지': 16, '호평을': 17, '얻고': 18, '영화': 19, '꿈꾸던': 20, "'": 21, '귀신들린': 22, '집으로': 23, '이사': 24, "'핸섬가이즈'": 25, '는': 26, '더욱': 27, '수': 28, '이성민': 29, '이희준': 30, '두': 31, '관객들을': 32, '것이다': 33, '개봉하는': 34, '코미디': 35, '올랐다': 36, '개봉': 37, '전': 38, '언론과': 39, '않은': 40, '있는': 41, '관객들의': 42, '열띤': 43, '기대에': 44, '힘입어': 45, '등극했다': 46, "'핸섬가이즈'는": 47, '평화로운': 48, '전원생활을': 49, "재필'과": 50, "'상구'가": 51, '하필이면': 52, '오며': 53, '벌어지는': 54, '코미디다': 55, '영화진흥위원회': 56, '통합전산망에': 57, '따르면': 58, '24일': 59, '오전': 60, '8시': 61, '55분': 62, '기준': 63, '14': 64, '0': 65, '의': 66, '예매율로': 67, '올라': 68, '올여름': 69, '극장가': 70, '최고의': 71, '기대작임을': 72, '입증했다': 73, '특히': 74, '이번': 75, '1위는': 76, '여름': 77, '극장가에': 78, '찾아오는': 79, '다양한': 80, '화제작들': 81, '속에서': 82, '이뤄낸': 83, '유의미한': 84, '결과라': 85, '이목을': 86, '집중시킨다': 87, '여기에': 88, "'인사이드": 89, '아웃': 90, "2'에": 91, '이어': 92, '전체': 93, '예매율로는': 94, '2위를': 95, '기록하며': 96, '그': 97, '뒤를': 98, '쫓고': 99, '있어': 100, '시작될': 101, '본격적인': 102, '흥행': 103, '레이스에': 104, '귀추가': 105, '주목된다': 106, '온': 107, '불운의': 108, '집주인': 109, "'재필'": 110, '과': 111, "'상구'": 112, '가': 113, '원치': 114, '않았던': 115, '강제': 116, '집들이를': 117, '시작하며': 118, '멈출': 119, '없는': 120, '웃음을': 121, '유발한다': 122, '끝없이': 123, '몰려드는': 124, '불청객은': 125, '사람': 126, '악령': 127, '가리지': 128, '않아': 129, '남자가': 130, '드림하우스에서': 131, '펼쳐지는': 132, '예측불가한': 133, '웃음으로': 134, '사로잡을': 135, '이를': 136, '완벽한': 137, '연기력으로': 138, '소화한': 139, '공승연': 140, '박지환': 141, '이규형': 142, '등': 143, '믿고': 144, '보는': 145, '배우들의': 146, '환상적인': 147, '앙상블은': 148, '물론': 149, '코미디와': 150, '호러': 151, '마리': 152, '토끼를': 153, '다': 154, '잡은': 155, '복합': 156, '장르가': 157, '전하는': 158, '독보적인': 159, '매력으로': 160, '극장가로': 161, '불러들일': 162, '개봉전': 163, '얼론과': 164, '있다': 165, '이': 166, '기사는': 167, '문화': 168, '섹션으로': 169, '분류되었습니다': 170}

 

 

순서 바꾸기 {1: 단어..}


       
        # 순서 바꾸기
        idx2word = {value: key for key, value in word2idx.items()}
        print(idx2word)


{1: '한국영화', 2: '예매율', 3: '6월', 4: "'핸섬가이즈'가", 5: '개봉을', 6: '1위에', 7: '통해', 8: '26일', 9: '고자극', 10: '이틀', 11: '앞두고', 12: '시사회를', 13: '관객', 14: '모두를', 15: '사로잡으며', 16: '예사롭지', 17: '호평을', 18: '얻고', 19: '영화', 20: '꿈꾸던', 21: "'", 22: '귀신들린', 23: '집으로', 24: '이사', 25: "'핸섬가이즈'", 26: '는', 27: '더욱', 28: '수', 29: '이성민', 30: '이희준', 31: '두', 32: '관객들을', 33: '것이다', 34: '개봉하는', 35: '코미디', 36: '올랐다', 37: '개봉', 38: '전', 39: '언론과', 40: '않은', 41: '있는', 42: '관객들의', 43: '열띤', 44: '기대에', 45: '힘입어', 46: '등극했다', 47: "'핸섬가이즈'는", 48: '평화로운', 49: '전원생활을', 50: "재필'과", 51: "'상구'가", 52: '하필이면', 53: '오며', 54: '벌어지는', 55: '코미디다', 56: '영화진흥위원회', 57: '통합전산망에', 58: '따르면', 59: '24일', 60: '오전', 61: '8시', 62: '55분', 63: '기준', 64: '14', 65: '0', 66: '의', 67: '예매율로', 68: '올라', 69: '올여름', 70: '극장가', 71: '최고의', 72: '기대작임을', 73: '입증했다', 74: '특히', 75: '이번', 76: '1위는', 77: '여름', 78: '극장가에', 79: '찾아오는', 80: '다양한', 81: '화제작들', 82: '속에서', 83: '이뤄낸', 84: '유의미한', 85: '결과라', 86: '이목을', 87: '집중시킨다', 88: '여기에', 89: "'인사이드", 90: '아웃', 91: "2'에", 92: '이어', 93: '전체', 94: '예매율로는', 95: '2위를', 96: '기록하며', 97: '그', 98: '뒤를', 99: '쫓고', 100: '있어', 101: '시작될', 102: '본격적인', 103: '흥행', 104: '레이스에', 105: '귀추가', 106: '주목된다', 107: '온', 108: '불운의', 109: '집주인', 110: "'재필'", 111: '과', 112: "'상구'", 113: '가', 114: '원치', 115: '않았던', 116: '강제', 117: '집들이를', 118: '시작하며', 119: '멈출', 120: '없는', 121: '웃음을', 122: '유발한다', 123: '끝없이', 124: '몰려드는', 125: '불청객은', 126: '사람', 127: '악령', 128: '가리지', 129: '않아', 130: '남자가', 131: '드림하우스에서', 132: '펼쳐지는', 133: '예측불가한', 134: '웃음으로', 135: '사로잡을', 136: '이를', 137: '완벽한', 138: '연기력으로', 139: '소화한', 140: '공승연', 141: '박지환', 142: '이규형', 143: '등', 144: '믿고', 145: '보는', 146: '배우들의', 147: '환상적인', 148: '앙상블은', 149: '물론', 150: '코미디와', 151: '호러', 152: '마리', 153: '토끼를', 154: '다', 155: '잡은', 156: '복합', 157: '장르가', 158: '전하는', 159: '독보적인', 160: '매력으로', 161: '극장가로', 162: '불러들일', 163: '개봉전', 164: '얼론과', 165: '있다', 166: '이', 167: '기사는', 168: '문화', 169: '섹션으로', 170: '분류되었습니다'}

 

 

 

 인코딩


       
        #인코딩
        encoded = tokenizer.texts_to_sequences(preprocessed_context)
        print(encoded)

 
[[3, 8, 34, 9, 35, 4, 5, 10, 11, 1, 2, 6, 36], [37, 38, 12, 7, 39, 13, 14, 15, 16, 40, 17, 18, 41, 19, 4, 42, 43, 44, 45, 5, 10, 11, 1, 2, 6, 46], [47, 48, 49, 20, 21, 50, 51, 52, 22, 23, 24, 53, 54, 9, 55], [56, 57, 58, 25, 26, 3, 59, 60, 61, 62, 63, 64, 65, 66, 67, 1, 2, 6, 68, 69, 70, 71, 72, 73], [74, 75, 1, 2, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 27, 86, 87], [88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 3, 8, 28, 5, 7, 101, 102, 103, 104, 27, 105, 106], [19, 25, 26, 22, 23, 24, 107, 108, 109, 110, 29, 111, 112, 30, 113, 114, 115, 116, 117, 118, 119, 28, 120, 121, 122], [123, 124, 125, 126, 127, 128, 129, 31, 130, 20, 131, 132, 133, 134, 32, 135, 33], [136, 137, 138, 139, 29, 30, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 31, 152, 153, 154, 155, 156, 157, 158, 159, 160, 32, 161, 162, 33], [4, 163, 12, 7, 164, 13, 14, 15, 16, 17, 18, 165, 21], [166, 167, 168, 169, 170]]

 

 

◼ vocab사이즈 확인 


      
        # vocab사이즈 확인
        vocab_size = len(word2idx)
        print(f'단어 사전의 크기는: {vocab_size}')


단어 사전의 크기는: 170

 

 

첫번째 줄 출력

("6월 26일 개봉하는 고자극 코미디 '핸섬가이즈'가 개봉을 이틀 앞두고 한국영화 예매율 1위에 올랐다.")


       
      print(encoded[0])


[3, 8, 34, 9, 35, 4, 5, 10, 11, 1, 2, 6, 36]

 

 

'AI > 자연어처리' 카테고리의 다른 글

06. 자연어처리 - 워드 임베딩  (0) 2024.06.25
05. 자연어처리 - 임베딩 실습  (0) 2024.06.25
04. 자연어처리 - 임베딩  (1) 2024.06.25
02. 자연어처리 - 진행순서  (0) 2024.06.24
01. 자연어처리 - 개요  (0) 2024.06.24