ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [KoNLPy] 자연어 처리1 - KoNLPy로 데이터 전처리
    💫 Computer Science/Python & AI Framework 2020. 1. 28. 11:23

    KoNLPy란

     

    KoNLPy는 한국어 정보처리를 위한 파이썬 패키지 입니다. 자연어처리(NLP)에서 형태소를 분리(형태소 단위 토크나이징)하는 데이터 전처리가 필요한데 이때 한국어 데이터 전처리를 할 때 많이 사용하는 패키지입니다.

    텍스트를 형태소 단위로 분리하는 방법 중에는

     

    1. 단어->품사 형태로 딕셔너리를 정의하고 이를 이용해 단어를 품사로 분리하는 방법. (딕셔너리가 동일해도 방법에 따라 형태소가 분리되는 결과가 다르다.)

    2. 딕셔너리를 사용하지 않고 모델을 통해 학습시키는 방법. (어떤 품사인지까지 알 수 없고 문장에서 단어를 구별해내는 방법.)

     

    이 있고 KoNLPy는 1번의 방법을 사용합니다. KoNLPy에는 총 5가지의 형태소 분석 방법을 제공하고 이는 Hannanum, Kkma, Komoran, Mecab, Okt(구 Twitter) 5가지 클래스로 제공됩니다.

     

    다섯가지 클래스 비교 및 성능 분석관련 참고 블로그 글

     

     

     

     

    ○ KoNLPy 설치

     

    KoNLPy는 자바VM환경에서 작동하므로 JDK와 JPype를 설치 한 후에 깔아야 합니다. 자바환경이 설정되지 않은 상태에서 pip install konlpy명령어로 패키지를 설치하면 많은 오류를 볼 수 있습니다....

     

    KoNLPy의 설치 과정은

     

    1. pip upgrade
    2. JPype1 설치
    3. JDK 설치 및 환경변수 설정
    4. KoNLPy 패키지 설치

     

    http://konlpy.org/ko/v0.5.2/install/#

    Python2는 2020 1월1일 부로 지원을 종료하는 것 같습니다.

    현재 KoNLPy의 공식 홈페이지에도 Python3를 위한 KoNLPy 설치 과정을 안내하고 있네요.

     

    저는 윈도우, 아나콘다 환경에서 설치를 진행하였습니다. Konlpy의 클래스 중 성능이 괜찮다고 알려진 mecab()은 윈도우7에서는 사용할 수 없고 윈도우10에서는 빌드 등의 과정을 거쳐야 한다고 합니다.

    아나콘다 프롬프트에서 konlpy를 설치하고 싶은 가상환경을 활성화 시킨 후 다음과 같은 명령어를 입력하여 패키지들을 설치합니다.

     

     

    1. pip upgrade

     

    > pip install --upgrade pip
    

     

     

    2. JPype1 설치

     

    JPype1 설치 페이지(클릭)에 들어가서 자신에게 맞는 파이썬 버전과 윈도우 비트를 확인한 후 JPype라이브러리를 다운받습니다. cp뒤의 숫자는 파이썬버전을 의미하고(cp37-python3.7버전이상) amd의 숫자는 설치된 파이썬의 비트를 의미합니다. 저는 기존에 64비트 버전을 사용하고 있었기 때문에 amd64를 설치하였습니다.

    다운받은 jpype라이브러리는 아나콘다가 설치되어 있는 디렉터리 안에 복사합니다.(아나콘다 환경기준) (예, C:/User/Anaconda3) 후에 Anaconda3폴더로 이동후 ( >cd C:/User/Anaconda3 ) 아래 명령어를 입력해줍니다.

    > pip install JPype1-0.7.1-cp37-none-win_amd64.whl

     

     

    3. JDK설치 및 환경변수 설정

     

    자바 다운로드 페이지에 접속해서

    JDK download 클릭 후 맞는 운영체제, 맞는 비트버전의 jdk를 다운받아 줍니다.

     

     

    이때 파이썬과 OS버전을 맞춰야 하는데 최신 버전 다운로드페이지에는 32비트 버전이 없으므로 32비트 버전을 다운받으려면 더 이하의 버전페이지로 들어가야 합니다. (32비트 버전을 다운받을 경우 windowsx86이라고 쓰여져 있는 것 다운)

    다운 Java파일 밑에 jvm.dll파일을 찾은 후 해당 파일의 경로를 환경변수로 등록하여야 합니다.

     

     

    4. konlpy패키지 설치

     

    > pip install konlpy

     

     

    최종 테스트 코드

     

    from konlpy.tag import Kkma
    
    kkma = Kkma()
    test = kkma.nous('코앤엘파이 한국어 형태소 분석기 설치 테스트 하는중 입니다.)
    print(test)

     

     

    결과

     

    ['코', '코앤엘파이', '앤', '엘', '파이', '한국어', '형태소', '분석기', '설치', '테스트', '중']

     

     

     

     

     

    ○ KoNLPy에서 제공하는 함수들

    5가지 클래스 모두 동일한 형태소 분석 방법을 제공하지만 각기의 성능이 조금씩 다릅니다. 여기서는 Okt()클래스 기준으로 설명하겠습니다.

     

    - morphs()
    : 텍스트를 형태소 단위로 나누는 함수. 파라미터의 norm은 문장을 정규화, stem은 각 단어에서 어간을 추출한다.

    - nouns()
    : 텍스트에서 명사만 추출하는 함수.

    - pharases()
    : 텍스트에서 어절을 추출하는 함수.

    - pos()
    : 각 품사를 태깅하는 함수. 주어진 텍스트를 형태소 단위로 나눈 후 나뉘어진 형태소를 해당하는 품사와 함께 리스트화 한다. 파라미터에는 norm, stem, join(나눠진 형태소와 품사를 형태소/품사 형태로 리스트화)가 있다.

     

     

    Okt클래스 객체로 생성

     

    from konlpy.tag import Okt
    
    okt = Okt()

     

     

    매서드 호출

     

    okt = Okt()
    text = '코앤엘파이 연습하는 중입니다. 열심히 해야지.'
    
    print(okt.morphs(text))
    print(okt.morphs(text, stem=True))
    
    print(okt.nouns(text))
    print(okt.phrases(text))
    
    print(okt.pos(text))
    print(okt.pos(text, join=True))

     

     

    결과

     

    ['코앤', '엘', '파이', '연습', '하는', '중', '입니다', '.', '열심히', '해야지', '.']
    ['코앤', '엘', '파이', '연습', '하다', '중', '이다', '.', '열심히', '하다', '.']
    ['코앤', '파이', '연습', '중']
    ['코앤', '파이', '파이 연습', '파이 연습하는 중', '연습']
    [('코앤', 'Noun'), ('엘', 'Josa'), ('파이', 'Noun'), ('연습', 'Noun'), ('하는', 'Verb'), ('중', 'Noun'), ('입니다', 'Adjective'), ('.', 'Punctuation'), ('열심히', 'Adverb'), ('해야지', 'Verb'), ('.', 'Punctuation')]
    ['코앤/Noun', '엘/Josa', '파이/Noun', '연습/Noun', '하는/Verb', '중/Noun', '입니다/Adjective', './Punctuation', '열심히/Adverb', '해야지/Verb', './Punctuation']

     

     


     

    자연어처리를 위한 파이썬 패키지 시리즈

    KoNLPy 데이터 전처리

    2020/01/28 - [SW개발/Framework Library] - [파이썬패키지] 자연어 처리를 위한 패키지1 - KoNLPy로 데이터 전처리

    NLTK 데이터 탐색

    2020/01/31 - [SW개발/Framework Library] - [파이썬패키지] 자연어 처리를 위한 패키지2 - NLTK로 데이터 탐색

    Gensim 토픽 모델링

    2020/02/17 - [SW개발/Framework Library] - [파이썬패키지] 자연어 처리를 위한 패키지3 - Gensim의 Word2Vec으로 토픽모델링

     


     

    댓글

Designed by Tistory.