1. 품사 태깅(Part-of-Speech Tagging)이란?

 

         품사 태깅은 형태소(의미를 가진 가장 작은 말의 단위)에 대해 품사를 파악해 부착(tagging)하는 작업을 말한다.

   a)  형태소란?
         형태소는 '의미를 가진 가장 작은 말의 단위'를 의미한다.
         예를 들어 '책가방'이라는 단어는 '책'과 '가방'으로 나눌 수 있고 '가방'을 '가'와 '방'으로 나누면 본래의 뜻을 잃어버린다.
        그러므로 '책' 과 '가방'은 형태소로 볼 수 있으나, '가'와 '방'은 형태소라고 볼 수 없다.

   b) 품사란?

       품사는 명사, 대명사, 수사, 조사, 동사, 형용사, 관형사, 부사, 감탄사와 같이 공통된 성질을 지닌 낱말끼리 모아 놓은
       낱말의 갈래'를 말한다.

 

     

 2. 영어로 된 텍스트에 대한 품사 태깅 _ NLTK

     품사의 약어를 잘 모를 경우에는 nltk.help.upenn_tagset()을 사용해 품사 약어의 의미와 설명을 볼 수 있다.

 

   

 3. 한글로 된 텍스트에 대한 품사 태깅 _ KoNLPy

 

     그렇다면 NLTK로 한국어 문서에 대해서도 품사 태깅도 가능할까? 안된다.

     파이썬에서 쓸 수 있는 대표적인 한국어 형태소 분석 및 품사 태깅 라이브러리는 KoNLPy가 있다.

     KoNLPy는 Hannanum, Kkma, Komoran, Twitter(Okt), Mecab 이렇게 다섯 종의 형태소 분석기를 제공한다. 

     보통 Twitter(Okt) 속도가 빨라서 많이 사용하지만 KoNLPy 홈페이지에서 각 분석기 간의 성능을 비교해보고 용도에 맞는 

     분석기를 선택하여 사용한다. 참고로 Mecab은 윈도우를 지원하지 않는다.  

 

 

 

 

     REFERENCE

     파이썬 텍스트 마이닝 완벽 가이드(2022)

'데이터 분석 > 자연어 처리' 카테고리의 다른 글

2.6 문서 단어 행렬(Document-Term Matrix, DTM)  (1) 2023.01.19
2.5 Bag of Words(BoW)  (0) 2023.01.16
2.3 정규화(Nomalization)  (0) 2023.01.09
2.2 토큰화(Tokenization)  (0) 2023.01.09
2.1 정제(Cleaning)  (0) 2023.01.09

     

     1. 정규화(Nomalization)란?

        같은 의미를 가진 동일한 단어이면서 다른 형태로 쓰여진 단어들을 통일해 표준 단어로 만드는 작업을 말한다.

        예를 들어 '간다', '갔다', '가려고 한다.' 등은 '가다'라는 기본형이 변환된 것이고  am, are, is는 서로 다른 스펠링이지만 

        기본형인 be가 변환된 것이다. 

        이처럼 이렇게 동일한 단어이지만 다른 형태로 쓰여진 단어를 표준 단어로 만드는 작업을 정규화라고 한다.

        정규화 방법에는 표제어 추출(Lemmatization)과 어간 추출(Stemming)이 있다.

 

     2. 표제어 추출(Lemmatization)

       표제어(Lemma)는 '기본 사전형 단어' 정도의 의미를 갖으며 표제어 추출은 단어들로부터 사전에 정의된 기본형을

       찾아가는 과정이다.

       표제어 추출은 단어들이 다른 형태를 가지더라도, 그 뿌리 단어를 찾아가서 단어의 개수를 줄일 수 있는지 판단한다.

       위에 예와 같이 am, are, is를 뿌리 형태인 be로 통합하는 방법을 말한다. 

 

     3. 어간 추출(Stemming)

       어간 추출은 '어형이 변형된 단어로부터 접사 등을 제거하고 그 단언의 어간을 분리해 내는 작업'을 말한다.

      a) 어형 : 단어의 형태
      b) 어간(stem) : 단어의 의미를 담고 있는 단어의 핵심 부분
      c) 접사(affix) : 단어에 추가적인 의미를 주는 부분

       

      예를들어 '간다', '갔다'에서 바뀌지 않는 부분인 '가'를, '작다', '작으니'에서 바뀌지 않는 부분인 '작'을 어간이라고 한다. 

      동사와 형용사가 서술의 시제나 묘사 의도에 따라 다양하게 변화할 때 변화하지 않는 부분을 어간이라고 하고,

      어간 추출은 그러한 어간을 분리하는 작업이다.

      어간 추출 알고리즘에는 포터 스테머(Porter Stemmer), 랭카스터 스테머(Lancaster Stemmer)가 있다.

       

        위의 결과와 같이 포터 스테머와 랭카스터 스테머의 결과가 다르다.

        어떤 스테머를 선택할지는 둘 다 수행해서 최종 결과를 비교해 보면 결정할 수 있다.

        분석 목적이나 대상에 따라 더 좋은 성능을 보이는 스테머가 달라질 수 있기 때문이다. 

 

 

 

 

 

 

      REFERENCE

      https://wikidocs.net/22530

      파이썬 텍스트 마이닝 완벽 가이드(2022)

'데이터 분석 > 자연어 처리' 카테고리의 다른 글

2.6 문서 단어 행렬(Document-Term Matrix, DTM)  (1) 2023.01.19
2.5 Bag of Words(BoW)  (0) 2023.01.16
2.4 품사 태깅(PoS Tagging)  (0) 2023.01.10
2.2 토큰화(Tokenization)  (0) 2023.01.09
2.1 정제(Cleaning)  (0) 2023.01.09

     1.  토큰화란? 

        주어진 텍스트에서 토큰(token)이라 불리는 단위로 나누는 작업을 토큰화(tokenization)이라고 한다.

        토큰의 단위가 상황에 따라 다르지만, 보통 의미있는 단위로 토큰을 정의한다. 

 

     2. 단어 토큰화(Word Tokenization)

        토큰의 기준을 단어(word)로 하는 경우를 말한다. 

        다만, 여기서 단어(word)는 단어 단위 외에도 단어구, 의미를 갖는 문자열로 간주되기도 한다.

        예를들어 구두점(punctuation) 같은 문자를 제외시키는 간단한 단어 토큰화 작업을 해보면

       *구두점 : 마침표(.), 컴마(,), 물음표(?), 세미콜론(;), 느낌표(!) 등과 같은 기호

    

       입력 : Time is an illusion. Lunchtime double so!

 

       출력 : 'Time', 'is', 'an', 'illusion', 'Lunchtime', 'double', 'so'

        

        출력 결과에서 보듯이 입력으로부터 구두점을 제외시킨 후 띄어쓰기를 기준으로 잘라 낸 결과를 확인 할 수 있다.

 

        토큰화 작업은 단순히 구두점이나 특수문자를 제거하는 정제(cleaning) 작업을 수행하는 것으로 해결 되지 않는다.

        토큰이 의미를 잃어버리는 경우가 발생하기 때문이다.

        또한 띄어쓰기 단위로 자르면 사실상 단어 토큰이 구분되는 영어와 달리, 한국어는 띄어쓰기만으로는 단어 토큰을

        구분하기 어렵다. 이점을 유의하여야 한다.

 

  • word_tokenize와는 달리 WordPunctTokenizer는 is, ', s의 세 토큰으로 분리하는 것을 볼 수 있다.
    이는 두 토크나이저가 서로 다른 알고리즘에 기반하기 때문이다.     
  • 케라스의 text_to_word_sequence는 기본적으로 모든 알파벳을 소문자로 바꾸면서 마침표나 컴마, 느낌표 등의 구두점을 제거한다.
    하지만 it's와 let's 같은 경우 아포스트로피는 보존하는 것을 볼 수 있다.

     

  • 영어는 단어 토큰화를 단어 단위로 분리한다고 설명할 수 있으나, 한글을 기준으로 할 때에는 이 설명이 명확하지 않다.
  • 한글을 대상으로 하는 토큰화는 엄밀하게 말하자면 의미를 가지는 최소단위, 즉 형태소로 텍스트를 분리하는 것을 의미한다. 
    그런 의미에서 '안녕하세요'의 경우 '안녕'과 '하세요'를 분리하는 것이 더 맞을 것이다.
  • 영어는 보통 모든 단어를 공백으로 분리할 수 있어 어렵지 않게 단어 토큰화할 수 있지만, 한국어에서는 의미를 이루는 최소 단위가
    공백 없이 붙어 있는 경우가 많아서 공백을 이용한 분리만으로는 부족하게 느껴진다.
  • 공백만으로 토큰화가 잘 되지 않는다면 새로운 방법으로 단어를 분리해야 하고 이와 같은 작업을 단어 분할(word segmentation)이라고 한다.
  • 한국어 텍스트를 정확하게 토큰화하려면 다양한 단어 분할방법을 적용할 필요가 있다.

     3. 문장 토큰화(Sentence Tokenization)

        문장 토큰화는 여러 문장으로 이루어진 텍스트를 각 문장으로 나누는 것을 말한다. 

        즉, 토큰의 기준을 문장(sentence)로 하는 경우를 말한다.

  • NLTK는 영어 학습 데이터에 대해 사전학습된 모델을 사용해 토큰화한다. 다른 언어에 대해 문장 토큰화를 하려면 사전 학습된 
    모델을 지정해 불어 올 수 있다.
  • NLTK에는 한글에 대해 사전학습된 모델이 없다. 그러나 문장 토큰화는 각 문장의 끝에 있는 마침표 등을 기준으로 분리하도록 
    학습되어 있으므로, 영어로 학습된 모델도 한국어에 대해 어느 정도 잘 작동할 것으로 예측할 수 있다.

 

 

     REFERENCE

      https://wikidocs.net/21698

      파이썬 텍스트 마이닝 완벽 가이드(2022)

 

'데이터 분석 > 자연어 처리' 카테고리의 다른 글

2.6 문서 단어 행렬(Document-Term Matrix, DTM)  (1) 2023.01.19
2.5 Bag of Words(BoW)  (0) 2023.01.16
2.4 품사 태깅(PoS Tagging)  (0) 2023.01.10
2.3 정규화(Nomalization)  (0) 2023.01.09
2.1 정제(Cleaning)  (0) 2023.01.09

    

     주어진 텍스트에서 용도에 맞게 토큰을 분류하는 작업을 토큰화(tokenization)라고 하며, 토큰화 작업 전, 후에는

     텍스트 데이터를 용도에 맞게 정제(cleaning) 및 정규화(normalization)하는 일이 항상 함께한다.

 

     1. 정제(Cleaning)란?

         정제는 주어진 텍스트에서 노이즈 데이터를 제거하는 것을 말한다. 

         노이즈 데이터란 자연어가 아니면서 아무 의미도 갖지 않는 글자들(특수 문자 등)을 의미하기도 하지만,

         분석하고자 하는 목적에 맞지 않는 불필요 단어들을 말하기도 한다.

         불필요 단어들을 제거하는 방법으로는 불용어 제거등장 빈도가 적은 단어, 길이가 짧은 단어들을 제거하는 방법이 있다.

 

     2. 불용어(Stopword) 제거

         불용어는 의미 없는 특수문자 들과는 별도로, 실게 사용되는 단어이지만 분석에는 별 필요가 없는 단어들을 말한다. 

         예를 들어 I, my, me, over, 조사, 접미사 같은 단어들을 말하며, NLTK에서는 100여개 이상의 영어 단어들을

         불용어로 패키지 내에서 미리 정의하고 있다.

 

 

       또한, 사용자가 불용어 사전을 만들어서 사용할 수도 있다.

     나의 불용어 사전에는 'i', 'go', 'to' 를 넣었다. 그래서 NLTK 불용어 패키지를 사용했을때의 결과는

     'go'를 포함하고 있지만 나의 불용어 사전을 사용했을때의 결과에는 'go'를 포함하고 있지 않다.

     반대로 NLTK 불용어 사전에는 "couldn't"가 불용어로 되어있어서 결과에 나오지 않았는데

     나의 불용어 사전에는 "couldn't"가 불용어로 포함 되어있지 않기 때문에 결과에 "couldn't"가 포함됐다. 

 

 

 

 

     REFERENCE

      https://wikidocs.net/22530

      파이썬 텍스트 마이닝 완벽 가이드(2022)

 

'데이터 분석 > 자연어 처리' 카테고리의 다른 글

2.6 문서 단어 행렬(Document-Term Matrix, DTM)  (1) 2023.01.19
2.5 Bag of Words(BoW)  (0) 2023.01.16
2.4 품사 태깅(PoS Tagging)  (0) 2023.01.10
2.3 정규화(Nomalization)  (0) 2023.01.09
2.2 토큰화(Tokenization)  (0) 2023.01.09

 

 

Coca-Cola’s Friendly Twist Bottle Explains Perfectly That You Matter

Have you heard of the Friendly Twist Message. Here is How Coca-Cola’s Friendly Twist Bottle Explains Perfectly That You Matter.

www.awazieikechi.com

 

     차경진 교수님 책을 보다가 Coca-Cola's Twist Bottle Campaign에 대해 접하게 되었다. 

     이 캠페인은 코카콜라가 대학교에 처음 입학한 신입생들을 상대로 진행한 마케팅이었는데,

     영상을 보면 알겠지만 뚜껑을 혼자서는 열지 못하게 되어있다.

     다른 친구와 서로의 코카콜라 뚜껑을 결합해 함께 돌려야만 열 수 있게 되어있다.

     학교에 갓 입학하면 사람들과 서먹하고 어색하지만 이 캠페인을 통해 사람들을 모이게 하고 연결시키는데

     코카콜라가 매개체의 역할을 해낸 것이다. 

     이 경험은 신입생들에게 잊지 못할 추억을 기억되지 않았을까?

 

     이렇게 코카콜라는 단순히 제품을 판매하는 것을 넘어서 고객에게 사람들끼리 서로 연결되고 다른 사람과 함께하는

     즐거운 순간들을 제공하고, 이야기하게 만드는 경험의 가치를 만들어 가고 있다.

 

 

 

 

+ Recent posts